Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 78 additions & 0 deletions charts/portkey-app/docs/secret-manager-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,33 @@ spec:
objectAlias: smtpPassword
- path: smtpFrom
objectAlias: smtpFrom
# Example for S3-compatible log storage. Adjust keys for your backend
# (mongo / s3_assume / azure). See the table at the bottom of this section.
- objectName: "arn:aws:secretsmanager:<REGION>:<ACCOUNT_ID>:secret:myapp/portkey-log-storage"
objectType: "secretsmanager"
jmesPath:
- path: logStore
objectAlias: logStore
- path: logStoreAccessKey
objectAlias: logStoreAccessKey
- path: logStoreSecretKey
objectAlias: logStoreSecretKey
- path: logStoreRegion
objectAlias: logStoreRegion
- path: logStoreGenerationsBucket
objectAlias: logStoreGenerationsBucket
- path: logStoreBasePath
objectAlias: logStoreBasePath
# Optional — only if bedrockAssumed.enabled = true.
- objectName: "arn:aws:secretsmanager:<REGION>:<ACCOUNT_ID>:secret:myapp/portkey-bedrock"
objectType: "secretsmanager"
jmesPath:
- path: bedrockAssumedAccessKey
objectAlias: bedrockAssumedAccessKey
- path: bedrockAssumedSecretKey
objectAlias: bedrockAssumedSecretKey
- path: bedrockAssumedRegion
objectAlias: bedrockAssumedRegion
secretObjects:
- secretName: portkey-mysql
type: Opaque
Expand Down Expand Up @@ -230,6 +257,31 @@ spec:
key: smtpPassword
- objectName: smtpFrom
key: smtpFrom
- secretName: portkey-log-storage
type: Opaque
data:
- objectName: logStore
key: logStore
- objectName: logStoreAccessKey
key: logStoreAccessKey
- objectName: logStoreSecretKey
key: logStoreSecretKey
- objectName: logStoreRegion
key: logStoreRegion
- objectName: logStoreGenerationsBucket
key: logStoreGenerationsBucket
- objectName: logStoreBasePath
key: logStoreBasePath
# Optional — only if bedrockAssumed.enabled = true.
- secretName: portkey-bedrock
type: Opaque
data:
- objectName: bedrockAssumedAccessKey
key: bedrockAssumedAccessKey
- objectName: bedrockAssumedSecretKey
key: bedrockAssumedSecretKey
- objectName: bedrockAssumedRegion
key: bedrockAssumedRegion
```

Apply:
Expand Down Expand Up @@ -305,8 +357,34 @@ config:
enabled: true
smtp:
enabled: true

logStorage:
# Re-use an existing Kubernetes Secret for log storage credentials.
existingSecretName: "portkey-log-storage"
s3Compat:
enabled: true

bedrockAssumed:
enabled: true
# Optional — re-use an existing Kubernetes Secret for bedrockAssumed.
existingSecretName: "portkey-bedrock"
```

### Expected keys per existing Secret

| Override | Secret must contain |
| ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `logStorage.existingSecretName` | The keys for whichever backend is enabled: |
| · `s3Compat.enabled: true` | `logStore`, `logStoreAccessKey`, `logStoreSecretKey`, `logStoreRegion`, `logStoreGenerationsBucket`, `logStoreBasePath` |
| · `s3Assume.enabled: true` | `logStore`, `logStoreAccessKey`, `logStoreSecretKey`, `logStoreRegion`, `logStoreGenerationsBucket`, `logStoreAwsRoleArn`, `logStoreExternalId` |
| · `mongo.enabled: true` | `logStore`, `mongoConnectionUrl`, `mongoDatabase`, `mongoGenerationsCollection`, `mongoHooksCollection` |
| · `azure.enabled: true` | `logStore`, `azureAuthMode`, `azureManagedClientId`, `azureStorageAccount`, `azureStorageKey`, `azureStorageContainer` |
| `bedrockAssumed.existingSecretName` | `bedrockAssumedAccessKey`, `bedrockAssumedSecretKey`, `bedrockAssumedRegion` |

The `logStore` key value encodes the backend type — one of `s3`, `s3_custom`,
`s3_assume`, `mongo`, or `azure`. The two overrides are independent: you can
use an existing Secret for one and let the chart manage the other.

## Option B: Mount-only (read from files; no Kubernetes Secrets sync)
Create a `SecretProviderClass` without `secretObjects` (files only):
```yaml
Expand Down
65 changes: 45 additions & 20 deletions charts/portkey-app/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,31 @@ the user or some other secret provisioning mechanism
{{- include "portkey.fullname" . }}-{{ .Values.gateway.name }}
{{- end }}

{{/*
Name of the Secret holding log storage credentials.
Overridable via logStorage.existingSecretName.
*/}}
{{- define "portkey.logStoreSecretsName" -}}
{{- if .Values.logStorage.existingSecretName }}
{{- .Values.logStorage.existingSecretName }}
{{- else }}
{{- include "portkey.gatewaySecretsName" . }}
{{- end }}
{{- end }}

{{/*
Name of the Secret holding bedrockAssumed credentials.
Overridable via bedrockAssumed.existingSecretName; otherwise the keys
live in the chart-managed gateway Secret.
*/}}
{{- define "portkey.bedrockSecretsName" -}}
{{- if .Values.bedrockAssumed.existingSecretName }}
{{- .Values.bedrockAssumed.existingSecretName }}
{{- else }}
{{- include "portkey.gatewaySecretsName" . }}
{{- end }}
{{- end }}

{{- define "portkey.gatewayClientAuth" -}}
{{- .Values.config.defaultGatewayClientAuth | default "client_auth-PRIVATE_SEVICE" | quote }}
{{- end }}
Expand Down Expand Up @@ -352,96 +377,96 @@ Template containing common environment variables that are used by several servic
- name: LOG_STORE
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.logStoreSecretsName" . }}
key: logStore
{{- if .Values.logStorage.mongo.enabled}}
- name: MONGO_DB_CONNECTION_URL
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.logStoreSecretsName" . }}
key: mongoConnectionUrl
- name: MONGO_DATABASE
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.logStoreSecretsName" . }}
key: mongoDatabase
- name: MONGO_COLLECTION_NAME
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.logStoreSecretsName" . }}
key: mongoGenerationsCollection
- name: MONGO_GENERATION_HOOKS_COLLECTION_NAME
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.logStoreSecretsName" . }}
key: mongoHooksCollection
{{- end }}
{{- if or .Values.logStorage.s3Compat.enabled }}
- name: LOG_STORE_BASEPATH
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.logStoreSecretsName" . }}
key: logStoreBasePath
{{- end }}
{{- if or .Values.logStorage.s3Compat.enabled .Values.logStorage.s3Assume.enabled }}
- name: LOG_STORE_ACCESS_KEY
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.logStoreSecretsName" . }}
key: logStoreAccessKey
- name: LOG_STORE_SECRET_KEY
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.logStoreSecretsName" . }}
key: logStoreSecretKey
- name: LOG_STORE_REGION
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.logStoreSecretsName" . }}
key: logStoreRegion
- name: LOG_STORE_GENERATIONS_BUCKET
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.logStoreSecretsName" . }}
key: logStoreGenerationsBucket
{{- end }}
{{- if .Values.logStorage.s3Assume.enabled }}
- name: LOG_STORE_AWS_ROLE_ARN
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.logStoreSecretsName" . }}
key: logStoreAwsRoleArn
- name: LOG_STORE_AWS_EXTERNAL_ID
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.logStoreSecretsName" . }}
key: logStoreExternalId
{{- end }}
{{- if .Values.logStorage.azure.enabled}}
- name: AZURE_AUTH_MODE
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.logStoreSecretsName" . }}
key: azureAuthMode
- name: AZURE_MANAGED_CLIENT_ID
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.logStoreSecretsName" . }}
key: azureManagedClientId
- name: AZURE_STORAGE_ACCOUNT
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.logStoreSecretsName" . }}
key: azureStorageAccount
- name: AZURE_STORAGE_KEY
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.logStoreSecretsName" . }}
key: azureStorageKey
- name: AZURE_STORAGE_CONTAINER
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.logStoreSecretsName" . }}
key: azureStorageContainer
{{- end }}
{{- end }}
Expand All @@ -454,17 +479,17 @@ Template containing common environment variables that are used by several servic
- name: AWS_ASSUME_ROLE_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.bedrockSecretsName" . }}
key: bedrockAssumedAccessKey
- name: AWS_ASSUME_ROLE_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.bedrockSecretsName" . }}
key: bedrockAssumedSecretKey
- name: AWS_ASSUME_ROLE_REGION
valueFrom:
secretKeyRef:
name: {{ include "portkey.gatewaySecretsName" . }}
name: {{ include "portkey.bedrockSecretsName" . }}
key: bedrockAssumedRegion
{{- end }}
- name: ALBUS_BASEPATH
Expand Down
8 changes: 6 additions & 2 deletions charts/portkey-app/templates/gateway/secrets.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
{{- if or (not .Values.logStorage.existingSecretName) (and .Values.bedrockAssumed.enabled (not .Values.bedrockAssumed.existingSecretName)) }}
apiVersion: v1
kind: Secret
metadata:
Expand All @@ -8,6 +9,7 @@ metadata:
{{- include "portkey.annotations" . | nindent 4 }}
type: Opaque
data:
{{- if not .Values.logStorage.existingSecretName }}
{{- if .Values.logStorage.s3Compat.enabled}}
Comment on lines 10 to 13
Comment on lines 11 to 13
logStore: {{ .Values.logStorage.logStore | b64enc | quote }}
logStoreAccessKey: {{ .Values.logStorage.s3Compat.LOG_STORE_ACCESS_KEY | b64enc | quote }}
Expand Down Expand Up @@ -40,8 +42,10 @@ data:
azureStorageKey: {{ .Values.logStorage.azure.AZURE_STORAGE_KEY | b64enc | quote }}
azureStorageContainer: {{ .Values.logStorage.azure.AZURE_STORAGE_CONTAINER | b64enc | quote }}
{{- end }}
{{- if .Values.bedrockAssumed.enabled}}
{{- end }}
{{- if and .Values.bedrockAssumed.enabled (not .Values.bedrockAssumed.existingSecretName) }}
bedrockAssumedAccessKey: {{ .Values.bedrockAssumed.AWS_ASSUME_ROLE_ACCESS_KEY_ID | b64enc | quote }}
bedrockAssumedSecretKey: {{ .Values.bedrockAssumed.AWS_ASSUME_ROLE_SECRET_ACCESS_KEY | b64enc | quote }}
bedrockAssumedRegion: {{ .Values.bedrockAssumed.AWS_ASSUME_ROLE_REGION | b64enc | quote }}
{{- end }}
{{- end }}
{{- end }}
6 changes: 6 additions & 0 deletions charts/portkey-app/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,9 @@ config:
# logStorage:
# -- S3 specific configuration
logStorage:
# -- Existing Kubernetes Secret holding log storage credentials.
# See docs/secret-manager-integration.md for the required keys per backend.
existingSecretName: ""
logStore: ""
s3Compat:
enabled: false
Expand Down Expand Up @@ -160,6 +163,9 @@ logStorage:

bedrockAssumed:
enabled: false
# -- Existing Kubernetes Secret holding bedrockAssumed credentials.
# See docs/secret-manager-integration.md for required keys.
existingSecretName: ""
AWS_ASSUME_ROLE_ACCESS_KEY_ID: ""
AWS_ASSUME_ROLE_SECRET_ACCESS_KEY: ""
AWS_ASSUME_ROLE_REGION: ""
Expand Down