René's URL Explorer Experiment


Title: feat: Add mTLS support to remote registry gRPC client by jacob-bush-shopify · Pull Request #6474 · feast-dev/feast · GitHub

Open Graph Title: feat: Add mTLS support to remote registry gRPC client by jacob-bush-shopify · Pull Request #6474 · feast-dev/feast

X Title: feat: Add mTLS support to remote registry gRPC client by jacob-bush-shopify · Pull Request #6474 · feast-dev/feast

Description: What this PR does / why we need it: Feast currently supports TLS, but does not support mTLS. For an example of why this is needed: our feature registry is hosted in GCP and sits behind an internal Application Load Balancer that requires mutual TLS for all connections. Additionally, since the feature registry is not exposed to the internet, we need to use an IAP tunnel to connect to the registry during development. The three new configuration options added in this PR solve both of these issues: client_cert, client_key, and authority. Which issue(s) this PR fixes: Checks I've made sure the tests are passing. My commits are signed off (git commit -s) My PR title follows conventional commits format Testing Strategy Unit tests Integration tests Manual tests Testing is not required for this change Manual 🎩 I've redacted some of this to remove specific names, and to keep logs shorter. # Creating ca.crt, tls.crt, tls.key files ❯ certloader [ ... ] # Creating the tunnel ❯ gcloud compute start-iap-tunnel 443 \ --local-host-port=localhost:8443 \ [ ... ] # feature-store.yml registry: registry_type: remote path: localhost:8443 authority: cert: ./ca.crt client_cert: ./tls.crt client_key: ./tls.key cache_ttl_seconds: 60 On feast 0.61.0 we get an auth failure as expected (the client certs aren't passed through) ❯ feast projects list [ ... ] grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: status = StatusCode.UNAVAILABLE details = "failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8443: Custom verification check failed with error: UNAUTHENTICATED: Hostname Verification Check failed." debug_error_string = "UNKNOWN:Error received from peer {grpc_message:"failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8443: Custom verification check failed with error: UNAUTHENTICATED: Hostname Verification Check failed.", grpc_status:14}" > On this branch, we we can connect via the iap tunnel 🎉 ❯ uvx '~/tmp/feast[gcp]' projects list NAME DESCRIPTION TAGS OWNER {} Note that setting the authority is necessary in this case because the IAP tunnel causes a host name mismatch otherwise. If we remove it we can see the behaviour of that failure: ❯ uvx '/Users/jacobbush/tmp/feast[gcp]' projects list [...] grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: status = StatusCode.UNAVAILABLE details = "failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8443: Custom verification check failed with error: UNAUTHENTICATED: Hostname Verification Check failed." debug_error_string = "UNKNOWN:Error received from peer {grpc_message:"failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:8443: Custom verification check failed with error: UNAUTHENTICATED: Hostname Verification Check failed.", grpc_status:14}" Misc

Open Graph Description: What this PR does / why we need it: Feast currently supports TLS, but does not support mTLS. For an example of why this is needed: our feature registry is hosted in GCP and sits behind an internal...

X Description: What this PR does / why we need it: Feast currently supports TLS, but does not support mTLS. For an example of why this is needed: our feature registry is hosted in GCP and sits behind an internal...

Opengraph URL: https://github.com/feast-dev/feast/pull/6474

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:574a72c6-bd94-4b9a-858b-181a0e387901
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idCC16:18EF1B:29B13BA:3901A8E:6A4EFAD3
html-safe-nonceba6b5a785f7b8cd8f96eafa436d86ee0c029a6b17e6f4966a73a76a1ccade50b
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDQzE2OjE4RUYxQjoyOUIxM0JBOjM5MDFBOEU6NkE0RUZBRDMiLCJ2aXNpdG9yX2lkIjoiNjU5NjgxOTIzMDExMjI4MzM0NyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac09c4709559a3cb67e7e7719b68e4d6976c6ace782d882d22f7285913b3254c8c
hovercard-subject-tagpull_request:3805900235
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/feast-dev/feast/pull/6474/files
twitter:imagehttps://avatars.githubusercontent.com/u/10622363?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/10622363?s=400&v=4
og:image:altWhat this PR does / why we need it: Feast currently supports TLS, but does not support mTLS. For an example of why this is needed: our feature registry is hosted in GCP and sits behind an internal...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noneb92d11c0aa4a77d54ef4af1078b6a15fb5a70a215b30c4ecf28889d5a8e656d9
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/feast-dev/feast git https://github.com/feast-dev/feast.git
octolytics-dimension-user_id57027613
octolytics-dimension-user_loginfeast-dev
octolytics-dimension-repository_id161133770
octolytics-dimension-repository_nwofeast-dev/feast
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id161133770
octolytics-dimension-repository_network_root_nwofeast-dev/feast
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release2b8f23afb982271f1b22258a94aede67a6b77760
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/feast-dev/feast/pull/6474/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Ffeast-dev%2Ffeast%2Fpull%2F6474%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Ffeast-dev%2Ffeast%2Fpull%2F6474%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=feast-dev%2Ffeast
Reloadhttps://github.com/feast-dev/feast/pull/6474/files
Reloadhttps://github.com/feast-dev/feast/pull/6474/files
Reloadhttps://github.com/feast-dev/feast/pull/6474/files
Please reload this pagehttps://github.com/feast-dev/feast/pull/6474/files
feast-dev https://github.com/feast-dev
feasthttps://github.com/feast-dev/feast
Notifications https://github.com/login?return_to=%2Ffeast-dev%2Ffeast
Fork 1.4k https://github.com/login?return_to=%2Ffeast-dev%2Ffeast
Star 7.1k https://github.com/login?return_to=%2Ffeast-dev%2Ffeast
Code https://github.com/feast-dev/feast
Issues 212 https://github.com/feast-dev/feast/issues
Pull requests 171 https://github.com/feast-dev/feast/pulls
Discussions https://github.com/feast-dev/feast/discussions
Actions https://github.com/feast-dev/feast/actions
Security and quality 1 https://github.com/feast-dev/feast/security
Insights https://github.com/feast-dev/feast/pulse
Code https://github.com/feast-dev/feast
Issues https://github.com/feast-dev/feast/issues
Pull requests https://github.com/feast-dev/feast/pulls
Discussions https://github.com/feast-dev/feast/discussions
Actions https://github.com/feast-dev/feast/actions
Security and quality https://github.com/feast-dev/feast/security
Insights https://github.com/feast-dev/feast/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Ffeast-dev%2Ffeast%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Ffeast-dev%2Ffeast%2Fissues%2Fnew%2Fchoose
ntkatholehttps://github.com/ntkathole
feast-dev:masterhttps://github.com/feast-dev/feast/tree/master
jacob-bush-shopify:feat/remote-registry-mtlshttps://github.com/jacob-bush-shopify/feast/tree/feat/remote-registry-mtls
Conversation 6 https://github.com/feast-dev/feast/pull/6474
Commits 2 https://github.com/feast-dev/feast/pull/6474/commits
Checks 28 https://github.com/feast-dev/feast/pull/6474/checks
Files changed https://github.com/feast-dev/feast/pull/6474/files
Please reload this pagehttps://github.com/feast-dev/feast/pull/6474/files
feat: Add mTLS support to remote registry gRPC client https://github.com/feast-dev/feast/pull/6474/files#top
Show all changes 2 commits https://github.com/feast-dev/feast/pull/6474/files
e2e0b91 feat: Add mTLS support to remote registry gRPC client jacob-bush-shopify Jun 4, 2026 https://github.com/feast-dev/feast/pull/6474/commits/e2e0b9177fd9e5e50a73d4bc3bc87a76c87202ea
b03e870 Merge branch 'master' into feat/remote-registry-mtls franciscojavierarceo Jun 9, 2026 https://github.com/feast-dev/feast/pull/6474/commits/b03e870b4b77652b8f400f6ce11297df842ae4ca
Clear filters https://github.com/feast-dev/feast/pull/6474/files
Please reload this pagehttps://github.com/feast-dev/feast/pull/6474/files
Please reload this pagehttps://github.com/feast-dev/feast/pull/6474/files
starting-feast-servers-tls-mode.md https://github.com/feast-dev/feast/pull/6474/files#diff-4539d375629a9da4ef61d6ba7c4e0bd3f4a6f1a2a9e7e671d6b8847ae5a43dc3
remote.md https://github.com/feast-dev/feast/pull/6474/files#diff-231abb7f027948733724340f2ca06aa8fb90aac4548b1d6a99564f58b5028a7b
remote.py https://github.com/feast-dev/feast/pull/6474/files#diff-e7e60b86539817c283efbf18668db889311a80d25e255ac1dbeb726f5c615b66
test_remote_registry_mtls.py https://github.com/feast-dev/feast/pull/6474/files#diff-01088d88cbd3e7535af98b69c0c8292693c848d7910b412ad4dc300d1135287b
ssl_certifcates_util.py https://github.com/feast-dev/feast/pull/6474/files#diff-dacef254e8695f83e3564c3bfb31e350d5d7bc89fe49ad5dae2b5626cacb2ec7
https://github.com/feast-dev/feast/blob/master/CODEOWNERS#L4
docs/how-to-guides/starting-feast-servers-tls-mode.mdhttps://github.com/feast-dev/feast/pull/6474/files#diff-4539d375629a9da4ef61d6ba7c4e0bd3f4a6f1a2a9e7e671d6b8847ae5a43dc3
View file https://github.com/jacob-bush-shopify/feast/blob/b03e870b4b77652b8f400f6ce11297df842ae4ca/docs/how-to-guides/starting-feast-servers-tls-mode.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/feast-dev/feast/pull/6474/{{ revealButtonHref }}
https://github.com/feast-dev/feast/pull/6474/files#diff-4539d375629a9da4ef61d6ba7c4e0bd3f4a6f1a2a9e7e671d6b8847ae5a43dc3
https://github.com/feast-dev/feast/pull/6474/files#diff-4539d375629a9da4ef61d6ba7c4e0bd3f4a6f1a2a9e7e671d6b8847ae5a43dc3
https://github.com/feast-dev/feast/blob/master/CODEOWNERS#L4
docs/reference/registries/remote.mdhttps://github.com/feast-dev/feast/pull/6474/files#diff-231abb7f027948733724340f2ca06aa8fb90aac4548b1d6a99564f58b5028a7b
View file https://github.com/jacob-bush-shopify/feast/blob/b03e870b4b77652b8f400f6ce11297df842ae4ca/docs/reference/registries/remote.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/feast-dev/feast/pull/6474/{{ revealButtonHref }}
https://github.com/feast-dev/feast/pull/6474/files#diff-231abb7f027948733724340f2ca06aa8fb90aac4548b1d6a99564f58b5028a7b
https://github.com/feast-dev/feast/pull/6474/files#diff-231abb7f027948733724340f2ca06aa8fb90aac4548b1d6a99564f58b5028a7b
https://github.com/feast-dev/feast/blob/master/CODEOWNERS#L10
sdk/python/feast/infra/registry/remote.pyhttps://github.com/feast-dev/feast/pull/6474/files#diff-e7e60b86539817c283efbf18668db889311a80d25e255ac1dbeb726f5c615b66
View file https://github.com/jacob-bush-shopify/feast/blob/b03e870b4b77652b8f400f6ce11297df842ae4ca/sdk/python/feast/infra/registry/remote.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/feast-dev/feast/pull/6474/{{ revealButtonHref }}
https://github.com/feast-dev/feast/pull/6474/files#diff-e7e60b86539817c283efbf18668db889311a80d25e255ac1dbeb726f5c615b66
Please reload this pagehttps://github.com/feast-dev/feast/pull/6474/files
Please reload this pagehttps://github.com/feast-dev/feast/pull/6474/files
https://github.com/feast-dev/feast/pull/6474/files#diff-e7e60b86539817c283efbf18668db889311a80d25e255ac1dbeb726f5c615b66
https://github.com/feast-dev/feast/pull/6474/files#diff-e7e60b86539817c283efbf18668db889311a80d25e255ac1dbeb726f5c615b66
Please reload this pagehttps://github.com/feast-dev/feast/pull/6474/files
Please reload this pagehttps://github.com/feast-dev/feast/pull/6474/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.