You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This chart was created by analyzing the Kustomize-based deployment in the tiger-osg-config repository, specifically the uw-osdf-cache instance at manifests/tiger/osdf-prod/uw-osdf-cache/. That deployment uses a three-layer Kustomize inheritance chain:
The chart deploys a single Pod with up to three containers:
Container
Purpose
Optional
pelican-cache
Main Pelican cache process
No
logrotate
Rotates Pelican log files
No
cvmfs-redirector
CVMFS port redirector sidecar
Yes (cvmfsRedirector.enabled)
Pelican Configuration Layering
Pelican supports loading configuration from multiple files via ConfigLocations. This chart generates two ConfigMaps that mirror how the Kustomize deployment layers configuration:
instance-config (mounted at /etc/pelican/config.d/50-instance.yaml) — Generated from your values: federation URL, hostname, cache tuning, OIDC, Lotman, logging levels, XRootD settings, and any extraPelicanConfig.
Pelican merges these in order, with later files taking precedence.
Storage
The chart manages several persistent volumes:
Volume
Purpose
Backing
Cache data
XRootD file cache
PVC or hostPath (cache.storageType)
Logging
Pelican log files
PVC (always)
Namespace key
Pelican issuer/signing key
PVC or existing Secret (namespaceKey.type)
Lotman data
Lot-based storage management
PVC (when lotman.enabled)
NVMe storage is strongly recommended for the cache data volume.
Configuration Reference
Required Values
Parameter
Description
serverHostname
External FQDN of the cache. Chart fails to render without this.
serverHostname: my-cache.example.comfederation:
discoveryUrl: "https://my-federation.example.com"image:
# Use the generic Pelican cache image instead of the OSDF-specific onerepository: hub.opensciencegrid.org/pelican_platform/cachecache:
storageClassName: local-nvme
Secrets Management
This chart does not create Secrets. All sensitive material must be provisioned separately before installing the chart. Common approaches:
Sealed Secrets — Used in the original tiger-osg-config deployment
Key named per namespaceKey.secretKey (default: issuer.pem)
Pelican issuer/signing key
oidc.existingSecret
client.id, client.secret
OIDC client credentials
webPasswordSecret
Key named per webPasswordSecretKey (default: password)
Web UI password file
tls.existingSecret
tls.crt, tls.key
TLS certificate (if not using cert-manager)
Upgrading
When configuration values change, the Deployment will automatically roll because pod annotations include checksums of the ConfigMaps. Image tag changes trigger a rollout as usual.
The Recreate deployment strategy is used (not RollingUpdate) because the cache holds a lock on its data directory and cannot run two instances simultaneously.
Development
# Lint the chart
helm lint . --set serverHostname=test.example.com
# Render templates locally
helm template my-cache . -f ci/uw-osdf-cache-values.yaml
# Diff against a live release
helm diff upgrade my-cache . -f my-values.yaml
Relationship to tiger-osg-config
This chart is a standalone replacement for the Kustomize + Flux deployment model used in opensciencegrid/tiger-osg-config. The ci/uw-osdf-cache-values.yaml file demonstrates a 1:1 mapping from the uw-osdf-cache Kustomize overlays to Helm values.
Kustomize layer
Helm equivalent
base/pelican-cache/pelican.yaml
configmap-default.yaml template (fixed)
base/pelican-cache/deployment.yaml
deployment.yaml template
base/osdf-pelican-cache/10-osdf.yaml
federation.discoveryUrl value
Instance 50-instance.yaml
Generated by _helpers.tpl → configmap-instance.yaml
Instance deployment-patch.yaml
Values: resources, nodeSelector, securityContext, extraEnv, etc.