[{"data":1,"prerenderedAt":1023},["ShallowReactive",2],{"docs-navigation":3,"-docs-installation-kubernetes-exposing":410,"-docs-installation-kubernetes-exposing-surround":1018},[4,19,166,319,333,397],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":18},"Overview","i-lucide-compass","\u002Fdocs\u002Foverview","docs\u002F1.overview",[10,14],{"title":11,"path":12,"stem":13},"Introduction","\u002Fdocs\u002Foverview\u002Fintroduction","docs\u002F1.overview\u002F1.introduction",{"title":15,"path":16,"stem":17},"JFrog compatibility","\u002Fdocs\u002Foverview\u002Fjfrog-compatibility","docs\u002F1.overview\u002F2.jfrog-compatibility",false,{"title":20,"icon":21,"path":22,"stem":23,"children":24,"page":18},"Installation","i-lucide-download","\u002Fdocs\u002Finstallation","docs\u002F2.installation",[25,29,43,68,108,112,116,162],{"title":26,"path":27,"stem":28},"Choosing a method","\u002Fdocs\u002Finstallation\u002Foverview","docs\u002F2.installation\u002F1.overview",{"title":30,"icon":31,"path":32,"stem":33,"children":34,"page":18},"Single binary","i-lucide-terminal","\u002Fdocs\u002Finstallation\u002Fsingle-binary","docs\u002F2.installation\u002F2.single-binary",[35,39],{"title":36,"path":37,"stem":38},"Quick start","\u002Fdocs\u002Finstallation\u002Fsingle-binary\u002Fquick-start","docs\u002F2.installation\u002F2.single-binary\u002F1.quick-start",{"title":40,"path":41,"stem":42},"Limits and backups","\u002Fdocs\u002Finstallation\u002Fsingle-binary\u002Foperations","docs\u002F2.installation\u002F2.single-binary\u002F2.operations",{"title":44,"icon":45,"path":46,"stem":47,"children":48,"page":18},"Docker","i-simple-icons-docker","\u002Fdocs\u002Finstallation\u002Fdocker","docs\u002F2.installation\u002F3.docker",[49,52,56,60,64],{"title":36,"path":50,"stem":51},"\u002Fdocs\u002Finstallation\u002Fdocker\u002Fquick-start","docs\u002F2.installation\u002F3.docker\u002F1.quick-start",{"title":53,"path":54,"stem":55},"PostgreSQL and S3","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fpostgresql-and-s3","docs\u002F2.installation\u002F3.docker\u002F2.postgresql-and-s3",{"title":57,"path":58,"stem":59},"Docker Compose","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose","docs\u002F2.installation\u002F3.docker\u002F3.compose",{"title":61,"path":62,"stem":63},"Compose settings","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose-settings","docs\u002F2.installation\u002F3.docker\u002F4.compose-settings",{"title":65,"path":66,"stem":67},"Compose with another object store","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose-other-object-storage","docs\u002F2.installation\u002F3.docker\u002F5.compose-other-object-storage",{"title":69,"icon":70,"path":71,"stem":72,"children":73,"page":18},"Kubernetes","i-simple-icons-kubernetes","\u002Fdocs\u002Finstallation\u002Fkubernetes","docs\u002F2.installation\u002F4.kubernetes",[74,77,80,84,88,92,96,100,104],{"title":5,"path":75,"stem":76},"\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Foverview","docs\u002F2.installation\u002F4.kubernetes\u002F1.overview",{"title":36,"path":78,"stem":79},"\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fquick-start","docs\u002F2.installation\u002F4.kubernetes\u002F2.quick-start",{"title":81,"path":82,"stem":83},"External PostgreSQL","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fexternal-postgresql","docs\u002F2.installation\u002F4.kubernetes\u002F3.external-postgresql",{"title":85,"path":86,"stem":87},"External object storage","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fexternal-object-storage","docs\u002F2.installation\u002F4.kubernetes\u002F4.external-object-storage",{"title":89,"path":90,"stem":91},"Exposing Relic","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fexposing","docs\u002F2.installation\u002F4.kubernetes\u002F5.exposing",{"title":93,"path":94,"stem":95},"Values","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fvalues","docs\u002F2.installation\u002F4.kubernetes\u002F6.values",{"title":97,"path":98,"stem":99},"Upgrades and removal","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fupgrades","docs\u002F2.installation\u002F4.kubernetes\u002F7.upgrades",{"title":101,"path":102,"stem":103},"Hardening and probes","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fhardening","docs\u002F2.installation\u002F4.kubernetes\u002F8.hardening",{"title":105,"path":106,"stem":107},"Monitoring","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fmonitoring","docs\u002F2.installation\u002F4.kubernetes\u002F9.monitoring",{"title":109,"path":110,"stem":111},"Cloudflare","\u002Fdocs\u002Finstallation\u002Fcloudflare","docs\u002F2.installation\u002F5.cloudflare",{"title":113,"path":114,"stem":115},"Configuration reference","\u002Fdocs\u002Finstallation\u002Fconfiguration","docs\u002F2.installation\u002F6.configuration",{"title":117,"icon":118,"path":119,"stem":120,"children":121,"page":18},"Storage","i-lucide-hard-drive","\u002Fdocs\u002Finstallation\u002Fstorage","docs\u002F2.installation\u002F7.storage",[122,126,130,134,138,142,146,150,154,158],{"title":123,"path":124,"stem":125},"Storage overview","\u002Fdocs\u002Finstallation\u002Fstorage\u002Foverview","docs\u002F2.installation\u002F7.storage\u002F1.overview",{"title":127,"path":128,"stem":129},"Azure Blob Storage","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fazure-blob-storage","docs\u002F2.installation\u002F7.storage\u002F10.azure-blob-storage",{"title":131,"path":132,"stem":133},"SeaweedFS","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fseaweedfs","docs\u002F2.installation\u002F7.storage\u002F2.seaweedfs",{"title":135,"path":136,"stem":137},"Amazon S3","\u002Fdocs\u002Finstallation\u002Fstorage\u002Famazon-s3","docs\u002F2.installation\u002F7.storage\u002F3.amazon-s3",{"title":139,"path":140,"stem":141},"Cloudflare R2","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fcloudflare-r2","docs\u002F2.installation\u002F7.storage\u002F4.cloudflare-r2",{"title":143,"path":144,"stem":145},"MinIO","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fminio","docs\u002F2.installation\u002F7.storage\u002F5.minio",{"title":147,"path":148,"stem":149},"Google Cloud Storage","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fgoogle-cloud-storage","docs\u002F2.installation\u002F7.storage\u002F6.google-cloud-storage",{"title":151,"path":152,"stem":153},"Backblaze B2","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fbackblaze-b2","docs\u002F2.installation\u002F7.storage\u002F7.backblaze-b2",{"title":155,"path":156,"stem":157},"Other S3-compatible services","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fother","docs\u002F2.installation\u002F7.storage\u002F8.other",{"title":159,"path":160,"stem":161},"Filesystem","\u002Fdocs\u002Finstallation\u002Fstorage\u002Ffilesystem","docs\u002F2.installation\u002F7.storage\u002F9.filesystem",{"title":163,"path":164,"stem":165},"Development","\u002Fdocs\u002Finstallation\u002Fdevelopment","docs\u002F2.installation\u002F8.development",{"title":167,"icon":168,"path":169,"stem":170,"children":171,"page":18},"Guides","i-lucide-book-open","\u002Fdocs\u002Fguides","docs\u002F3.guides",[172,176,180,254,296,300,303,307,311,315],{"title":173,"path":174,"stem":175},"Repositories","\u002Fdocs\u002Fguides\u002Frepositories","docs\u002F3.guides\u002F1.repositories",{"title":177,"path":178,"stem":179},"Replication","\u002Fdocs\u002Fguides\u002Freplication","docs\u002F3.guides\u002F10.replication",{"title":181,"icon":182,"path":183,"stem":184,"children":185,"page":18},"Package types","i-lucide-package","\u002Fdocs\u002Fguides\u002Fpackage-types","docs\u002F3.guides\u002F2.package-types",[186,190,194,198,202,206,210,214,218,222,226,230,234,238,242,246,250],{"title":187,"path":188,"stem":189},"npm, yarn and pnpm","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fnpm","docs\u002F3.guides\u002F2.package-types\u002F01.npm",{"title":191,"path":192,"stem":193},"Maven and Gradle","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fmaven-gradle","docs\u002F3.guides\u002F2.package-types\u002F02.maven-gradle",{"title":195,"path":196,"stem":197},"Docker and OCI","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fdocker","docs\u002F3.guides\u002F2.package-types\u002F03.docker",{"title":199,"path":200,"stem":201},"Go","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fgo","docs\u002F3.guides\u002F2.package-types\u002F04.go",{"title":203,"path":204,"stem":205},"PyPI","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fpypi","docs\u002F3.guides\u002F2.package-types\u002F05.pypi",{"title":207,"path":208,"stem":209},"Helm","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fhelm","docs\u002F3.guides\u002F2.package-types\u002F06.helm",{"title":211,"path":212,"stem":213},"NuGet","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fnuget","docs\u002F3.guides\u002F2.package-types\u002F07.nuget",{"title":215,"path":216,"stem":217},"RubyGems","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Frubygems","docs\u002F3.guides\u002F2.package-types\u002F08.rubygems",{"title":219,"path":220,"stem":221},"Cargo","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fcargo","docs\u002F3.guides\u002F2.package-types\u002F09.cargo",{"title":223,"path":224,"stem":225},"Conan","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fconan","docs\u002F3.guides\u002F2.package-types\u002F10.conan",{"title":227,"path":228,"stem":229},"Terraform and OpenTofu","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fterraform","docs\u002F3.guides\u002F2.package-types\u002F11.terraform",{"title":231,"path":232,"stem":233},"Hugging Face","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fhugging-face","docs\u002F3.guides\u002F2.package-types\u002F12.hugging-face",{"title":235,"path":236,"stem":237},"Generic files","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fgeneric","docs\u002F3.guides\u002F2.package-types\u002F13.generic",{"title":239,"path":240,"stem":241},"RPM","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Frpm","docs\u002F3.guides\u002F2.package-types\u002F14.rpm",{"title":243,"path":244,"stem":245},"Debian","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fdebian","docs\u002F3.guides\u002F2.package-types\u002F15.debian",{"title":247,"path":248,"stem":249},"Alpine","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Falpine","docs\u002F3.guides\u002F2.package-types\u002F16.alpine",{"title":251,"path":252,"stem":253},"Nix","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fnix","docs\u002F3.guides\u002F2.package-types\u002F17.nix",{"title":255,"icon":256,"path":257,"stem":258,"children":259,"page":18},"Security","i-lucide-shield","\u002Fdocs\u002Fguides\u002Fsecurity","docs\u002F3.guides\u002F3.security",[260,264,268,272,276,280,284,288,292],{"title":261,"path":262,"stem":263},"Permissions","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fpermissions","docs\u002F3.guides\u002F3.security\u002F1.permissions",{"title":265,"path":266,"stem":267},"LDAP","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fldap","docs\u002F3.guides\u002F3.security\u002F2.ldap",{"title":269,"path":270,"stem":271},"Access tokens","\u002Fdocs\u002Fguides\u002Fsecurity\u002Ftokens","docs\u002F3.guides\u002F3.security\u002F3.tokens",{"title":273,"path":274,"stem":275},"Relic Scan","\u002Fdocs\u002Fguides\u002Fsecurity\u002Frelic-scan","docs\u002F3.guides\u002F3.security\u002F4.relic-scan",{"title":277,"path":278,"stem":279},"CVE intelligence","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fcve-intelligence","docs\u002F3.guides\u002F3.security\u002F5.cve-intelligence",{"title":281,"path":282,"stem":283},"Audit log","\u002Fdocs\u002Fguides\u002Fsecurity\u002Faudit-log","docs\u002F3.guides\u002F3.security\u002F6.audit-log",{"title":285,"path":286,"stem":287},"Single sign-on","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fsingle-sign-on","docs\u002F3.guides\u002F3.security\u002F7.single-sign-on",{"title":289,"path":290,"stem":291},"SCIM provisioning","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fscim","docs\u002F3.guides\u002F3.security\u002F8.scim",{"title":293,"path":294,"stem":295},"Workload identities","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fworkload-identities","docs\u002F3.guides\u002F3.security\u002F9.workload-identities",{"title":297,"path":298,"stem":299},"Operations","\u002Fdocs\u002Fguides\u002Foperations","docs\u002F3.guides\u002F4.operations",{"title":105,"path":301,"stem":302},"\u002Fdocs\u002Fguides\u002Fmonitoring","docs\u002F3.guides\u002F5.monitoring",{"title":304,"path":305,"stem":306},"Metrics reference","\u002Fdocs\u002Fguides\u002Fmetrics-reference","docs\u002F3.guides\u002F6.metrics-reference",{"title":308,"path":309,"stem":310},"Webhooks","\u002Fdocs\u002Fguides\u002Fwebhooks","docs\u002F3.guides\u002F7.webhooks",{"title":312,"path":313,"stem":314},"Projects","\u002Fdocs\u002Fguides\u002Fprojects","docs\u002F3.guides\u002F8.projects",{"title":316,"path":317,"stem":318},"AI agents","\u002Fdocs\u002Fguides\u002Fai-agents","docs\u002F3.guides\u002F9.ai-agents",{"title":320,"icon":321,"path":322,"stem":323,"children":324,"page":18},"API","i-lucide-braces","\u002Fdocs\u002Fapi","docs\u002F4.api",[325,329],{"title":326,"path":327,"stem":328},"API usage","\u002Fdocs\u002Fapi\u002Foverview","docs\u002F4.api\u002F1.overview",{"title":330,"path":331,"stem":332},"Relic API","\u002Fdocs\u002Fapi\u002Frelic-api","docs\u002F4.api\u002F2.relic-api",{"title":334,"icon":31,"path":335,"stem":336,"children":337,"page":18},"CLI","\u002Fdocs\u002Fcli","docs\u002F5.cli",[338,341,345,349,353,357,361,365,369,373,377,381,385,389,393],{"title":5,"path":339,"stem":340},"\u002Fdocs\u002Fcli\u002Foverview","docs\u002F5.cli\u002F01.overview",{"title":342,"path":343,"stem":344},"Sign in and contexts","\u002Fdocs\u002Fcli\u002Fsign-in","docs\u002F5.cli\u002F02.sign-in",{"title":346,"path":347,"stem":348},"Resources","\u002Fdocs\u002Fcli\u002Fresources","docs\u002F5.cli\u002F03.resources",{"title":350,"path":351,"stem":352},"apply, diff and delete","\u002Fdocs\u002Fcli\u002Fapply","docs\u002F5.cli\u002F04.apply",{"title":354,"path":355,"stem":356},"Artifacts","\u002Fdocs\u002Fcli\u002Ffiles","docs\u002F5.cli\u002F05.files",{"title":358,"path":359,"stem":360},"Server, API and tokens","\u002Fdocs\u002Fcli\u002Fplatform","docs\u002F5.cli\u002F06.platform",{"title":362,"path":363,"stem":364},"Builds and images","\u002Fdocs\u002Fcli\u002Fbuilds","docs\u002F5.cli\u002F07.builds",{"title":366,"path":367,"stem":368},"Scanning and auditing","\u002Fdocs\u002Fcli\u002Fsecurity","docs\u002F5.cli\u002F08.security",{"title":370,"path":371,"stem":372},"Releases","\u002Fdocs\u002Fcli\u002Freleases","docs\u002F5.cli\u002F09.releases",{"title":374,"path":375,"stem":376},"Evidence","\u002Fdocs\u002Fcli\u002Fevidence","docs\u002F5.cli\u002F10.evidence",{"title":378,"path":379,"stem":380},"Package managers","\u002Fdocs\u002Fcli\u002Fpackage-managers","docs\u002F5.cli\u002F11.package-managers",{"title":382,"path":383,"stem":384},"Scan reports and VEX","\u002Fdocs\u002Fcli\u002Freports-and-vex","docs\u002F5.cli\u002F12.reports-and-vex",{"title":386,"path":387,"stem":388},"Migrating from Artifactory","\u002Fdocs\u002Fcli\u002Fimport","docs\u002F5.cli\u002F13.import",{"title":390,"path":391,"stem":392},"Database","\u002Fdocs\u002Fcli\u002Fdatabase","docs\u002F5.cli\u002F14.database",{"title":394,"path":395,"stem":396},"Machine setup","\u002Fdocs\u002Fcli\u002Fsetup","docs\u002F5.cli\u002F15.setup",{"title":398,"icon":399,"path":400,"stem":401,"children":402,"page":18},"SDK","i-lucide-boxes","\u002Fdocs\u002Fsdk","docs\u002F6.sdk",[403,406],{"title":5,"path":404,"stem":405},"\u002Fdocs\u002Fsdk\u002Foverview","docs\u002F6.sdk\u002F1.overview",{"title":407,"path":408,"stem":409},"Relic API clients","\u002Fdocs\u002Fsdk\u002Frelic-api-clients","docs\u002F6.sdk\u002F2.relic-api-clients",{"id":411,"title":89,"body":412,"description":1011,"extension":1012,"links":1013,"meta":1014,"navigation":1015,"path":90,"seo":1016,"stem":91,"__hash__":1017},"docs\u002Fdocs\u002F2.installation\u002F4.kubernetes\u002F5.exposing.md",{"type":413,"value":414,"toc":1004},"minimark",[415,428,433,442,457,652,658,681,684,705,712,716,826,829,843,854,858,890,904,908,928,939,943,949,994,1000],[416,417,418,419,423,424,427],"p",{},"The ",[420,421,422],"code",{},"relic"," Service serves HTTPS on port 443, or HTTP on port 80 with\n",[420,425,426],{},"tls.enabled: false",". Clients need one host name that serves every path.",[429,430,432],"h2",{"id":431},"the-servers-certificate","The server's certificate",[416,434,435,436,441],{},"By default each server pod generates its own certificate authority\n(",[437,438,440],"a",{"href":439},"\u002Fdocs\u002Finstallation\u002Fconfiguration#tls","TLS","). A single node keeps it on the\ndata volume. With several replicas each pod has its own, and it changes on\nrestart.",[416,443,444,445,448,449,452,453,456],{},"For clients that verify the server, set ",[420,446,447],{},"tls.existingSecret"," to a\n",[420,450,451],{},"kubernetes.io\u002Ftls"," Secret. The chart mounts it at ",[420,454,455],{},"\u002Fetc\u002Frelic\u002Ftls",". Relic\nreloads a renewed certificate without a restart, so cert-manager works well.\nThis Certificate covers the Service's names and the public host name:",[458,459,464],"pre",{"className":460,"code":461,"language":462,"meta":463,"style":463},"language-yaml shiki shiki-themes material-theme-lighter github-light-default github-dark-default","apiVersion: cert-manager.io\u002Fv1\nkind: Certificate\nmetadata:\n  name: relic-server-tls\n  namespace: relic\nspec:\n  secretName: relic-server-tls\n  privateKey:\n    algorithm: ECDSA\n    size: 384\n  dnsNames:\n    - relic\n    - relic.relic\n    - relic.relic.svc\n    - relic.relic.svc.cluster.local\n    - relic.example.com\n  issuerRef:\n    kind: ClusterIssuer\n    name: internal-ca\n","yaml","",[420,465,466,483,494,503,514,525,533,543,551,562,574,582,590,598,606,614,622,630,641],{"__ignoreMap":463},[467,468,471,475,479],"span",{"class":469,"line":470},"line",1,[467,472,474],{"class":473},"smKOL","apiVersion",[467,476,478],{"class":477},"sWneD",":",[467,480,482],{"class":481},"sasMN"," cert-manager.io\u002Fv1\n",[467,484,486,489,491],{"class":469,"line":485},2,[467,487,488],{"class":473},"kind",[467,490,478],{"class":477},[467,492,493],{"class":481}," Certificate\n",[467,495,497,500],{"class":469,"line":496},3,[467,498,499],{"class":473},"metadata",[467,501,502],{"class":477},":\n",[467,504,506,509,511],{"class":469,"line":505},4,[467,507,508],{"class":473},"  name",[467,510,478],{"class":477},[467,512,513],{"class":481}," relic-server-tls\n",[467,515,517,520,522],{"class":469,"line":516},5,[467,518,519],{"class":473},"  namespace",[467,521,478],{"class":477},[467,523,524],{"class":481}," relic\n",[467,526,528,531],{"class":469,"line":527},6,[467,529,530],{"class":473},"spec",[467,532,502],{"class":477},[467,534,536,539,541],{"class":469,"line":535},7,[467,537,538],{"class":473},"  secretName",[467,540,478],{"class":477},[467,542,513],{"class":481},[467,544,546,549],{"class":469,"line":545},8,[467,547,548],{"class":473},"  privateKey",[467,550,502],{"class":477},[467,552,554,557,559],{"class":469,"line":553},9,[467,555,556],{"class":473},"    algorithm",[467,558,478],{"class":477},[467,560,561],{"class":481}," ECDSA\n",[467,563,565,568,570],{"class":469,"line":564},10,[467,566,567],{"class":473},"    size",[467,569,478],{"class":477},[467,571,573],{"class":572},"sIO_5"," 384\n",[467,575,577,580],{"class":469,"line":576},11,[467,578,579],{"class":473},"  dnsNames",[467,581,502],{"class":477},[467,583,585,588],{"class":469,"line":584},12,[467,586,587],{"class":477},"    -",[467,589,524],{"class":481},[467,591,593,595],{"class":469,"line":592},13,[467,594,587],{"class":477},[467,596,597],{"class":481}," relic.relic\n",[467,599,601,603],{"class":469,"line":600},14,[467,602,587],{"class":477},[467,604,605],{"class":481}," relic.relic.svc\n",[467,607,609,611],{"class":469,"line":608},15,[467,610,587],{"class":477},[467,612,613],{"class":481}," relic.relic.svc.cluster.local\n",[467,615,617,619],{"class":469,"line":616},16,[467,618,587],{"class":477},[467,620,621],{"class":481}," relic.example.com\n",[467,623,625,628],{"class":469,"line":624},17,[467,626,627],{"class":473},"  issuerRef",[467,629,502],{"class":477},[467,631,633,636,638],{"class":469,"line":632},18,[467,634,635],{"class":473},"    kind",[467,637,478],{"class":477},[467,639,640],{"class":481}," ClusterIssuer\n",[467,642,644,647,649],{"class":469,"line":643},19,[467,645,646],{"class":473},"    name",[467,648,478],{"class":477},[467,650,651],{"class":481}," internal-ca\n",[416,653,654,655,478],{},"Create it from ",[420,656,657],{},"certificate.yaml",[458,659,663],{"className":660,"code":661,"language":662,"meta":463,"style":463},"language-bash shiki shiki-themes material-theme-lighter github-light-default github-dark-default","kubectl apply -f certificate.yaml\n","bash",[420,664,665],{"__ignoreMap":463},[467,666,667,671,674,678],{"class":469,"line":470},[467,668,670],{"class":669},"seIyd","kubectl",[467,672,673],{"class":481}," apply",[467,675,677],{"class":676},"smky3"," -f",[467,679,680],{"class":481}," certificate.yaml\n",[416,682,683],{},"Then point the chart at the Secret:",[458,685,687],{"className":460,"code":686,"language":462,"meta":463,"style":463},"tls:\n  existingSecret: relic-server-tls\n",[420,688,689,696],{"__ignoreMap":463},[467,690,691,694],{"class":469,"line":470},[467,692,693],{"class":473},"tls",[467,695,502],{"class":477},[467,697,698,701,703],{"class":469,"line":485},[467,699,700],{"class":473},"  existingSecret",[467,702,478],{"class":477},[467,704,513],{"class":481},[416,706,707,708,711],{},"The generated certificate holds the Service's names and the ingress hosts.\n",[420,709,710],{},"tls.hostnames"," adds more.",[429,713,715],{"id":714},"ingress-with-tls","Ingress with TLS",[458,717,719],{"className":460,"code":718,"language":462,"meta":463,"style":463},"ingress:\n  enabled: true\n  className: nginx\n  annotations:\n    nginx.ingress.kubernetes.io\u002Fproxy-body-size: \"0\"\n  hosts:\n    - host: relic.example.com\n  tls:\n    - hosts: [relic.example.com]\n      secretName: relic-tls\n",[420,720,721,728,739,749,756,773,780,791,798,816],{"__ignoreMap":463},[467,722,723,726],{"class":469,"line":470},[467,724,725],{"class":473},"ingress",[467,727,502],{"class":477},[467,729,730,733,735],{"class":469,"line":485},[467,731,732],{"class":473},"  enabled",[467,734,478],{"class":477},[467,736,738],{"class":737},"sH4kE"," true\n",[467,740,741,744,746],{"class":469,"line":496},[467,742,743],{"class":473},"  className",[467,745,478],{"class":477},[467,747,748],{"class":481}," nginx\n",[467,750,751,754],{"class":469,"line":505},[467,752,753],{"class":473},"  annotations",[467,755,502],{"class":477},[467,757,758,761,763,767,770],{"class":469,"line":516},[467,759,760],{"class":473},"    nginx.ingress.kubernetes.io\u002Fproxy-body-size",[467,762,478],{"class":477},[467,764,766],{"class":765},"sX5mu"," \"",[467,768,769],{"class":481},"0",[467,771,772],{"class":765},"\"\n",[467,774,775,778],{"class":469,"line":527},[467,776,777],{"class":473},"  hosts",[467,779,502],{"class":477},[467,781,782,784,787,789],{"class":469,"line":535},[467,783,587],{"class":477},[467,785,786],{"class":473}," host",[467,788,478],{"class":477},[467,790,621],{"class":481},[467,792,793,796],{"class":469,"line":545},[467,794,795],{"class":473},"  tls",[467,797,502],{"class":477},[467,799,800,802,805,807,810,813],{"class":469,"line":553},[467,801,587],{"class":477},[467,803,804],{"class":473}," hosts",[467,806,478],{"class":477},[467,808,809],{"class":477}," [",[467,811,812],{"class":481},"relic.example.com",[467,814,815],{"class":477},"]\n",[467,817,818,821,823],{"class":469,"line":564},[467,819,820],{"class":473},"      secretName",[467,822,478],{"class":477},[467,824,825],{"class":481}," relic-tls\n",[416,827,828],{},"Remove or raise the controller's body size limit, or large uploads fail.",[416,830,831,832,835,836,839,840,842],{},"While ",[420,833,834],{},"tls.enabled"," is on, the chart adds\n",[420,837,838],{},"nginx.ingress.kubernetes.io\u002Fbackend-protocol: HTTPS"," unless you set it. Other\ncontrollers need an HTTPS backend configured their own way, or\n",[420,841,426],{},".",[416,844,845,846,849,850,853],{},"Relic trusts ",[420,847,848],{},"X-Forwarded-*"," headers only from ",[420,851,852],{},"trustedProxies",". Narrow it to\nthe ingress controller's pod CIDR.",[429,855,857],{"id":856},"nodeport","NodePort",[458,859,861],{"className":460,"code":860,"language":462,"meta":463,"style":463},"service:\n  type: NodePort\n  nodePort: 30880\n",[420,862,863,870,880],{"__ignoreMap":463},[467,864,865,868],{"class":469,"line":470},[467,866,867],{"class":473},"service",[467,869,502],{"class":477},[467,871,872,875,877],{"class":469,"line":485},[467,873,874],{"class":473},"  type",[467,876,478],{"class":477},[467,878,879],{"class":481}," NodePort\n",[467,881,882,885,887],{"class":469,"line":496},[467,883,884],{"class":473},"  nodePort",[467,886,478],{"class":477},[467,888,889],{"class":572}," 30880\n",[416,891,892,893,896,897,900,901,903],{},"Relic is then at ",[420,894,895],{},"https:\u002F\u002F\u003Cnode-ip>:30880",". Without ",[420,898,899],{},"nodePort",", Kubernetes\npicks the port. Add the node's address to ",[420,902,710],{}," or to your\ncertificate.",[429,905,907],{"id":906},"loadbalancer","LoadBalancer",[458,909,911],{"className":460,"code":910,"language":462,"meta":463,"style":463},"service:\n  type: LoadBalancer\n",[420,912,913,919],{"__ignoreMap":463},[467,914,915,917],{"class":469,"line":470},[467,916,867],{"class":473},[467,918,502],{"class":477},[467,920,921,923,925],{"class":469,"line":485},[467,922,874],{"class":473},[467,924,478],{"class":477},[467,926,927],{"class":481}," LoadBalancer\n",[416,929,930,931,933,934,936,937,842],{},"Give it a trusted certificate with ",[420,932,447],{},". To terminate TLS in a\nproxy instead, set ",[420,935,426],{}," and add the proxy to ",[420,938,852],{},[429,940,942],{"id":941},"network-policy","Network policy",[416,944,945,948],{},[420,946,947],{},"networkPolicy.allowServerAccessFrom"," lists the peers that can reach the\nserver; empty admits everyone. Include the ingress controller's namespace:",[458,950,952],{"className":460,"code":951,"language":462,"meta":463,"style":463},"networkPolicy:\n  allowServerAccessFrom:\n    - namespaceSelector:\n        matchLabels:\n          kubernetes.io\u002Fmetadata.name: ingress-nginx\n",[420,953,954,961,968,977,984],{"__ignoreMap":463},[467,955,956,959],{"class":469,"line":470},[467,957,958],{"class":473},"networkPolicy",[467,960,502],{"class":477},[467,962,963,966],{"class":469,"line":485},[467,964,965],{"class":473},"  allowServerAccessFrom",[467,967,502],{"class":477},[467,969,970,972,975],{"class":469,"line":496},[467,971,587],{"class":477},[467,973,974],{"class":473}," namespaceSelector",[467,976,502],{"class":477},[467,978,979,982],{"class":469,"line":505},[467,980,981],{"class":473},"        matchLabels",[467,983,502],{"class":477},[467,985,986,989,991],{"class":469,"line":516},[467,987,988],{"class":473},"          kubernetes.io\u002Fmetadata.name",[467,990,478],{"class":477},[467,992,993],{"class":481}," ingress-nginx\n",[416,995,996,997,842],{},"See ",[437,998,999],{"href":102},"Hardening",[1001,1002,1003],"style",{},"html pre.shiki code .smKOL, html code.shiki .smKOL{--shiki-light:#E53935;--shiki-default:#116329;--shiki-dark:#7EE787}html pre.shiki code .sWneD, html code.shiki .sWneD{--shiki-light:#39ADB5;--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .sasMN, html code.shiki .sasMN{--shiki-light:#91B859;--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .sIO_5, html code.shiki .sIO_5{--shiki-light:#F76D47;--shiki-default:#0550AE;--shiki-dark:#79C0FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .seIyd, html code.shiki .seIyd{--shiki-light:#E2931D;--shiki-default:#953800;--shiki-dark:#FFA657}html pre.shiki code .smky3, html code.shiki .smky3{--shiki-light:#91B859;--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .sH4kE, html code.shiki .sH4kE{--shiki-light:#FF5370;--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .sX5mu, html code.shiki .sX5mu{--shiki-light:#39ADB5;--shiki-default:#0A3069;--shiki-dark:#A5D6FF}",{"title":463,"searchDepth":485,"depth":485,"links":1005},[1006,1007,1008,1009,1010],{"id":431,"depth":485,"text":432},{"id":714,"depth":485,"text":715},{"id":856,"depth":485,"text":857},{"id":906,"depth":485,"text":907},{"id":941,"depth":485,"text":942},"Reach Relic from outside the cluster with an ingress, a NodePort or a LoadBalancer.","md",null,{},true,{"title":89,"description":1011},"22lgdSo8P5mYlAV_l681rB7mYSnCyxOKjSC10Z_WQZk",[1019,1021],{"title":85,"path":86,"stem":87,"description":1020,"children":-1},"Run Relic from the chart against your own object store, such as Amazon S3, R2, MinIO or GCS.",{"title":93,"path":94,"stem":95,"description":1022,"children":-1},"Every value of the Helm chart with its default, and the keys of its credentials Secret.",1793857347034]