mirror of
https://github.com/run-llama/llama_cloud_services.git
synced 2026-07-01 21:44:37 -04:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a457a9c775 | |||
| b65f7ecb9b | |||
| 5ea758b853 | |||
| 208b6f2fa5 | |||
| e1b9143f79 | |||
| 232c55bd6a | |||
| ab6f2f8da5 | |||
| 66c2639ec8 | |||
| da1916c69f | |||
| 345e272573 |
@@ -1,8 +1,8 @@
|
||||
name: Hourly Extract E2E Tests
|
||||
name: Extract E2E Tests (every 4 hours)
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "18 * * * *"
|
||||
- cron: "0 */4 * * *"
|
||||
workflow_dispatch:
|
||||
# Allows manual triggering
|
||||
inputs:
|
||||
@@ -29,7 +29,7 @@ env:
|
||||
|
||||
jobs:
|
||||
extract-e2e:
|
||||
name: "Hourly Extract E2E Tests (${{ matrix.environment }})"
|
||||
name: "Extract E2E Tests (${{ matrix.environment }})"
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 30
|
||||
concurrency:
|
||||
@@ -149,7 +149,7 @@ jobs:
|
||||
- name: Post to Extract Slack channel
|
||||
id: slack
|
||||
if: (failure() || cancelled()) && steps.runtime.outputs.notify_slack == 'true'
|
||||
uses: slackapi/slack-github-action@v1.27.0
|
||||
uses: slackapi/slack-github-action@v2.1.1
|
||||
with:
|
||||
channel-id: ${{ env.SLACK_CHANNEL_ID }}
|
||||
slack-message: |
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*.orig
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode/
|
||||
|
||||
tests/
|
||||
@@ -0,0 +1,520 @@
|
||||
# CHANGELOG
|
||||
|
||||
## [0.7.1] - 2026-02-16
|
||||
|
||||
### Platform
|
||||
- **[Improvement]** General stability and performance improvements
|
||||
- **[Bug Fix]** Bug fixes and security patches
|
||||
|
||||
### LlamaParse
|
||||
- **[Improvement]** General parsing improvements
|
||||
|
||||
### LlamaExtract
|
||||
- **[Feature]** Added support for xlsx files in extraction
|
||||
|
||||
## [0.7.0] - 2026-02-05
|
||||
|
||||
### Platform
|
||||
- **[Security]** Security updates
|
||||
- **[Docs]** Updated Temporal Integration instructions
|
||||
|
||||
### LlamaParse
|
||||
- **[Feature]** Parsing V2 field updates (text_full)
|
||||
|
||||
## [0.6.3] - 2026-01-30
|
||||
|
||||
### Platform
|
||||
- **[Feature]** Temporal queueing
|
||||
|
||||
### LlamaParse
|
||||
- **[New Release]** Parse V2 UI and API Release
|
||||
- For more information, visit: https://www.llamaindex.ai/blog/announcing-new-llamacloud-sdks-and-parse-api-v2
|
||||
|
||||
### LlamaExtract
|
||||
- **[Improvement]** Improved citation scalability — citations should work on much larger schemas/files without resulting in data loss
|
||||
- **[Bug Fix]** Fixed bug in schema generation on pre-loaded files from history
|
||||
|
||||
### LlamaClassify
|
||||
- **[Improvement]** Output partial results for multiple files in case of partial failures instead of failing the full batch
|
||||
|
||||
## [0.6.2] - 2025-12-31
|
||||
|
||||
### Index
|
||||
- **[Bug Fix]** SharePoint bug fixes
|
||||
- **[Stability]** Stability improvements
|
||||
|
||||
### LlamaParse
|
||||
- **[New Release]** LlamaParse v2 is now available!
|
||||
- For more information, visit: https://www.llamaindex.ai/blog/introducing-llamaparse-v2-simpler-better-cheaper
|
||||
- **[Feature]** Cost Optimizer: When toggling on Agentic or Agentic Plus tier, LlamaParse will automatically use Cost Effective on simpler pages
|
||||
|
||||
### Split API
|
||||
- **[New Product]** Split API is now available in BYOC deployments
|
||||
- For documentation on how to enable, please reach out to support
|
||||
- API Reference: https://developers.llamaindex.ai/cloud-api-reference/category/split
|
||||
|
||||
## [0.6.1] - 2025-11-26
|
||||
|
||||
### LlamaSheets
|
||||
- **[New Product]** LlamaSheets is now available. Turn messy spreadsheets into AI-ready data.
|
||||
- For more information, visit: https://www.llamaindex.ai/blog/announcing-llamasheets-turn-messy-spreadsheets-into-ai-ready-data-beta
|
||||
|
||||
### LlamaExtract
|
||||
- **[Bug Fix]** Fixed citation generation for `PER_TABLE_ROW` extraction target
|
||||
- **[Feature]** Added natural language schema editing capabilities
|
||||
|
||||
### Index
|
||||
- **[Feature]** Added regex filter support for SharePoint Data Sources
|
||||
|
||||
### Platform
|
||||
- **[Feature]** Usage Metric APIs are now available
|
||||
|
||||
## [0.6.0] - 2025-11-20
|
||||
|
||||
### Infrastructure
|
||||
- **BREAKING**: New helm template introduced
|
||||
|
||||
### LlamaExtract
|
||||
- **[Feature]** New extraction target (`PER_TABLE_ROW`) for tabular extraction available
|
||||
- **[Bug Fix]** Fixed a bug where schema generation when configured to use OpenAI's GPT 4.1-mini was not working
|
||||
- **[Bug Fix]** Fixed multiple bugs related to merging of field metadata (e.g. confidence scores) with the main extraction results on long files
|
||||
|
||||
## [0.5.11] - 2025-10-28
|
||||
|
||||
### Bug Fixes
|
||||
- Fixed default frontend image tag
|
||||
|
||||
### Platform - Frontend
|
||||
- Standardize CSP Policies
|
||||
|
||||
## [0.5.10] - 2025-10-27
|
||||
|
||||
### Index
|
||||
- Indexing system status resolution improvements
|
||||
|
||||
### Platform
|
||||
- Add Global Administrator Configurations
|
||||
|
||||
### Excel APIs
|
||||
- Added Excel Spreadsheet APIs
|
||||
|
||||
## [0.5.9] - 2025-10-17
|
||||
|
||||
### Index
|
||||
- Mitigate connection issues and address system segfaults when resolving network proxies
|
||||
|
||||
## [0.5.8] - 2025-10-10
|
||||
|
||||
### Index
|
||||
- Indexing system status resolution improvements
|
||||
- Added full error resolution in pipeline status https://api.cloud.llamaindex.ai/docs#/Pipelines/get_pipeline_status_api_v1_pipelines__pipeline_id__status_get
|
||||
|
||||
### Confluence Feature Fixes
|
||||
- Various bug fixes and improvements
|
||||
|
||||
### Parse
|
||||
- Sonnet 4.5 and GPT 5 support
|
||||
|
||||
### UI Rework
|
||||
- User interface improvements and enhancements
|
||||
|
||||
### Core Logging
|
||||
- Logging Structure has been updated
|
||||
- Metadata may be attached as 'extra' fields
|
||||
|
||||
### Extract
|
||||
- Internal improvement: More comprehensive merging of sub-extractions on large documents
|
||||
|
||||
## [0.5.7] - 2025-09-19
|
||||
|
||||
### Index
|
||||
- Improved log handling
|
||||
- Bug fixes: manually uploaded documents
|
||||
- Clearer connection errors for all integrations
|
||||
|
||||
### Platform
|
||||
- Improved API Key management UI and API
|
||||
|
||||
### Parse
|
||||
- Round robin capabilities between model providers
|
||||
|
||||
## [0.5.6] - 2025-09-18
|
||||
|
||||
### Index
|
||||
- Improved Logging in Confluence Connectors
|
||||
- Support large Google Drive Files
|
||||
|
||||
### Parse
|
||||
- Improved hallucination handling on empty pages
|
||||
|
||||
## [0.5.5] - 2025-09-10
|
||||
### Index
|
||||
- Added custom document status and sync to UI
|
||||
|
||||
### Parse
|
||||
- Added Section/presenter comment extraction support in PPTX
|
||||
- Added Parse Configuration UI and API
|
||||
|
||||
### Extract
|
||||
- GPT 5 Support
|
||||
|
||||
### Infrastructure
|
||||
- Keda Scaledobject support in charts
|
||||
|
||||
## [0.5.4] - 2025-09-04
|
||||
### LlamaCloud Platform
|
||||
- **Fixed Google Vertex AI Configuration**: Resolved environment variable inconsistency between Parse and backend services for Google Vertex AI credentials
|
||||
- Parse now supports `GOOGLE_VERTEX_AI_CREDENTIALS_JSON` environment variable for consistency with backend configuration
|
||||
- Maintains backward compatibility with `GOOGLE_APPLICATION_CREDENTIALS` (with deprecation warning)
|
||||
- Added GPT-5 support in admin UI panel
|
||||
|
||||
### LlamaExtract
|
||||
- Extract supports selection of parse (`parse_model`) and extract (`extract_model`) models for Multimodal/Premium modes.
|
||||
- Support for automatic schema generation in the UI.
|
||||
|
||||
## [0.5.3] - 2025-08-19
|
||||
|
||||
### LlamaCloud Platform
|
||||
- Azure Service Bus Integration: `.Values.rabbitmq.external.connectionString*`
|
||||
- Webhook support for sending structured JSON output
|
||||
- Please refer to the [docs](https://docs.cloud.llamaindex.ai/general/webhooks) for more information.
|
||||
|
||||
### Index
|
||||
- Stability improvements
|
||||
- File name filter add the data source UI
|
||||
|
||||
### LlamaExtract
|
||||
- Page quality is incorporated when computing confidence scores
|
||||
|
||||
## [0.5.2] - 2025-08-12
|
||||
|
||||
### LlamaCloud Platform
|
||||
- Update SharePoint Data Source to detect file changes and update metadata.
|
||||
- Add new Jira V2 Data Source with improved update detection.
|
||||
- Upgrade API to Confluence to use RPC API to fix connectivity issues in self hosted deployments.
|
||||
|
||||
### Parse
|
||||
- Added support for Azure OpenAI gpt-5, gpt-5-mini, and gpt-5-nano deployments.
|
||||
|
||||
### LlamaExtract
|
||||
- Adds support for `pptx` format.
|
||||
- Confidence scores now support files up to 100 pages long.
|
||||
- Adds additional compatibility checks to the admin dashboard to better reflect Extract requirements.
|
||||
- More settings available to configure for allowed files (size and pages):
|
||||
- `backend.config.llamaExtractMaxPages`
|
||||
- `backend.config.llamaExtractMaxFileSizeMb`
|
||||
|
||||
## [0.5.1] - 2025-07-31
|
||||
|
||||
### LlamaCloud Platform
|
||||
- **Webhooks available**: Webhooks are now available in LlamaExtract and LlamaParse.
|
||||
- Please refer to the [docs](https://developers.llamaindex.ai/python/cloud/general/webhooks) for more information.
|
||||
- Added support for Azure OpenAI Gpt 4.1, Gpt 4.1-mini, and Gpt 4.1-nano deployments.
|
||||
|
||||
### Index
|
||||
- Added a `skip_failures` capability to the Confluence reader, allowing ingestion to continue even when some batches or pages fail with HTTP 5xx errors.
|
||||
|
||||
### LlamaExtract
|
||||
- `high_resolution_mode` is now available in Multimodal/Premium modes.
|
||||
|
||||
### Infrastructure Changes
|
||||
- Added support for configuring custom labels and annotations to `frontend` and `backend` k8s services
|
||||
- Improved Helm Chart UX around configuring Redis
|
||||
- New fields: `.Values.global.config.external.redis.scheme` and `.Values.global.config.external.redis.db`
|
||||
- Added official support for configuring Azure Managed Redis with Access Keys
|
||||
- For more information, please visit the [Configuring External Dependencies](https://docs.cloud.llamaindex.ai/self_hosting/configuration/dependencies) page in our public documentation.
|
||||
|
||||
### Breaking Changes
|
||||
- **AWS Bedrock Models**: Users must add the `bedrock:InvokeModelWithResponseStream` role to their bedrock user before deploying this version.
|
||||
|
||||
## [0.5.0] - 2025-07-23
|
||||
|
||||
### LlamaCloud Platform
|
||||
- **New Basic Auth Mode**: Added support for basic auth mode.
|
||||
- This is available via the `.Values.backend.config.basicAuth` field in the values.yaml file.
|
||||
- Please refer to the [docs](https://docs.cloud.llamaindex.ai/self_hosting/configuration/auth-modes) for more information.
|
||||
|
||||
### Infrastructure Changes
|
||||
- Fixes a bug with the `.Values.llamaParse.config.awsBedrock.*` configurations.
|
||||
- There is now first class support for mounting certificate authorities onto the frontend service.
|
||||
- Configuration is available via the `.Values.frontend.config.tls.*` field in the values.yaml file.
|
||||
|
||||
## [0.4.6] - 2025-07-21
|
||||
|
||||
### Deprecation Warning
|
||||
- `.Values.global.config.mongodb.external.url` is now deprecated. Please use the available fields in `.Values.global.config.mongodb.external.*` to construct your MongoDB connection url.
|
||||
|
||||
### Infrastructure Changes
|
||||
- This version introduces a new field in the values.yaml — `.Values.global.config.mongodb.external.scheme` — that gives users flexibility in which url scheme to configure.
|
||||
- Default: `mongodb`
|
||||
- Tip: To configure Azure CosmosDB, you can set this field to `mongodb+srv`
|
||||
- For more information, please refer to [the docs](https://docs.cloud.llamaindex.ai/self_hosting/configuration/dependencies#external-dependency-configuration-recommended)
|
||||
|
||||
### Jobs Worker
|
||||
- **New BYOC Configuration Flags**: Added support for index controls
|
||||
- `defaultTransformDocumentTimeoutSeconds`: Default timeout for document transformation jobs (default: 240 seconds)
|
||||
- `transformEmbeddingCharLimit`: Character limit for transform embedding operations (default: 11,520,000 characters)
|
||||
- These flags are now configurable via Helm chart values and documented in self-hosting guides
|
||||
|
||||
## [0.4.5] - 2025-07-17
|
||||
|
||||
### LlamaParse
|
||||
- **Enhanced Table Extraction**: `outline_table_extraction=True` now supports:
|
||||
- Table extraction from DOCX documents directly, even when not outlined
|
||||
- Table extraction from XLSX→PDF conversions without outlines
|
||||
- Better handling of side-by-side tables (recognized as separate tables instead of merged)
|
||||
- **Improved Spatial Text Output**: Enhanced spatial text processing for better document understanding
|
||||
- **Agent Parsing Improvements**:
|
||||
- `parse_with_agent_sonnet_4`: Better flow chart handling and added Bedrock support
|
||||
- `parse_with_agent_gemini_flash_2`: General performance improvements
|
||||
- **Cross-Page Table Merging**: `merge_table_across_page=True` allows tables that continue across pages to be properly merged (works only when tables are extracted correctly)
|
||||
|
||||
### LlamaExtract
|
||||
- **[Beta]** **Extraction Confidence Scores**: [Now available](https://docs.cloud.llamaindex.ai/llamaextract/features/options#advanced-optionsextensions) in Multimodal/Premium modes for short documents. Feature provides confidence metrics for extracted content.
|
||||
- Available in advanced options
|
||||
- Note: Currently in beta with slower performance; improvements incoming
|
||||
- **[New]** **Page Range Support**: Extraction can now be limited to specific page ranges using formats like `1-8,11,13`
|
||||
|
||||
### LlamaCloud Platform
|
||||
- **Improved SharePoint Processing**: V2 Data Source created by default for more robust and error-resistant SharePoint processing
|
||||
- **[Retrieval]** **Unlimited File Retrieval**: Removed the 500 files limit for `files_via_metadata` retrieval - now supports limitless file operations
|
||||
- **Enhanced Permissioning Model**: Internal table dependency changes for improved permission management (no external visibility impact)
|
||||
- Supports Create + Remove user permissions with Project/Org and Viewer/Admin scopes
|
||||
|
||||
## [0.4.4] - 2025-07-02
|
||||
|
||||
### LlamaParse
|
||||
- Fix LlamaParse header/footer outputs
|
||||
### LlamaCloud Platform
|
||||
- [Index] Data-source security and reliability enhancements
|
||||
- [Index] Improvements to job worker stability when ingesting large data-sources
|
||||
- [Retrieval] Fix `files_via_content` retrieval for specific file types (e.g. `.txt` or `.md`)
|
||||
### Helpful Notices
|
||||
- The Azure OpenAI validations for the Admin UI are based on the new set of configurable enviornment variables.
|
||||
- Check out the [docs](https://docs.cloud.llamaindex.ai/self_hosting/configuration/azure-openai#connecting-to-azure-openai) for more information.
|
||||
- We will be deprecating the old set of [environment variables](https://docs.cloud.llamaindex.ai/self_hosting/configuration/azure-openai#helm-chart-configuration) in the near future.
|
||||
|
||||
## [0.4.3] - 2025-06-18
|
||||
|
||||
### LlamaParse
|
||||
- [Beta]: Layout Extraction API is available now for self-hosted LlamaParse!
|
||||
- This is run as a Kubernetes Deployment in your cluster. To enable this, you can set `.Values.llamaParseLayoutExtractionApi.enabled` to `true`.
|
||||
- Please refer to the [docs](https://docs.cloud.llamaindex.ai/llamaparse/features/layout_extraction) for more information
|
||||
- High-Res OCR is now available in the UI and API.
|
||||
- [Breaking Change]: The default LLM used in `parse_page_with_llm` is now `gpt-4.1`.
|
||||
### LlamaCloud Platform
|
||||
- [Retrievals]: Page Figure Retrieval is now available. For more information, please refer to the [docs](https://docs.cloud.llamaindex.ai/llamacloud/retrieval/images#retrieving-page-figures)
|
||||
- [Platform]: Added RBAC capability for adding organization and project scoped roles
|
||||
- [Platform]: General usability improvements
|
||||
### Infrastructure Changes
|
||||
- As mentioned above, we have updated the `values.yaml` to include the new `.Values.llamaParseLayoutExtractionApi` configuration.
|
||||
- Please reach out to support if you have any questions!
|
||||
|
||||
## [0.4.2] - 2025-06-04
|
||||
|
||||
- New `Admin` UI.
|
||||
- In an effort to make it easier to manage your LlamaCloud deployment, we've added a new `Admin` tab on the `Settings` page.
|
||||
- To start, we've added the ability to view your deployment's current LLM configurations and deployment feature availability matrices.
|
||||
- Note: The current implementation assumes that OpenAi and Azure OpenAi configs are the same in `.Values.backend.config.openAi*` and `.Values.llamaParse.config.openAi*`.
|
||||
- Chat Playground
|
||||
- Added support for OpenAI 4.1, 4.1-nano, and 4.1-mini models
|
||||
- LlamaParse
|
||||
- Added support for Google Vertex AI
|
||||
- `.Values.llamaParse.config.googleVertexAi.*`
|
||||
- General product improvements
|
||||
- LlamaExtract
|
||||
- General product improvements
|
||||
- Resolve a handful of package vulnerabilities
|
||||
|
||||
## [0.4.1] - 2025-05-28
|
||||
|
||||
- Minor UI bug fixes
|
||||
- LlamaParse
|
||||
- Support for Anthropic Sonnet 4.0
|
||||
- General product improvements
|
||||
|
||||
## [0.4.0] - 2025-05-23
|
||||
|
||||
- LlamaParse
|
||||
- **New Parse UI v2 is now available!** We've make some updates to the ~look~ of our parse playground UI.
|
||||
- General improvements to parsing ux and performance
|
||||
- LlamaExtract
|
||||
- General improvements to extraction performance
|
||||
- Project level RBAC: You can now select assign member roles on a per project basis.
|
||||
|
||||
## [0.3.5] - 2025-05-16
|
||||
|
||||
- **Deprecation Warning**: In the near future, we will be deprecating the following in the `values.yaml` file:
|
||||
- `.Values.llamaParse.config.openAiApiKey.*`, `.Values.llamaParse.config.existingOpenAiApiKeySecretName`
|
||||
- `.Values.llamaParse.azureOpenAi.*`
|
||||
- `.Values.llamaParse.config.anthropicApiKey.*`, `.Values.llamaParse.config.existingAnthropicApiKeySecretName`
|
||||
- `.Values.llamaParse.config.geminiApiKey.*`, `.Values.llamaParse.config.existingGeminiApiKeySecretName`
|
||||
- `.Values.llamaParse.config.awsBedrock.*existingSecret*`
|
||||
- LLM configurations will be managed by the `jobsService` and configured at `.Values.llms.*`
|
||||
- LlamaParse
|
||||
- Added support for specifying model version for AWS Bedrock
|
||||
- `.Values.llamaParse.config.awsBedrock.sonnet3_5ModelVersionName`
|
||||
- `.Values.llamaParse.config.awsBedrock.sonnet3_7ModelVersionName`
|
||||
- Added support for configuring multiple independency Azure OpenAI deployments. Please refer to the [docs](https://docs.cloud.llamaindex.ai/self_hosting/installation) for more information.
|
||||
- Better support of read-only (password-protected) documents
|
||||
- Improved table support for Anthropic Sonnet 3.7
|
||||
- LlamaExtract
|
||||
- Premium mode is available for extraction from documents with complex tables/headers.
|
||||
- Schemas with large number of fields > 100 is supported.
|
||||
- **Note**: As mentioned previously, `.Values.backend.config.llamaExtractMultimodalModel` can be used to specify which multimodal model LlamaParse will use. LlamaExtract will pass the multimodal model name to Llamaparse's `parse_with_agent` (formerly Premium Mode).
|
||||
- Fix index status resolution when using scheduled syncs
|
||||
- Fix errors when processing screenshots during parsing
|
||||
- Various UI bug fixes
|
||||
- `autoscaling` is now enabled by default for `backend`, `jobsService`, `jobsWorker`, and `llamaParse` services
|
||||
|
||||
## [0.3.4] - 2025-05-13
|
||||
|
||||
- LlamaParse
|
||||
- Improved support for Japanese character encoding
|
||||
- Improved webhook error handling
|
||||
- Added Prometheus metrics (`llamaparse_ocr_done_total`, `llamaparse_ocr_pixels_total`, `llamaparse_pages_parsed_total`, `llamaparse_markdown_length_total`)
|
||||
- Improved spreadsheet parsing capabilities
|
||||
- LlamaExtract
|
||||
- Citations! You can learn more about it in our docs [here](https://docs.cloud.llamaindex.ai/llamaextract/features/options)
|
||||
- New UI for extract JSON builer
|
||||
- New `invalidate_cache` option in Advanced Settings to purge the cache
|
||||
- New `.Values.backend.config.llamaExtractMultimodalModel` to configure which multimodal model to use (i.e. `gemini-2.0-flash-001`, `openai-gpt-4-1`, etc.)
|
||||
- Improved error handling for high volume file ingestion syncs
|
||||
- Improved Index status resolution
|
||||
- New Integration UI for data source, data sink, and embedding model configuration
|
||||
- (Beta): Batch mode API
|
||||
|
||||
## [0.3.3] - 2025-05-02
|
||||
|
||||
- LlamaParse:
|
||||
- Improved parsing support for CJK encoding across various file types
|
||||
- Added support for autoModeConfigurationJSON
|
||||
- Support for GPT 4.1
|
||||
- Added default rate limits to file upload API
|
||||
- Stability improvements for data ingestion jobs
|
||||
- Pipeline status resolution improvements
|
||||
- Fixes for API usage of Chat API
|
||||
- Include all job error details on UI by default
|
||||
|
||||
## [0.3.2] - 2025-04-21
|
||||
|
||||
- Improved LlamaExtract product capabilities
|
||||
- LlamaCloud Index
|
||||
- Improvements to Confluence Data Source
|
||||
- Postgres Data Sink now supports HNSW by default
|
||||
|
||||
## [0.3.1] - 2025-04-17
|
||||
|
||||
- Improved Index feature stability
|
||||
- Improved Sharepoint data source ingestion scalability and configuration options
|
||||
- Improved resource utilization for entire LlamaCloud deployment
|
||||
- Fixed regression in sign-in flow when port-forwarding
|
||||
- Added ability to configure concurrency settings
|
||||
- JobsWorker concurrency settings can be found at `.Values.jobsWorker.config`
|
||||
- Global LlamaParse worker throughput can be configured with `.Values.llamaParse.config.maxQueueConcurrency`
|
||||
- The higher this value, the more resources each LlamaParse worker will require
|
||||
- The default value is the same as previous versions. We will lower the default in future releases.
|
||||
- New Metrics
|
||||
- Added Promtheus metrics for LlamaExtract
|
||||
- Added new metrics for LlamaParse
|
||||
- Fixed HorizontalPodAutoscaler definition for frontend and backend services
|
||||
- Fixed `.Values.llamaParse.config.extistingOpenAiApiKeySecretName` usage in LlamaParse deployment
|
||||
|
||||
## [0.3.0] - 2025-04-03
|
||||
|
||||
- LlamaExtract is now available in BYOC deployments!
|
||||
- For instructions on how to upgrade to this version and enable LlamaExtract, please refer to this [guide](docs/llamaextract.md)
|
||||
- For more information, please visit our [LlamaExtract docs](https://docs.cloud.llamaindex.ai/llamaextract/getting_started)
|
||||
|
||||
## [0.2.0] - 2025-04-02
|
||||
|
||||
- Add monitoring support for LlamaCloud
|
||||
- Added ServiceMonitor support
|
||||
- Metrics can be scraped for `backend`, `jobsService`, `jobsWorker`, `llamaParse`, and `llamaParseOcr` services
|
||||
- `.Values.<service>.metrics.serviceMonitor.enabled`
|
||||
- Added PrometheusRules support
|
||||
- PrometheusRules can be created for `backend` and `llamaParse` services
|
||||
- `.Values.<service>.metrics.rules.enabled`
|
||||
- Basic Grafana dashboards are available at [./charts/llamacloud/docs/monitoring](docs/monitoring)
|
||||
- Docs availabe at [./charts/llamacloud/docs/monitoring](docs/monitoring)
|
||||
- Add `.Values.ingress.create` to control the creation of an ingress resource
|
||||
|
||||
## [0.1.58] - 2025-03-27
|
||||
|
||||
- Confluence improvements:
|
||||
- Fix bad caching for Permissions
|
||||
- Upsert should create v2 readers
|
||||
- Page restricted shouldn’t be indexes
|
||||
- Reranker Configurability for Composite Retrieval
|
||||
- Retries on requests to Cohere reranker
|
||||
|
||||
## [0.1.57] - 2025-03-25
|
||||
|
||||
- Added a new disposable composite retrieval endpoint.
|
||||
- Introduced `AZURE_OPENAI_GPT_4O_DEPLOYMENT_NAME` (for playground) and `AZURE_OPENAI_GPT_4O_MINI_DEPLOYMENT_NAME` (for llamaparse) environment variables.
|
||||
- Made Confluence requests per minute configurable via `DEFAULT_CONFLUENCE_REQUESTS_PER_MINUTE`, defaulting to 60.
|
||||
|
||||
## [0.1.56] - 2025-03-18
|
||||
|
||||
- Azure OpenAI Composite Retrieval support
|
||||
|
||||
## [0.1.55] - 2025-03-14
|
||||
|
||||
- Azure OpenAI environment variable fixes
|
||||
|
||||
## [0.1.54] - 2025-03-13
|
||||
|
||||
- Connector UI fixes
|
||||
|
||||
## [0.1.53] - 2025-03-12
|
||||
|
||||
- Parse logs cleanup
|
||||
- Frontend fix for Copy Pipeline button
|
||||
|
||||
## [0.1.52] - 2025-03-11
|
||||
|
||||
- Minor connector bug fix
|
||||
|
||||
## [0.1.51] - 2025-03-11
|
||||
|
||||
- Connector bug fixes
|
||||
|
||||
## [0.1.50] - 2025-03-11
|
||||
|
||||
- Improved connector support for API data sources
|
||||
- Parsing related fonts fixes
|
||||
|
||||
## [0.1.49] - 2025-03-08
|
||||
|
||||
- Minor bug fixes
|
||||
|
||||
## [0.1.48] - 2025-03-07
|
||||
|
||||
- Enable more API data sources
|
||||
- Minor UI fixes
|
||||
|
||||
## [0.1.47] - 2025-03-06
|
||||
|
||||
- Scalability improvements for specific API based data-sources
|
||||
- Bug fixes
|
||||
|
||||
## [0.1.41] - 2025-01-02
|
||||
|
||||
- Allow configurability of Mongo Connection limits via `MONGODB_CONNECTION_MAX_POOL_SIZE` environment variable.
|
||||
|
||||
## [0.1.40] - 2024-12-19
|
||||
|
||||
- One more frontend login bug fix
|
||||
|
||||
## [0.1.39] - 2024-12-18
|
||||
|
||||
- One more frontend login bug fix
|
||||
|
||||
## [0.1.38] - 2024-12-17
|
||||
|
||||
- Frontend bug fix for BYOC login
|
||||
|
||||
## [0.1.37] - 2024-12-10
|
||||
|
||||
- Add perform_setup flag for postgres data sinks
|
||||
- Enable integrations management by defualt for helm chart deployments
|
||||
@@ -0,0 +1,6 @@
|
||||
dependencies:
|
||||
- name: temporal
|
||||
repository: https://go.temporal.io/helm-charts
|
||||
version: 0.73.1
|
||||
digest: sha256:943294271094b8c1c833ce3b76d36e427884d1ca338cdd6a3f0afed77dc7f7cd
|
||||
generated: "2026-02-04T10:21:11.421868-06:00"
|
||||
@@ -0,0 +1,34 @@
|
||||
apiVersion: v2
|
||||
name: llamacloud
|
||||
description: A Helm chart to deploy LlamaCloud and all of its necessary services.
|
||||
|
||||
home: https://github.com/run-llama/helm-charts
|
||||
|
||||
sources:
|
||||
- https://github.com/run-llama/helm-charts
|
||||
|
||||
maintainers:
|
||||
- name: Jerry Liu
|
||||
email: jerry@runllama.ai
|
||||
url: https://github.com/jerryjliu
|
||||
- name: Simon Suo
|
||||
email: simon@runllama.ai
|
||||
url: https://github.com/Disiok
|
||||
- name: Jonathan Whitaker
|
||||
email: jonathan@runllama.ai
|
||||
url: https://github.com/jonathan-whitaker
|
||||
|
||||
keywords:
|
||||
- llamaindex
|
||||
- llamacloud
|
||||
- rag
|
||||
|
||||
version: 0.7.1
|
||||
appVersion: "0.7.1"
|
||||
|
||||
dependencies:
|
||||
- name: temporal
|
||||
version: ~0.73.0
|
||||
repository: https://go.temporal.io/helm-charts
|
||||
condition: temporal.deploy
|
||||
alias: temporal-subchart
|
||||
@@ -0,0 +1,638 @@
|
||||
# LlamaCloud Helm Chart
|
||||
|
||||
The Helm Chart for installing LlamaCloud in Kubernetes. Deplying Self-Hosted LlamaCloud on your own infrastructure enables you to build data-intensive AI applications in your own [virtual](https://aws.amazon.com/vpc/) [private](https://azure.microsoft.com/en-us/free/hybrid-cloud/search/) [cloud](https://cloud.google.com/vpc?hl=en) while meeting your data privacy and compliance requirements.
|
||||
|
||||
## Quick Start
|
||||
|
||||
```sh
|
||||
# Add the LlamaIndex Helm Chart Repository
|
||||
helm repo add llamaindex https://run-llama.github.io/helm-charts
|
||||
|
||||
# (Optional) Update repo information
|
||||
helm repo update
|
||||
|
||||
# Install the basic version of the chart
|
||||
helm install my-llamacloud-release llamaindex/llamacloud
|
||||
```
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Kubernetes `>=1.28.0`
|
||||
- We are largely aligned with the versions supported in [EKS](https://endoflife.date/amazon-eks), [AKS](https://learn.microsoft.com/en-us/azure/aks/supported-kubernetes-versions?tabs=azure-cli), and [GKE](https://cloud.google.com/kubernetes-engine/versioning).
|
||||
- Helm v3.7.0+ [(Docs)](https://helm.sh/docs/)
|
||||
- LlamaCloud Images - [(Docker Hub Repository)](https://hub.docker.com/u/llamaindex)
|
||||
- By default, this chart uses public images for all LlamaCloud specific services and its dependencies.
|
||||
- LlamaCloud License Key
|
||||
|
||||
## Hardware Requirements
|
||||
|
||||
- **Linux Instances running x86 cpus**
|
||||
- As of August 12th, 2024, we build only linux/amd64 images. arm64 is not supported at this moment.
|
||||
- **Ubuntu >=22.04**
|
||||
- **>=12 vCPUs**
|
||||
- **>=80Gbi Memory**
|
||||
|
||||
Warning #1: LlamaParse, LlamaIndex's proprietry document parser, can be a very resource intensive deployment to run, especially if you want to maximize performance.
|
||||
Warning #2:The base cpu/memory requirements may increase if you are running containerized deployments of LlamaCloud dependencies. (More information in the following section)
|
||||
|
||||
## Configuring Dependencies
|
||||
|
||||
The LlamaCloud charts provide easy deployment options for the 3rd party dependencies that the platform requires. Each of the following dependencies can be enabled directly through the `values.yaml` file, or alternatively, you can supply your own `Secret` objects to provide the LlamaCloud deployments with the necessar credentials to those services.
|
||||
|
||||
- S3Proxy (Templates)
|
||||
- If enabled, we are deploying a containerized version of gaul's [s3proxy project](https://github.com/gaul/s3proxy).
|
||||
- If you wish to use a non-aws file store such as Azure Blob Storage or GCP Filestore, enable and configure the s3proxy deployment. For more information, please refer to our docs.
|
||||
|
||||
## Documentation
|
||||
|
||||
We provide a couple of guides directly in the `docs` directory of this repository.
|
||||
|
||||
- [Monitoring](./docs/monitoring/README.md)
|
||||
- [S3Proxy Setup](./docs/s3-proxy-setup.md)
|
||||
|
||||
For more information about using this chart, visit the [Official LlamaCloud Documentation](https://llamaindex.ai).
|
||||
|
||||
## Parameters
|
||||
|
||||
### License Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ---------------- | ------------------------------------------------- | -------------------------- |
|
||||
| `license.key` | License key for all components | `<input-license-key-here>` |
|
||||
| `license.secret` | Name of the k8s secret to use for the license key | `""` |
|
||||
|
||||
### Postgresql Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------- | ------------------------------------------------------------- | ------ |
|
||||
| `postgresql.host` | PostgreSQL host | `""` |
|
||||
| `postgresql.port` | PostgreSQL port | `5432` |
|
||||
| `postgresql.database` | PostgreSQL database | `""` |
|
||||
| `postgresql.username` | PostgreSQL user | `""` |
|
||||
| `postgresql.password` | PostgreSQL password | `""` |
|
||||
| `postgresql.secret` | Name of the existing secret to use for PostgreSQL credentials | `""` |
|
||||
|
||||
### MongoDB Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------- | ---------------------------------------------------------- | --------- |
|
||||
| `mongodb.scheme` | MongoDB connection scheme (i.e. mongodb, mongodb+srv) | `mongodb` |
|
||||
| `mongodb.host` | MongoDB host | `""` |
|
||||
| `mongodb.port` | MongoDB port | `27017` |
|
||||
| `mongodb.username` | MongoDB user | `""` |
|
||||
| `mongodb.password` | MongoDB password | `""` |
|
||||
| `mongodb.mongodb_url` | Full MongoDB connection URL | `""` |
|
||||
| `mongodb.secret` | Name of the existing secret to use for MongoDB credentials | `""` |
|
||||
|
||||
### RabbitMQ Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------- | ------------------------------------------------------------------ | ------ |
|
||||
| `rabbitmq.scheme` | RabbitMQ scheme | `amqp` |
|
||||
| `rabbitmq.host` | RabbitMQ host | `""` |
|
||||
| `rabbitmq.port` | RabbitMQ port | `5672` |
|
||||
| `rabbitmq.username` | RabbitMQ user | `""` |
|
||||
| `rabbitmq.password` | RabbitMQ password | `""` |
|
||||
| `rabbitmq.connectionString` | Connection string for the AMQP queue (e.g., for Azure Service Bus) | `""` |
|
||||
| `rabbitmq.secret` | Name of the existing secret to use for RabbitMQ credentials | `""` |
|
||||
|
||||
### Redis Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ---------------- | -------------------------------------------------------- | ------- |
|
||||
| `redis.host` | Redis host | `""` |
|
||||
| `redis.port` | Redis port | `6379` |
|
||||
| `redis.scheme` | Redis connection scheme (redis or rediss for SSL) | `redis` |
|
||||
| `redis.username` | Redis username (required for Redis 6.0+) | `""` |
|
||||
| `redis.password` | Redis password | `""` |
|
||||
| `redis.db` | Redis database | `0` |
|
||||
| `redis.secret` | Name of the existing secret to use for Redis credentials | `""` |
|
||||
|
||||
### Optional QDRANT Data-Sink configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ---------------- | ----------------------------------------------------------- | ------- |
|
||||
| `qdrant.enabled` | Enable QDRANT Data-Sink for backend | `false` |
|
||||
| `qdrant.url` | QDRANT Data-Sink host | `""` |
|
||||
| `qdrant.apiKey` | QDRANT Data-Sink API key | `""` |
|
||||
| `qdrant.secret` | Name of the existing secret to use for the QDRANT Data-Sink | `""` |
|
||||
|
||||
### Temporal configuration (required) - either deploy Temporal as a subchart or connect to an external Temporal instance
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ------- |
|
||||
| `temporal.disabled` | Completely disable Temporal and all Temporal workloads (configmaps, jobs, workers). temporal.deploy must be false when this is true. | `false` |
|
||||
| `temporal.deploy` | Deploy Temporal as a subchart (if false, use external Temporal) | `false` |
|
||||
| `temporal.host` | Temporal host (ignored when deploy is true, auto-configured to subchart) | `""` |
|
||||
| `temporal.port` | Temporal port (ignored when deploy is true, auto-configured to subchart) | `7233` |
|
||||
|
||||
### Temporal Subchart Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ---------------------------------------------------------------------------- | ------------------------------------------------------------------------ | ---------------------------- |
|
||||
| `temporal-subchart.serviceAccount.create` | Create a service account for Temporal | `true` |
|
||||
| `temporal-subchart.serviceAccount.name` | Name of the service account for Temporal | `temporal-server` |
|
||||
| `temporal-subchart.web.enabled` | Enable Temporal Web UI | `true` |
|
||||
| `temporal-subchart.web.service.port` | Port for Temporal Web UI service | `80` |
|
||||
| `temporal-subchart.server.config.persistence.default.driver` | Persistence driver for default store | `sql` |
|
||||
| `temporal-subchart.server.config.persistence.default.sql.driver` | SQL driver for default store | `postgres12` |
|
||||
| `temporal-subchart.server.config.persistence.default.sql.host` | PostgreSQL host (use same as postgresql.host) | `""` |
|
||||
| `temporal-subchart.server.config.persistence.default.sql.port` | PostgreSQL port (use same as postgresql.port) | `5432` |
|
||||
| `temporal-subchart.server.config.persistence.default.sql.database` | Database name for temporal (created automatically) | `temporal` |
|
||||
| `temporal-subchart.server.config.persistence.default.sql.user` | PostgreSQL user (use same as postgresql.username) | `""` |
|
||||
| `temporal-subchart.server.config.persistence.default.sql.existingSecret` | Use existing secret for password (auto-created from postgresql.password) | `temporal-postgresql-secret` |
|
||||
| `temporal-subchart.server.config.persistence.default.sql.maxConns` | Maximum number of connections for default store | `20` |
|
||||
| `temporal-subchart.server.config.persistence.default.sql.maxIdleConns` | Maximum number of idle connections for default store | `20` |
|
||||
| `temporal-subchart.server.config.persistence.default.sql.maxConnLifetime` | Maximum connection lifetime for default store | `1h` |
|
||||
| `temporal-subchart.server.config.persistence.visibility.driver` | Persistence driver for visibility store | `sql` |
|
||||
| `temporal-subchart.server.config.persistence.visibility.sql.driver` | SQL driver for visibility store | `postgres12` |
|
||||
| `temporal-subchart.server.config.persistence.visibility.sql.host` | PostgreSQL host (use same as postgresql.host) | `""` |
|
||||
| `temporal-subchart.server.config.persistence.visibility.sql.port` | PostgreSQL port (use same as postgresql.port) | `5432` |
|
||||
| `temporal-subchart.server.config.persistence.visibility.sql.database` | Database name for temporal visibility (created automatically) | `temporal_visibility` |
|
||||
| `temporal-subchart.server.config.persistence.visibility.sql.user` | PostgreSQL user (use same as postgresql.username) | `""` |
|
||||
| `temporal-subchart.server.config.persistence.visibility.sql.existingSecret` | Use existing secret for password (auto-created from postgresql.password) | `temporal-postgresql-secret` |
|
||||
| `temporal-subchart.server.config.persistence.visibility.sql.maxConns` | Maximum number of connections for visibility store | `20` |
|
||||
| `temporal-subchart.server.config.persistence.visibility.sql.maxIdleConns` | Maximum number of idle connections for visibility store | `20` |
|
||||
| `temporal-subchart.server.config.persistence.visibility.sql.maxConnLifetime` | Maximum connection lifetime for visibility store | `1h` |
|
||||
| `temporal-subchart.schema.createDatabase.enabled` | Enable automatic database creation for Temporal | `true` |
|
||||
| `temporal-subchart.schema.setup.enabled` | Enable schema setup for Temporal | `true` |
|
||||
| `temporal-subchart.schema.update.enabled` | Enable schema updates for Temporal | `true` |
|
||||
| `temporal-subchart.prometheus.enabled` | Enable Prometheus for Temporal (disabled, use main monitoring) | `false` |
|
||||
| `temporal-subchart.grafana.enabled` | Enable Grafana for Temporal (disabled, use main monitoring) | `false` |
|
||||
| `temporal-subchart.elasticsearch.enabled` | Enable Elasticsearch for Temporal | `false` |
|
||||
| `temporal-subchart.cassandra.enabled` | Enable Cassandra for Temporal | `false` |
|
||||
| `temporal-subchart.mysql.enabled` | Enable MySQL for Temporal | `false` |
|
||||
| `temporal-subchart.postgresql.enabled` | Enable bundled PostgreSQL for Temporal (disabled, use external) | `false` |
|
||||
|
||||
### Ingress Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| -------------------------- | ----------------------------------------- | ------- |
|
||||
| `ingress.enabled` | Whether to enable the ingress | `false` |
|
||||
| `ingress.annotations` | Annotations to add to the ingress | `{}` |
|
||||
| `ingress.host` | Hostname to use for the ingress | `""` |
|
||||
| `ingress.tlsSecretName` | TLS secret name to use for the ingress | `""` |
|
||||
| `ingress.ingressClassName` | Ingress class name to use for the ingress | `""` |
|
||||
|
||||
### Application Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ----------------- | --------------------------------------------------------------------- | ------ |
|
||||
| `config.logLevel` | Log level for the application (DEBUG, INFO, WARNING, ERROR, CRITICAL) | `INFO` |
|
||||
|
||||
### LLMs Configuration
|
||||
|
||||
|
||||
### OpenAI Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ---------------------------- | --------------------------------------------------------- | ----- |
|
||||
| `config.llms.openAi.apiKey` | OpenAI API key | `""` |
|
||||
| `config.llms.openAi.secret` | Name of the existing secret to use for the OpenAI API key | `""` |
|
||||
| `config.llms.openAi.baseUrl` | OpenAI base URL | `""` |
|
||||
|
||||
### Anthropic Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------------------ | ------------------------------------------------------------ | ----- |
|
||||
| `config.llms.anthropic.apiKey` | Anthropic API key | `""` |
|
||||
| `config.llms.anthropic.secret` | Name of the existing secret to use for the Anthropic API key | `""` |
|
||||
|
||||
### Google Gemini Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------- | ---------------------------------------------------------------- | ----- |
|
||||
| `config.llms.gemini.apiKey` | Google Gemini API key | `""` |
|
||||
| `config.llms.gemini.secret` | Name of the existing secret to use for the Google Gemini API key | `""` |
|
||||
|
||||
### Azure OpenAI Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------------------------- | --------------------------------------------------------------- | ----- |
|
||||
| `config.llms.azureOpenAi.secret` | Name of the existing secret to use for the Azure OpenAI API key | `""` |
|
||||
| `config.llms.azureOpenAi.deployments` | Azure OpenAI deployments | `[]` |
|
||||
|
||||
### AWS Bedrock Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| -------------------------------------------------- | ----------------------------------------------------------------------------------------- | ------------------------------------------- |
|
||||
| `config.llms.awsBedrock.region` | AWS Bedrock region | `""` |
|
||||
| `config.llms.awsBedrock.accessKeyId` | AWS Bedrock access key ID | `""` |
|
||||
| `config.llms.awsBedrock.secretAccessKey` | AWS Bedrock secret access key | `""` |
|
||||
| `config.llms.awsBedrock.sonnet3_5ModelVersionName` | Sonnet 3.5 model version name example. Usually needs a 'us.', 'global.', or 'eu.' prefix. | `anthropic.claude-3-5-sonnet-20240620-v1:0` |
|
||||
| `config.llms.awsBedrock.sonnet3_7ModelVersionName` | Sonnet 3.7 model version name example. Usually needs a 'us.', 'global.', or 'eu.' prefix. | `anthropic.claude-3-7-sonnet-20250219-v1:0` |
|
||||
| `config.llms.awsBedrock.sonnet4_0ModelVersionName` | Sonnet 4.0 model version name example. Usually needs a 'us.', 'global.', or 'eu.' prefix. | `anthropic.claude-sonnet-4-20250514-v1:0` |
|
||||
| `config.llms.awsBedrock.sonnet4_5ModelVersionName` | Sonnet 4.5 model version name example. Usually needs a 'us.', 'global.', or 'eu.' prefix. | `anthropic.claude-sonnet-4-5-20250929-v1:0` |
|
||||
| `config.llms.awsBedrock.haiku3_5ModelVersionName` | Haiku 3.5 model version name example. Usually needs a 'us.', 'global.', or 'eu.' prefix. | `anthropic.claude-3-5-haiku-20241022-v1:0` |
|
||||
| `config.llms.awsBedrock.haiku4_5ModelVersionName` | Haiku 4.5 model version name example. Usually needs a 'us.', 'global.', or 'eu.' prefix. | `anthropic.claude-haiku-4-5-20251001-v1:0` |
|
||||
| `config.llms.awsBedrock.secret` | Name of the existing secret to use for the AWS Bedrock API key | `""` |
|
||||
|
||||
### Google Vertex AI Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| -------------------------------------------- | ------------------------------------------------------------------- | ----- |
|
||||
| `config.llms.googleVertexAi.projectId` | Google Vertex AI project id | `""` |
|
||||
| `config.llms.googleVertexAi.location` | Google Vertex AI location | `""` |
|
||||
| `config.llms.googleVertexAi.credentialsJson` | Google Vertex AI credentials JSON | `""` |
|
||||
| `config.llms.googleVertexAi.secret` | Name of the existing secret to use for the Google Vertex AI API key | `""` |
|
||||
|
||||
### authentication Configuration
|
||||
|
||||
|
||||
### Basic Auth configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| -------------------------------------------------- | ----------------------------------------------------- | ------- |
|
||||
| `config.authentication.basicAuth.enabled` | Enable Basic Auth for the backend | `false` |
|
||||
| `config.authentication.basicAuth.validEmailDomain` | Valid email domain for the application | `""` |
|
||||
| `config.authentication.basicAuth.jwtSecret` | JWT secret for the backend | `""` |
|
||||
| `config.authentication.basicAuth.secret` | Name of the existing secret to use for the JWT secret | `""` |
|
||||
|
||||
### OpenID Connect configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ----------------------------------------- | --------------------------------------------------------- | ------- |
|
||||
| `config.authentication.oidc.enabled` | Enable OIDC for the backend | `false` |
|
||||
| `config.authentication.oidc.discoveryUrl` | OIDC discovery URL | `""` |
|
||||
| `config.authentication.oidc.clientId` | OIDC client ID | `""` |
|
||||
| `config.authentication.oidc.clientSecret` | OIDC client secret | `""` |
|
||||
| `config.authentication.oidc.secret` | Name of the existing secret to use for OIDC configuration | `""` |
|
||||
|
||||
### Storage Buckets Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------ |
|
||||
| `config.storageBuckets.provider` | Cloud storage provider | `aws` |
|
||||
| `config.storageBuckets.extraEnvVariables` | Extra environment variables to add to the pods for storage buckets | `{}` |
|
||||
| `config.storageBuckets.parsedDocuments` | Cloud storage bucket name | `llama-platform-parsed-documents` |
|
||||
| `config.storageBuckets.parsedEtl` | Cloud storage bucket name | `llama-platform-etl` |
|
||||
| `config.storageBuckets.parsedExternalComponents` | Cloud storage bucket name | `llama-platform-external-components` |
|
||||
| `config.storageBuckets.parsedFileParsing` | Cloud storage bucket name | `llama-platform-file-parsing` |
|
||||
| `config.storageBuckets.parsedRawFile` | Cloud storage bucket name | `llama-platform-raw-files` |
|
||||
| `config.storageBuckets.parseOutput` | Cloud storage bucket name | `llama-cloud-parse-output` |
|
||||
| `config.storageBuckets.parsedFileScreenshot` | Cloud storage bucket name | `llama-platform-file-screenshots` |
|
||||
| `config.storageBuckets.extractOutput` | Cloud storage bucket name | `llama-platform-extract-output` |
|
||||
| `config.storageBuckets.parseFileUpload` | Cloud storage bucket name | `llama-platform-file-parsing` |
|
||||
| `config.storageBuckets.parseFileOutput` | Cloud storage bucket name | `llama-platform-file-parsing` |
|
||||
|
||||
### S3Proxy Configuration (only used when provider is set to gcp or azure, ignored for aws)
|
||||
|
||||
| Name | Description | Value |
|
||||
| ----------------------------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------ |
|
||||
| `config.storageBuckets.s3proxy.enabled` | S3Proxy image | `false` |
|
||||
| `config.storageBuckets.s3proxy.image` | S3Proxy image | `docker.io/andrewgaul/s3proxy:sha-82e50ee` |
|
||||
| `config.storageBuckets.s3proxy.imagePullPolicy` | S3Proxy image pull policy | `IfNotPresent` |
|
||||
| `config.storageBuckets.s3proxy.containerPort` | S3Proxy container port | `8080` |
|
||||
| `config.storageBuckets.s3proxy.securityContext` | Security context for the S3Proxy container | `{}` |
|
||||
| `config.storageBuckets.s3proxy.resources` | Set container requests and limits for different resources like CPU or memory | `{}` |
|
||||
| `config.storageBuckets.s3proxy.config` | S3Proxy configuration ENV variables | `{}` |
|
||||
|
||||
### Frontend Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------------- | ----------------------- | ------ |
|
||||
| `config.frontend.enabled` | Enable Frontend service | `true` |
|
||||
|
||||
### LlamaExtract Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ----------------------------------------- | -------------------------------------------------------------------------------- | --------------------- |
|
||||
| `config.extraction.multimodalModel` | LlamaExtract multimodal model (gemini-2.0-flash, gemini-2.5-pro, openai-gpt-4-1) | `openai-gpt-4-1` |
|
||||
| `config.extraction.schemaGenerationModel` | LlamaExtract schema generation model (gemini-2.0-flash, openai-gpt-4-1-mini) | `openai-gpt-4-1-mini` |
|
||||
| `config.extraction.maxPages` | LlamaExtract max pages allowed | `500` |
|
||||
| `config.extraction.maxFileSizeMb` | LlamaExtract max file size (MB) allowed | `100` |
|
||||
|
||||
### Jobs Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ---------------------------------------------------- | ------------------------------------------------------------- | ---------- |
|
||||
| `config.jobs.maxJobsInExecutionPerJobType` | Maximum number of jobs in execution per job type | `10` |
|
||||
| `config.jobs.maxIndexJobsInExecution` | Maximum number of index jobs in execution | `0` |
|
||||
| `config.jobs.maxDocumentIngestionJobsInExecution` | Maximum number of document ingestion jobs in execution | `1` |
|
||||
| `config.jobs.includeJobErrorDetails` | Whether to always include job error details in API and the UI | `true` |
|
||||
| `config.jobs.defaultTransformDocumentTimeoutSeconds` | Default timeout in seconds for document transformation jobs | `240` |
|
||||
| `config.jobs.transformEmbeddingCharLimit` | Character limit for transform embedding operations | `11520000` |
|
||||
|
||||
### LlamaParse Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------------------------------------------------- | ---------------------------------------------------------- | ------- |
|
||||
| `config.parse.debugMode` | Enable debug mode for LlamaParse | `false` |
|
||||
| `config.parse.maxQueueConcurrency` | Max number of jobs the worker can process at the same time | `3` |
|
||||
| `config.parse.preferedPremiumModel` | Prefered premium LLM model to use for the application | `""` |
|
||||
| `config.parse.concurrency.accurateModeLLMConcurrency` | concurrency setting | `""` |
|
||||
| `config.parse.concurrency.multimodalModelConcurrency` | concurrency setting | `""` |
|
||||
| `config.parse.concurrency.premiumModeModelConcurrency` | concurrency setting | `""` |
|
||||
| `config.parse.concurrency.ocrConcurrency` | ocr concurrency setting | `""` |
|
||||
| `config.parse.concurrency.layoutExtractionConcurrency` | layout extraction concurrency setting | `""` |
|
||||
| `config.parse.concurrency.layoutExtractionV2Concurrency` | layout extraction v2 concurrency setting | `""` |
|
||||
| `config.parse.concurrency.layoutModeBlockParseConcurrency` | layout mode block parse concurrency setting | `""` |
|
||||
| `config.parse.concurrency.layoutModePageConcurrency` | layout mode page concurrency setting | `""` |
|
||||
| `config.parse.concurrency.layoutModeReadingOrderDetectionConcurrency` | layout mode reading order detection concurrency setting | `""` |
|
||||
| `config.parse.concurrency.gemini25Flash` | gemini25Flash concurrency setting | `""` |
|
||||
| `config.parse.concurrency.gemini25Pro` | gemini25Pro concurrency setting | `""` |
|
||||
| `config.parse.concurrency.gemini20Flash` | gemini20Flash concurrency setting | `""` |
|
||||
| `config.parse.concurrency.gemini20FlashLite` | gemini20FlashLite concurrency setting | `""` |
|
||||
| `config.parse.concurrency.gemini15Flash` | gemini15Flash concurrency setting | `""` |
|
||||
| `config.parse.concurrency.gemini15Pro` | gemini15Pro concurrency setting | `""` |
|
||||
| `config.parse.concurrency.openaiGpt4oMini` | openaiGpt4oMini concurrency setting | `""` |
|
||||
| `config.parse.concurrency.openaiGpt4o` | openaiGpt4o concurrency setting | `""` |
|
||||
| `config.parse.concurrency.openaiGpt41` | openaiGpt41 concurrency setting | `""` |
|
||||
| `config.parse.concurrency.openaiGpt41Mini` | openaiGpt41Mini concurrency setting | `""` |
|
||||
| `config.parse.concurrency.openaiGpt41Nano` | openaiGpt41Nano concurrency setting | `""` |
|
||||
| `config.parse.concurrency.openaiGpt5` | openaiGpt5 concurrency setting | `""` |
|
||||
| `config.parse.concurrency.openaiGpt5Mini` | openaiGpt5Mini concurrency setting | `""` |
|
||||
| `config.parse.concurrency.openaiGpt5Nano` | openaiGpt5Nano concurrency setting | `""` |
|
||||
| `config.parse.concurrency.openaiWhisper1` | openaiWhisper1 concurrency setting | `""` |
|
||||
| `config.parse.concurrency.anthropicSonnet37` | anthropicSonnet37 concurrency setting | `""` |
|
||||
| `config.parse.concurrency.anthropicSonnet35` | anthropicSonnet35 concurrency setting | `""` |
|
||||
| `config.parse.concurrency.anthropicSonnet40` | anthropicSonnet40 concurrency setting | `""` |
|
||||
| `config.parse.concurrency.anthropicSonnet45` | anthropicSonnet45 concurrency setting | `""` |
|
||||
| `config.parse.concurrency.anthropicHaiku35` | anthropicHaiku35 concurrency setting | `""` |
|
||||
| `config.parse.concurrency.anthropicHaiku45` | anthropicHaiku45 concurrency setting | `""` |
|
||||
|
||||
### LlamaParse-OCR Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------------------------- | -------------------------------------------------------------------------- | ------- |
|
||||
| `config.parseOcr.enabled` | Enable LlamaParseOcr | `true` |
|
||||
| `config.parseOcr.gpu` | Enable GPU acceleration for OCR processing (if false, uses CPU backend) | `false` |
|
||||
| `config.parseLayoutDetection.enabled` | Enable LlamaParse Layout Detection | `true` |
|
||||
| `config.parseLayoutDetection.gpu` | Enable GPU acceleration for Layout processing (if false, uses CPU backend) | `false` |
|
||||
|
||||
### Layout Detection V3 (BYOC Self-Hosted) Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------------------- | -------------------------------------------------------- | ------- |
|
||||
| `config.parseLayoutDetectionV3.enabled` | Enable Layout V3 Detection (self-hosted RT-DETRv2 model) | `false` |
|
||||
| `config.parseLayoutDetectionV3.gpu` | Enable GPU acceleration for Layout V3 processing | `false` |
|
||||
|
||||
### Temporal Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| -------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------- |
|
||||
| `config.temporal.workerRegistryProfile` | Temporal worker registry profile (default or consolidated) | `consolidated` |
|
||||
| `config.temporal.namespace` | Temporal registered namespace | `""` |
|
||||
| `config.temporal.searchAttributesJob.enabled` | Enable the search attributes job | `true` |
|
||||
| `config.temporal.searchAttributesJob.image` | Image for temporal admin tools | `docker.io/temporalio/admin-tools:1.29` |
|
||||
| `config.temporal.searchAttributesJob.attributes[0].name` | Name of the first search attribute | `Project` |
|
||||
| `config.temporal.searchAttributesJob.attributes[0].type` | Type of the first search attribute (Text, Keyword, Int, Double, Bool, Datetime, KeywordList) | `Keyword` |
|
||||
| `config.temporal.searchAttributesJob.attributes[1].name` | Name of the second search attribute | `Organization` |
|
||||
| `config.temporal.searchAttributesJob.attributes[1].type` | Type of the second search attribute (Text, Keyword, Int, Double, Bool, Datetime, KeywordList) | `Keyword` |
|
||||
|
||||
### Common Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------- | ---------------------------------------------------- | ----- |
|
||||
| `commonLabels` | Labels to add to all deployed objects | `{}` |
|
||||
| `commonAnnotations` | Annotations to add to all deployed objects | `{}` |
|
||||
| `imagePullSecrets` | Image pull secrets to use for the images string list | `[]` |
|
||||
| `extraObjects` | | `[]` |
|
||||
|
||||
### Frontend Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
|
||||
| `frontend.horizontalPodAutoscalerSpec` | HorizontalPodAutoScaler configuration | `{}` |
|
||||
| `frontend.annotations` | Annotations added to the Frontend Deployment. | `{}` |
|
||||
| `frontend.image` | Frontend image | `docker.io/llamaindex/llamacloud-frontend:0.7.0` |
|
||||
| `frontend.imagePullPolicy` | Frontend image pull policy | `IfNotPresent` |
|
||||
| `frontend.securityContext` | Security context for the container | `{}` |
|
||||
| `frontend.serviceAccountAnnotations` | Annotations to add to the service account | `{}` |
|
||||
| `frontend.nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `frontend.tolerations` | Taints to tolerate on node assignment: | `[]` |
|
||||
| `frontend.affinity` | Pod scheduling constraints | `{}` |
|
||||
| `frontend.topologySpreadConstraints` | Topology Spread Constraints for frontend pods | `[]` |
|
||||
| `frontend.podAnnotations` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `frontend.podSecurityContext` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `frontend.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` |
|
||||
| `frontend.extraEnvVariables` | Extra environment variables to add to Frontend pods | `[]` |
|
||||
| `frontend.volumeMounts` | List of volumeMounts that can be mounted by containers belonging to the pod | `[]` |
|
||||
| `frontend.volumes` | List of volumes that can be mounted by containers belonging to the pod | `[]` |
|
||||
|
||||
### Backend Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
|
||||
| `backend.horizontalPodAutoscalerSpec` | HorizontalPodAutoScaler configuration | `{}` |
|
||||
| `backend.annotations` | Annotations added to the Backend Deployment. | `{}` |
|
||||
| `backend.image` | Backend image | `docker.io/llamaindex/llamacloud-backend:0.7.0` |
|
||||
| `backend.imagePullPolicy` | Backend image pull policy | `IfNotPresent` |
|
||||
| `backend.securityContext` | Security context for the container | `{}` |
|
||||
| `backend.serviceAccountAnnotations` | Annotations to add to the service account | `{}` |
|
||||
| `backend.nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `backend.tolerations` | Taints to tolerate on node assignment: | `[]` |
|
||||
| `backend.affinity` | Pod scheduling constraints | `{}` |
|
||||
| `backend.topologySpreadConstraints` | Topology Spread Constraints for backend pods | `[]` |
|
||||
| `backend.podAnnotations` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `backend.podSecurityContext` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `backend.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` |
|
||||
| `backend.extraEnvVariables` | Extra environment variables to add to Backend pods | `[]` |
|
||||
| `backend.volumeMounts` | List of volumeMounts that can be mounted by containers belonging to the pod | `[]` |
|
||||
| `backend.volumes` | List of volumes that can be mounted by containers belonging to the pod | `[]` |
|
||||
|
||||
### JobsService Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
|
||||
| `jobsService.horizontalPodAutoscalerSpec` | HorizontalPodAutoScaler configuration | `{}` |
|
||||
| `jobsService.annotations` | Annotations added to the JobsService Deployment. | `{}` |
|
||||
| `jobsService.image` | JobsService image | `docker.io/llamaindex/llamacloud-backend:0.7.0` |
|
||||
| `jobsService.imagePullPolicy` | JobsService image pull policy | `IfNotPresent` |
|
||||
| `jobsService.securityContext` | Security context for the container | `{}` |
|
||||
| `jobsService.serviceAccountAnnotations` | Annotations to add to the service account | `{}` |
|
||||
| `jobsService.nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `jobsService.tolerations` | Taints to tolerate on node assignment: | `[]` |
|
||||
| `jobsService.affinity` | Pod scheduling constraints | `{}` |
|
||||
| `jobsService.topologySpreadConstraints` | Topology Spread Constraints for JobsService pods | `[]` |
|
||||
| `jobsService.podAnnotations` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `jobsService.podSecurityContext` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `jobsService.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` |
|
||||
| `jobsService.extraEnvVariables` | Extra environment variables to add to JobsService pods | `[]` |
|
||||
| `jobsService.volumeMounts` | List of volumeMounts that can be mounted by containers belonging to the pod | `[]` |
|
||||
| `jobsService.volumes` | List of volumes that can be mounted by containers belonging to the pod | `[]` |
|
||||
|
||||
### JobsWorker Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
|
||||
| `jobsWorker.horizontalPodAutoscalerSpec` | HorizontalPodAutoScaler configuration | `{}` |
|
||||
| `jobsWorker.annotations` | Annotations added to the JobsWorker Deployment. | `{}` |
|
||||
| `jobsWorker.image` | JobsWorker image | `docker.io/llamaindex/llamacloud-backend:0.7.0` |
|
||||
| `jobsWorker.imagePullPolicy` | JobsWorker image pull policy | `IfNotPresent` |
|
||||
| `jobsWorker.securityContext` | Security context for the container | `{}` |
|
||||
| `jobsWorker.serviceAccountAnnotations` | Annotations to add to the service account | `{}` |
|
||||
| `jobsWorker.nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `jobsWorker.tolerations` | Taints to tolerate on node assignment: | `[]` |
|
||||
| `jobsWorker.affinity` | Pod scheduling constraints | `{}` |
|
||||
| `jobsWorker.topologySpreadConstraints` | Topology Spread Constraints for JobsWorker pods | `[]` |
|
||||
| `jobsWorker.podAnnotations` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `jobsWorker.podSecurityContext` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `jobsWorker.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` |
|
||||
| `jobsWorker.extraEnvVariables` | Extra environment variables to add to JobsWorker pods | `[]` |
|
||||
| `jobsWorker.volumeMounts` | List of volumeMounts that can be mounted by containers belonging to the pod | `[]` |
|
||||
| `jobsWorker.volumes` | List of volumes that can be mounted by containers belonging to the pod | `[]` |
|
||||
|
||||
### LlamaParse Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
|
||||
| `llamaParse.horizontalPodAutoscalerSpec` | HorizontalPodAutoScaler configuration | `{}` |
|
||||
| `llamaParse.annotations` | Annotations added to the LlamaParse Deployment. | `{}` |
|
||||
| `llamaParse.image` | LlamaParse image | `docker.io/llamaindex/llamacloud-llamaparse:0.7.0` |
|
||||
| `llamaParse.imagePullPolicy` | LlamaParse image pull policy | `IfNotPresent` |
|
||||
| `llamaParse.securityContext` | Security context for the container | `{}` |
|
||||
| `llamaParse.serviceAccountAnnotations` | Annotations to add to the service account | `{}` |
|
||||
| `llamaParse.nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `llamaParse.tolerations` | Taints to tolerate on node assignment: | `[]` |
|
||||
| `llamaParse.affinity` | Pod scheduling constraints | `{}` |
|
||||
| `llamaParse.topologySpreadConstraints` | Topology Spread Constraints for LlamaParse pods | `[]` |
|
||||
| `llamaParse.podAnnotations` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `llamaParse.podSecurityContext` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `llamaParse.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` |
|
||||
| `llamaParse.extraEnvVariables` | Extra environment variables to add to LlamaParse pods | `[]` |
|
||||
| `llamaParse.volumeMounts` | List of volumeMounts that can be mounted by containers belonging to the pod | `[]` |
|
||||
| `llamaParse.volumes` | List of volumes that can be mounted by containers belonging to the pod | `[]` |
|
||||
|
||||
### LlamaParseOcr Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
|
||||
| `llamaParseOcr.horizontalPodAutoscalerSpec` | HorizontalPodAutoScaler configuration | `{}` |
|
||||
| `llamaParseOcr.annotations` | Annotations added to the LlamaParseOcr Deployment. | `{}` |
|
||||
| `llamaParseOcr.image` | LlamaParseOcr image | `docker.io/llamaindex/llamacloud-llamaparse-ocr:0.7.0` |
|
||||
| `llamaParseOcr.imagePullPolicy` | LlamaParseOcr image pull policy | `IfNotPresent` |
|
||||
| `llamaParseOcr.securityContext` | Security context for the container | `{}` |
|
||||
| `llamaParseOcr.serviceAccountAnnotations` | Annotations to add to the service account | `{}` |
|
||||
| `llamaParseOcr.nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `llamaParseOcr.tolerations` | Taints to tolerate on node assignment: | `[]` |
|
||||
| `llamaParseOcr.affinity` | Pod scheduling constraints | `{}` |
|
||||
| `llamaParseOcr.topologySpreadConstraints` | Topology Spread Constraints for LlamaParseOcr pods | `[]` |
|
||||
| `llamaParseOcr.podAnnotations` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `llamaParseOcr.podSecurityContext` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `llamaParseOcr.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` |
|
||||
| `llamaParseOcr.extraEnvVariables` | Extra environment variables to add to LlamaParseOcr pods | `[]` |
|
||||
| `llamaParseOcr.volumeMounts` | List of volumeMounts that can be mounted by containers belonging to the pod | `[]` |
|
||||
| `llamaParseOcr.volumes` | List of volumes that can be mounted by containers belonging to the pod | `[]` |
|
||||
|
||||
### LlamaParse Layout Detection API Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
|
||||
| `llamaParseLayoutDetectionApi.horizontalPodAutoscalerSpec` | HorizontalPodAutoScaler configuration | `{}` |
|
||||
| `llamaParseLayoutDetectionApi.annotations` | Annotations added to the LlamaParseLayoutDetectionApi Deployment. | `{}` |
|
||||
| `llamaParseLayoutDetectionApi.image` | LlamaParseLayoutDetectionApi image | `docker.io/llamaindex/llamacloud-layout-detection-api:0.7.0` |
|
||||
| `llamaParseLayoutDetectionApi.imagePullPolicy` | LlamaParseLayoutDetectionApi image pull policy | `IfNotPresent` |
|
||||
| `llamaParseLayoutDetectionApi.securityContext` | Security context for the container | `{}` |
|
||||
| `llamaParseLayoutDetectionApi.serviceAccountAnnotations` | Annotations to add to the service account | `{}` |
|
||||
| `llamaParseLayoutDetectionApi.nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `llamaParseLayoutDetectionApi.tolerations` | Taints to tolerate on node assignment: | `[]` |
|
||||
| `llamaParseLayoutDetectionApi.affinity` | Pod scheduling constraints | `{}` |
|
||||
| `llamaParseLayoutDetectionApi.topologySpreadConstraints` | Topology Spread Constraints for LlamaParseLayoutDetectionApi pods | `[]` |
|
||||
| `llamaParseLayoutDetectionApi.podAnnotations` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `llamaParseLayoutDetectionApi.podSecurityContext` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `llamaParseLayoutDetectionApi.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` |
|
||||
| `llamaParseLayoutDetectionApi.extraEnvVariables` | Extra environment variables to add to LlamaParseLayoutDetectionApi pods | `[]` |
|
||||
| `llamaParseLayoutDetectionApi.volumeMounts` | List of volumeMounts that can be mounted by containers belonging to the pod | `[]` |
|
||||
| `llamaParseLayoutDetectionApi.volumes` | List of volumes that can be mounted by containers belonging to the pod | `[]` |
|
||||
|
||||
### LlamaParse Layout Detection API V3 Configuration (BYOC)
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- | -------------- |
|
||||
| `llamaParseLayoutDetectionApiV3.horizontalPodAutoscalerSpec` | HorizontalPodAutoScaler configuration | `{}` |
|
||||
| `llamaParseLayoutDetectionApiV3.annotations` | Annotations added to the LlamaParseLayoutDetectionApiV3 Deployment. | `{}` |
|
||||
| `llamaParseLayoutDetectionApiV3.image` | LlamaParseLayoutDetectionApiV3 image (RT-DETRv2 + figure classifier) | `""` |
|
||||
| `llamaParseLayoutDetectionApiV3.imagePullPolicy` | LlamaParseLayoutDetectionApiV3 image pull policy | `IfNotPresent` |
|
||||
| `llamaParseLayoutDetectionApiV3.securityContext` | Security context for the container | `{}` |
|
||||
| `llamaParseLayoutDetectionApiV3.serviceAccountAnnotations` | Annotations to add to the service account | `{}` |
|
||||
| `llamaParseLayoutDetectionApiV3.nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `llamaParseLayoutDetectionApiV3.tolerations` | Taints to tolerate on node assignment: | `[]` |
|
||||
| `llamaParseLayoutDetectionApiV3.affinity` | Pod scheduling constraints | `{}` |
|
||||
| `llamaParseLayoutDetectionApiV3.topologySpreadConstraints` | Topology Spread Constraints for LlamaParseLayoutDetectionApiV3 pods | `[]` |
|
||||
| `llamaParseLayoutDetectionApiV3.podAnnotations` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `llamaParseLayoutDetectionApiV3.podSecurityContext` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `llamaParseLayoutDetectionApiV3.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` |
|
||||
| `llamaParseLayoutDetectionApiV3.extraEnvVariables` | Extra environment variables to add to LlamaParseLayoutDetectionApiV3 pods | `[]` |
|
||||
| `llamaParseLayoutDetectionApiV3.volumeMounts` | List of volumeMounts that can be mounted by containers belonging to the pod | `[]` |
|
||||
| `llamaParseLayoutDetectionApiV3.volumes` | List of volumes that can be mounted by containers belonging to the pod | `[]` |
|
||||
|
||||
### Usage Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
|
||||
| `usage.horizontalPodAutoscalerSpec` | HorizontalPodAutoScaler configuration | `{}` |
|
||||
| `usage.annotations` | Annotations added to the LlamaParseLayoutDetectionApi Deployment. | `{}` |
|
||||
| `usage.image` | LlamaParseLayoutDetectionApi image | `docker.io/llamaindex/llamacloud-backend:0.7.0` |
|
||||
| `usage.imagePullPolicy` | LlamaParseLayoutDetectionApi image pull policy | `IfNotPresent` |
|
||||
| `usage.securityContext` | Security context for the container | `{}` |
|
||||
| `usage.serviceAccountAnnotations` | Annotations to add to the service account | `{}` |
|
||||
| `usage.nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `usage.tolerations` | Taints to tolerate on node assignment: | `[]` |
|
||||
| `usage.affinity` | Pod scheduling constraints | `{}` |
|
||||
| `usage.topologySpreadConstraints` | Topology Spread Constraints for usage pods | `[]` |
|
||||
| `usage.podAnnotations` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `usage.podSecurityContext` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `usage.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` |
|
||||
| `usage.extraEnvVariables` | Extra environment variables to add to LlamaParseLayoutDetectionApi pods | `[]` |
|
||||
| `usage.volumeMounts` | List of volumeMounts that can be mounted by containers belonging to the pod | `[]` |
|
||||
| `usage.volumes` | List of volumes that can be mounted by containers belonging to the pod | `[]` |
|
||||
|
||||
### Temporal Workloads Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
|
||||
| `temporalWorkloads.llamaParse.horizontalPodAutoscalerSpec` | HorizontalPodAutoScaler configuration | `{}` |
|
||||
| `temporalWorkloads.llamaParse.annotations` | Annotations added to the temporal llamaparse Deployment. | `{}` |
|
||||
| `temporalWorkloads.llamaParse.image` | temporal llamaparse image | `docker.io/llamaindex/llamacloud-llamaparse:0.7.0` |
|
||||
| `temporalWorkloads.llamaParse.imagePullPolicy` | temporal llamaparse image pull policy | `IfNotPresent` |
|
||||
| `temporalWorkloads.llamaParse.securityContext` | Security context for the container | `{}` |
|
||||
| `temporalWorkloads.llamaParse.serviceAccountAnnotations` | Annotations to add to the service account | `{}` |
|
||||
| `temporalWorkloads.llamaParse.nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `temporalWorkloads.llamaParse.tolerations` | Taints to tolerate on node assignment: | `[]` |
|
||||
| `temporalWorkloads.llamaParse.affinity` | Pod scheduling constraints | `{}` |
|
||||
| `temporalWorkloads.llamaParse.topologySpreadConstraints` | Topology Spread Constraints for temporal llamaparse pods | `[]` |
|
||||
| `temporalWorkloads.llamaParse.podAnnotations` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `temporalWorkloads.llamaParse.podSecurityContext` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `temporalWorkloads.llamaParse.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` |
|
||||
| `temporalWorkloads.llamaParse.extraEnvVariables` | Extra environment variables to add to temporal llamaparse pods | `[]` |
|
||||
| `temporalWorkloads.llamaParse.volumeMounts` | List of volumeMounts that can be mounted by containers belonging to the pod | `[]` |
|
||||
| `temporalWorkloads.llamaParse.volumes` | List of volumes that can be mounted by containers belonging to the pod | `[]` |
|
||||
| `temporalWorkloads.jobsService.horizontalPodAutoscalerSpec` | HorizontalPodAutoScaler configuration | `{}` |
|
||||
| `temporalWorkloads.jobsService.annotations` | Annotations added to the temporal jobsService Deployment. | `{}` |
|
||||
| `temporalWorkloads.jobsService.image` | temporal jobsService image | `docker.io/llamaindex/llamacloud-backend:0.7.0` |
|
||||
| `temporalWorkloads.jobsService.imagePullPolicy` | temporal jobsService image pull policy | `IfNotPresent` |
|
||||
| `temporalWorkloads.jobsService.securityContext` | Security context for the container | `{}` |
|
||||
| `temporalWorkloads.jobsService.serviceAccountAnnotations` | Annotations to add to the service account | `{}` |
|
||||
| `temporalWorkloads.jobsService.nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `temporalWorkloads.jobsService.tolerations` | Taints to tolerate on node assignment: | `[]` |
|
||||
| `temporalWorkloads.jobsService.affinity` | Pod scheduling constraints | `{}` |
|
||||
| `temporalWorkloads.jobsService.topologySpreadConstraints` | Topology Spread Constraints for temporal jobsService pods | `[]` |
|
||||
| `temporalWorkloads.jobsService.podAnnotations` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `temporalWorkloads.jobsService.podSecurityContext` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `temporalWorkloads.jobsService.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` |
|
||||
| `temporalWorkloads.jobsService.extraEnvVariables` | Extra environment variables to add to temporal jobsService pods | `[]` |
|
||||
| `temporalWorkloads.jobsService.volumeMounts` | List of volumeMounts that can be mounted by containers belonging to the pod | `[]` |
|
||||
| `temporalWorkloads.jobsService.volumes` | List of volumes that can be mounted by containers belonging to the pod | `[]` |
|
||||
|
||||
### Temporal Workers Configuration
|
||||
|
||||
| Name | Description | Value |
|
||||
| ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
|
||||
| `temporalWorkloads.workers.temporal-jobs-worker.horizontalPodAutoscalerSpec` | HorizontalPodAutoScaler configuration | `{}` |
|
||||
| `temporalWorkloads.workers.temporal-jobs-worker.annotations` | Annotations added to the temporal-jobs-worker Deployment. | `{}` |
|
||||
| `temporalWorkloads.workers.temporal-jobs-worker.image` | Frontend image | `docker.io/llamaindex/llamacloud-backend:0.7.0` |
|
||||
| `temporalWorkloads.workers.temporal-jobs-worker.imagePullPolicy` | Frontend image pull policy | `IfNotPresent` |
|
||||
| `temporalWorkloads.workers.temporal-jobs-worker.command` | Command to run in the container | `[]` |
|
||||
| `temporalWorkloads.workers.temporal-jobs-worker.securityContext` | Security context for the container | `{}` |
|
||||
| `temporalWorkloads.workers.temporal-jobs-worker.serviceAccountAnnotations` | Annotations to add to the service account | `{}` |
|
||||
| `temporalWorkloads.workers.temporal-jobs-worker.nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `temporalWorkloads.workers.temporal-jobs-worker.tolerations` | Taints to tolerate on node assignment: | `[]` |
|
||||
| `temporalWorkloads.workers.temporal-jobs-worker.affinity` | Pod scheduling constraints | `{}` |
|
||||
| `temporalWorkloads.workers.temporal-jobs-worker.topologySpreadConstraints` | Topology Spread Constraints for temporal-jobs-worker pods | `[]` |
|
||||
| `temporalWorkloads.workers.temporal-jobs-worker.podAnnotations` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `temporalWorkloads.workers.temporal-jobs-worker.podSecurityContext` | Annotations to add to the resulting Pods of the Deployment. | `{}` |
|
||||
| `temporalWorkloads.workers.temporal-jobs-worker.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` |
|
||||
| `temporalWorkloads.workers.temporal-jobs-worker.extraEnvVariables` | Extra environment variables to add to temporal-jobs-worker pods | `[]` |
|
||||
| `temporalWorkloads.workers.temporal-jobs-worker.volumeMounts` | List of volumeMounts that can be mounted by containers belonging to the pod | `[]` |
|
||||
| `temporalWorkloads.workers.temporal-jobs-worker.volumes` | List of volumes that can be mounted by containers belonging to the pod | `[]` |
|
||||
@@ -0,0 +1,22 @@
|
||||
# LlamaExtract
|
||||
|
||||
LlamaExtract is a component of LlamaCloud that enables you to extract structured data from unstructured documents. It is available as a web UI, a Python SDK, and a REST API.
|
||||
|
||||
For in-depth information about how LlamaExtract, please refer to our [public docs](https://docs.cloud.llamaindex.ai/llamaextract/getting_started).
|
||||
|
||||
## Setup
|
||||
|
||||
To enable LlamaExtract in your BYOC deployment, you'll need to do a few things:
|
||||
|
||||
- **Make sure your deployment is running version `0.3.0` or higher**
|
||||
- **Create a new LlamaExtract filestorage bucket in your cloud provider**
|
||||
- The bucket name LlamaCloud will store LlamaExtract specific files from is `llama-platform-extract-output`. This can be overriden by setting `.Values.global.config.llamaExtractOutputCloudBucketName` to your desired bucket name in your `values.yaml` file.
|
||||
- **Configure the backend pod LLM access**
|
||||
- If you haven't done this already to enable other LlamaCloud features, you'll need to do so now.
|
||||
- You will need to configure the `backend` sevice to have access to OpenAI's `gpt4o` model.
|
||||
- OpenAI credentials can be added at either `.Values.backend.config.openAiApiKey` or via a secret object reference at `.Values.backend.config.existingOpenAiApiKeySecretName`.
|
||||
- You can also configured Azure OpenAI credentials at `.Values.backend.config.azureOpenAi.enabled` with either static credentials at `.Values.backend.config.azureOpenAi.key` and `.Values.backend.config.azureOpenAi.endpoint` and other fields for the Azure OpenAI configuration or a secret object reference at `.Values.backend.config.azureOpenAi.existingSecret`.
|
||||
- **Configure LlamaParse LLM access**
|
||||
- Similarly to the backend pod, you'll need to configure the `llamaParse` service to have access to OpenAI, but this time for the `gpt4o-mini` model.
|
||||
- OpenAI credentials can be added at either `.Values.llamaParse.config.openAiApiKey` or via a secret object reference at `.Values.llamaParse.config.existingOpenAiApiKeySecretName`.
|
||||
- You can also configured Azure OpenAI credentials at `.Values.llamaParse.config.azureOpenAi.enabled` with either static credentials at `.Values.llamaParse.config.azureOpenAi.key` and `.Values.llamaParse.config.azureOpenAi.endpoint` and other fields for the Azure OpenAI configuration or a secret object reference at `.Values.llamaParse.config.azureOpenAi.existingSecret`.
|
||||
@@ -0,0 +1,92 @@
|
||||
# LlamaCloud Monitoring
|
||||
|
||||
LlamaCloud services expose metrics, which are collected by [Prometheus](https://prometheus.io) and visualized in [Grafana](https://grafana.com).
|
||||
|
||||
## Prerequisites
|
||||
|
||||
To monitor your LlamaCloud deployment, you'll need:
|
||||
|
||||
- [Prometheus](https://prometheus.io) - For metrics collection and storage
|
||||
- [Grafana](https://grafana.com) - For metrics visualization
|
||||
- [AlertManager](https://prometheus.io/docs/alerting/latest/alertmanager/) - For alert management
|
||||
|
||||
These services can be deployed using the [kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) Helm chart.
|
||||
|
||||
The kube-prometheus-stack Helm chart provides a complete monitoring solution that includes:
|
||||
|
||||
- Prometheus server for metrics collection
|
||||
- Grafana for visualization with pre-configured dashboards
|
||||
- AlertManager for handling alerts
|
||||
- Node exporter for hardware and OS metrics
|
||||
- kube-state-metrics for Kubernetes object metrics
|
||||
- Prometheus Operator for managing Prometheus instances
|
||||
|
||||
Here is a very basic example of how to deploy the kube-prometheus-stack Helm chart using the `kube-prometheus-stack-example-values.yaml` file located in this directory.
|
||||
|
||||
```bash
|
||||
helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack -f kube-prometheus-stack-example-values.yaml
|
||||
```
|
||||
|
||||
For more information about the kube-prometheus-stack Helm chart, please refer to the [kube-prometheus-stack README](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack).
|
||||
|
||||
## Metrics
|
||||
|
||||
The following services expose metrics:
|
||||
|
||||
- `backend`
|
||||
- `jobsService`
|
||||
- `jobsWorker`
|
||||
- `llamaParse`
|
||||
- `llamaParseOcr`
|
||||
|
||||
Metrics are scraped at the `/metrics` endpoint of each service.
|
||||
|
||||
To enable metrics for a service, you need to set the `metrics.enabled` parameter to `true` in the service's values.yaml file.
|
||||
|
||||
```yaml
|
||||
# example
|
||||
backend:
|
||||
metrics:
|
||||
enabled: true
|
||||
```
|
||||
|
||||
### ServiceMonitors
|
||||
|
||||
If using the Prometheus Operator, you can create a ServiceMontior to scrape the metrics from the service. This can be done by adding the following to the `values.yaml` file:
|
||||
|
||||
```yaml
|
||||
# example
|
||||
backend:
|
||||
metrics:
|
||||
enabled: true
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
```
|
||||
|
||||
## Dashboards
|
||||
|
||||
We have a couple of dashboards that are useful for monitoring LlamaCloud. These dashboards are starting points for monitoring your services. For production enviroments, we recommend extending these dashboards to better suit your needs.
|
||||
|
||||
- [LlamaCloud Dashboard](./llamacloud-dashboard.json)
|
||||
- [LlamaParse Dashboard](./llamaparse-dashboard.json)
|
||||
|
||||
The above json files can be imported into a Grafana instance. Feel free to refer to the [Grafana documentation](https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/import-dashboards/) for more information.
|
||||
|
||||
## Prometheus Alerts
|
||||
|
||||
Alerting is a crucial part of monitoring your LlamaCloud deployment, especially in production environments. These helm charts support the ability to directly define Prometheus rules in the `values.yaml` file.
|
||||
|
||||
```yaml
|
||||
# example
|
||||
backend:
|
||||
metrics:
|
||||
enabled: true
|
||||
rules:
|
||||
enabled: true
|
||||
spec:
|
||||
- alert: "Backend is down"
|
||||
expr: absent(up{job='backend'})
|
||||
for: 1m
|
||||
labels:
|
||||
severity: "critical"
|
||||
```
|
||||
@@ -0,0 +1,8 @@
|
||||
prometheus:
|
||||
enabled: true
|
||||
|
||||
grafana:
|
||||
enabled: true
|
||||
|
||||
alertmanager:
|
||||
enabled: true
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,659 @@
|
||||
{
|
||||
"annotations": {
|
||||
"list": [
|
||||
{
|
||||
"builtIn": 1,
|
||||
"datasource": {
|
||||
"type": "grafana",
|
||||
"uid": "-- Grafana --"
|
||||
},
|
||||
"enable": true,
|
||||
"hide": true,
|
||||
"iconColor": "rgba(0, 211, 255, 1)",
|
||||
"name": "Annotations & Alerts",
|
||||
"type": "dashboard"
|
||||
}
|
||||
]
|
||||
},
|
||||
"editable": true,
|
||||
"fiscalYearStartMonth": 0,
|
||||
"graphTooltip": 0,
|
||||
"id": 17483,
|
||||
"links": [],
|
||||
"panels": [
|
||||
|
||||
{
|
||||
"collapsed": false,
|
||||
"gridPos": {
|
||||
"h": 1,
|
||||
"w": 24,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"id": 2,
|
||||
"panels": [],
|
||||
"title": "File Ingestion Jobs",
|
||||
"type": "row"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "prometheus"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "palette-classic"
|
||||
},
|
||||
"custom": {
|
||||
"axisBorderShow": false,
|
||||
"axisCenteredZero": false,
|
||||
"axisColorMode": "text",
|
||||
"axisLabel": "",
|
||||
"axisPlacement": "auto",
|
||||
"barAlignment": 0,
|
||||
"drawStyle": "line",
|
||||
"fillOpacity": 0,
|
||||
"gradientMode": "none",
|
||||
"hideFrom": {
|
||||
"legend": false,
|
||||
"tooltip": false,
|
||||
"viz": false
|
||||
},
|
||||
"insertNulls": false,
|
||||
"lineInterpolation": "linear",
|
||||
"lineWidth": 1,
|
||||
"pointSize": 5,
|
||||
"scaleDistribution": {
|
||||
"type": "linear"
|
||||
},
|
||||
"showPoints": "auto",
|
||||
"spanNulls": false,
|
||||
"stacking": {
|
||||
"group": "A",
|
||||
"mode": "none"
|
||||
},
|
||||
"thresholdsStyle": {
|
||||
"mode": "off"
|
||||
}
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green",
|
||||
"value": null
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "none"
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 8,
|
||||
"w": 24,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
"id": 3,
|
||||
"options": {
|
||||
"legend": {
|
||||
"calcs": [
|
||||
"mean",
|
||||
"max"
|
||||
],
|
||||
"displayMode": "table",
|
||||
"placement": "right",
|
||||
"showLegend": true,
|
||||
"sortBy": "Max",
|
||||
"sortDesc": true
|
||||
},
|
||||
"tooltip": {
|
||||
"mode": "single",
|
||||
"sort": "none"
|
||||
}
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "prometheus"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"expr": "sum(increase(llamacloud_job_status_counter_total{job_name=~\".*data_source.*|.*file_updater.*|.*managed_ingestion.*\"}[$aggregation_period])) by (job_name, status)",
|
||||
"instant": false,
|
||||
"legendFormat": "{{job_name}}: {{status}}",
|
||||
"range": true,
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"title": "File Ingestion Job Status Count",
|
||||
"type": "timeseries"
|
||||
},
|
||||
{
|
||||
"collapsed": false,
|
||||
"gridPos": {
|
||||
"h": 1,
|
||||
"w": 24,
|
||||
"x": 0,
|
||||
"y": 9
|
||||
},
|
||||
"id": 4,
|
||||
"panels": [],
|
||||
"title": "Post-Parsing Processing Jobs",
|
||||
"type": "row"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "prometheus"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "palette-classic"
|
||||
},
|
||||
"custom": {
|
||||
"axisBorderShow": false,
|
||||
"axisCenteredZero": false,
|
||||
"axisColorMode": "text",
|
||||
"axisLabel": "",
|
||||
"axisPlacement": "auto",
|
||||
"barAlignment": 0,
|
||||
"drawStyle": "line",
|
||||
"fillOpacity": 0,
|
||||
"gradientMode": "none",
|
||||
"hideFrom": {
|
||||
"legend": false,
|
||||
"tooltip": false,
|
||||
"viz": false
|
||||
},
|
||||
"insertNulls": false,
|
||||
"lineInterpolation": "linear",
|
||||
"lineWidth": 1,
|
||||
"pointSize": 5,
|
||||
"scaleDistribution": {
|
||||
"type": "linear"
|
||||
},
|
||||
"showPoints": "auto",
|
||||
"spanNulls": false,
|
||||
"stacking": {
|
||||
"group": "A",
|
||||
"mode": "none"
|
||||
},
|
||||
"thresholdsStyle": {
|
||||
"mode": "off"
|
||||
}
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green",
|
||||
"value": null
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "none"
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 8,
|
||||
"w": 24,
|
||||
"x": 0,
|
||||
"y": 10
|
||||
},
|
||||
"id": 5,
|
||||
"options": {
|
||||
"legend": {
|
||||
"calcs": [
|
||||
"mean",
|
||||
"max"
|
||||
],
|
||||
"displayMode": "table",
|
||||
"placement": "right",
|
||||
"showLegend": true,
|
||||
"sortBy": "Max",
|
||||
"sortDesc": true
|
||||
},
|
||||
"tooltip": {
|
||||
"mode": "single",
|
||||
"sort": "none"
|
||||
}
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "prometheus"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"expr": "sum(increase(llamacloud_job_status_counter_total{job_name=~\".*llama_parse_transform.*\"}[$aggregation_period])) by (job_name, status)",
|
||||
"instant": false,
|
||||
"legendFormat": "{{job_name}}: {{status}}",
|
||||
"range": true,
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"title": "Post-Parsing Processing Job Status Count",
|
||||
"type": "timeseries"
|
||||
},
|
||||
{
|
||||
"collapsed": false,
|
||||
"gridPos": {
|
||||
"h": 1,
|
||||
"w": 24,
|
||||
"x": 0,
|
||||
"y": 18
|
||||
},
|
||||
"id": 6,
|
||||
"panels": [],
|
||||
"title": "Vector Transformation Jobs",
|
||||
"type": "row"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "prometheus"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "palette-classic"
|
||||
},
|
||||
"custom": {
|
||||
"axisBorderShow": false,
|
||||
"axisCenteredZero": false,
|
||||
"axisColorMode": "text",
|
||||
"axisLabel": "",
|
||||
"axisPlacement": "auto",
|
||||
"barAlignment": 0,
|
||||
"drawStyle": "line",
|
||||
"fillOpacity": 0,
|
||||
"gradientMode": "none",
|
||||
"hideFrom": {
|
||||
"legend": false,
|
||||
"tooltip": false,
|
||||
"viz": false
|
||||
},
|
||||
"insertNulls": false,
|
||||
"lineInterpolation": "linear",
|
||||
"lineWidth": 1,
|
||||
"pointSize": 5,
|
||||
"scaleDistribution": {
|
||||
"type": "linear"
|
||||
},
|
||||
"showPoints": "auto",
|
||||
"spanNulls": false,
|
||||
"stacking": {
|
||||
"group": "A",
|
||||
"mode": "none"
|
||||
},
|
||||
"thresholdsStyle": {
|
||||
"mode": "off"
|
||||
}
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green",
|
||||
"value": null
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "none"
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 8,
|
||||
"w": 24,
|
||||
"x": 0,
|
||||
"y": 19
|
||||
},
|
||||
"id": 7,
|
||||
"options": {
|
||||
"legend": {
|
||||
"calcs": [
|
||||
"mean",
|
||||
"max"
|
||||
],
|
||||
"displayMode": "table",
|
||||
"placement": "right",
|
||||
"showLegend": true,
|
||||
"sortBy": "Max",
|
||||
"sortDesc": true
|
||||
},
|
||||
"tooltip": {
|
||||
"mode": "single",
|
||||
"sort": "none"
|
||||
}
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "prometheus"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"expr": "sum(increase(llamacloud_job_status_counter_total{job_name=~\".*document_ingestion.*\"}[$aggregation_period])) by (job_name, status)",
|
||||
"instant": false,
|
||||
"legendFormat": "{{job_name}}: {{status}}",
|
||||
"range": true,
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"title": "Vector Transformation Job Status Count",
|
||||
"type": "timeseries"
|
||||
},
|
||||
{
|
||||
"collapsed": false,
|
||||
"gridPos": {
|
||||
"h": 1,
|
||||
"w": 24,
|
||||
"x": 0,
|
||||
"y": 27
|
||||
},
|
||||
"id": 8,
|
||||
"panels": [],
|
||||
"title": "All Jobs Overview",
|
||||
"type": "row"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "prometheus"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "palette-classic"
|
||||
},
|
||||
"custom": {
|
||||
"axisBorderShow": false,
|
||||
"axisCenteredZero": false,
|
||||
"axisColorMode": "text",
|
||||
"axisLabel": "",
|
||||
"axisPlacement": "auto",
|
||||
"barAlignment": 0,
|
||||
"drawStyle": "line",
|
||||
"fillOpacity": 0,
|
||||
"gradientMode": "none",
|
||||
"hideFrom": {
|
||||
"legend": false,
|
||||
"tooltip": false,
|
||||
"viz": false
|
||||
},
|
||||
"insertNulls": false,
|
||||
"lineInterpolation": "linear",
|
||||
"lineWidth": 1,
|
||||
"pointSize": 5,
|
||||
"scaleDistribution": {
|
||||
"type": "linear"
|
||||
},
|
||||
"showPoints": "auto",
|
||||
"spanNulls": false,
|
||||
"stacking": {
|
||||
"group": "A",
|
||||
"mode": "none"
|
||||
},
|
||||
"thresholdsStyle": {
|
||||
"mode": "off"
|
||||
}
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green",
|
||||
"value": null
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "none"
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 8,
|
||||
"w": 24,
|
||||
"x": 0,
|
||||
"y": 28
|
||||
},
|
||||
"id": 9,
|
||||
"options": {
|
||||
"legend": {
|
||||
"calcs": [],
|
||||
"displayMode": "list",
|
||||
"placement": "bottom",
|
||||
"showLegend": true
|
||||
},
|
||||
"tooltip": {
|
||||
"mode": "single",
|
||||
"sort": "none"
|
||||
}
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "prometheus"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"expr": "sum(increase(llamacloud_job_status_counter_total{}[$aggregation_period])) by (job_name, status)",
|
||||
"instant": false,
|
||||
"legendFormat": "{{job_name}}: {{status}}",
|
||||
"range": true,
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"title": "LlamaCloud Job Status Count (All Jobs)",
|
||||
"type": "timeseries"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "prometheus"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "palette-classic"
|
||||
},
|
||||
"custom": {
|
||||
"axisBorderShow": false,
|
||||
"axisCenteredZero": false,
|
||||
"axisColorMode": "text",
|
||||
"axisLabel": "",
|
||||
"axisPlacement": "auto",
|
||||
"barAlignment": 0,
|
||||
"drawStyle": "line",
|
||||
"fillOpacity": 0,
|
||||
"gradientMode": "none",
|
||||
"hideFrom": {
|
||||
"legend": false,
|
||||
"tooltip": false,
|
||||
"viz": false
|
||||
},
|
||||
"insertNulls": false,
|
||||
"lineInterpolation": "linear",
|
||||
"lineWidth": 1,
|
||||
"pointSize": 5,
|
||||
"scaleDistribution": {
|
||||
"type": "linear"
|
||||
},
|
||||
"showPoints": "auto",
|
||||
"spanNulls": false,
|
||||
"stacking": {
|
||||
"group": "A",
|
||||
"mode": "none"
|
||||
},
|
||||
"thresholdsStyle": {
|
||||
"mode": "off"
|
||||
}
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green",
|
||||
"value": null
|
||||
},
|
||||
{
|
||||
"color": "yellow",
|
||||
"value": 0.05
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 0.1
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "percentunit",
|
||||
"min": 0,
|
||||
"max": 1
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 8,
|
||||
"w": 24,
|
||||
"x": 0,
|
||||
"y": 36
|
||||
},
|
||||
"id": 10,
|
||||
"options": {
|
||||
"legend": {
|
||||
"calcs": [
|
||||
"mean",
|
||||
"max"
|
||||
],
|
||||
"displayMode": "table",
|
||||
"placement": "right",
|
||||
"showLegend": true,
|
||||
"sortBy": "Max",
|
||||
"sortDesc": true
|
||||
},
|
||||
"tooltip": {
|
||||
"mode": "single",
|
||||
"sort": "none"
|
||||
}
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "prometheus"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"expr": "sum(increase(llamacloud_job_status_counter_total{status=\"ERROR\"}[$aggregation_period])) by (job_name) / sum(increase(llamacloud_job_status_counter_total{}[$aggregation_period])) by (job_name)",
|
||||
"instant": false,
|
||||
"legendFormat": "{{job_name}}",
|
||||
"range": true,
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"title": "Job Failure Rate (0-100%) - Count-based",
|
||||
"type": "timeseries"
|
||||
}
|
||||
],
|
||||
"schemaVersion": 39,
|
||||
"tags": ["llamacloud", "indexing", "byoc"],
|
||||
"templating": {
|
||||
"list": [
|
||||
{
|
||||
"current": {
|
||||
"selected": false,
|
||||
"text": "5m",
|
||||
"value": "5m"
|
||||
},
|
||||
"datasource": {
|
||||
"type": "grafana",
|
||||
"uid": "-- Grafana --"
|
||||
},
|
||||
"definition": "",
|
||||
"hide": 0,
|
||||
"includeAll": false,
|
||||
"label": "Aggregation Period",
|
||||
"multi": false,
|
||||
"name": "aggregation_period",
|
||||
"options": [
|
||||
{
|
||||
"selected": false,
|
||||
"text": "1m",
|
||||
"value": "1m"
|
||||
},
|
||||
{
|
||||
"selected": false,
|
||||
"text": "2m",
|
||||
"value": "2m"
|
||||
},
|
||||
{
|
||||
"selected": false,
|
||||
"text": "5m",
|
||||
"value": "5m"
|
||||
},
|
||||
{
|
||||
"selected": false,
|
||||
"text": "10m",
|
||||
"value": "10m"
|
||||
},
|
||||
{
|
||||
"selected": false,
|
||||
"text": "15m",
|
||||
"value": "15m"
|
||||
},
|
||||
{
|
||||
"selected": false,
|
||||
"text": "30m",
|
||||
"value": "30m"
|
||||
},
|
||||
{
|
||||
"selected": false,
|
||||
"text": "1h",
|
||||
"value": "1h"
|
||||
}
|
||||
],
|
||||
"query": "1m,2m,5m,10m,15m,30m,1h",
|
||||
"queryValue": "",
|
||||
"skipUrlSync": false,
|
||||
"sort": 0,
|
||||
"type": "custom"
|
||||
}
|
||||
]
|
||||
},
|
||||
"time": {
|
||||
"from": "now-3h",
|
||||
"to": "now"
|
||||
},
|
||||
"timepicker": {},
|
||||
"timezone": "browser",
|
||||
"title": "LlamaCloud Indexing BYOC Metrics",
|
||||
"uid": "llamacloud-indexing-byoc",
|
||||
"version": 1,
|
||||
"weekStart": ""
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,79 @@
|
||||
# Deploying LlamaCloud with S3Proxy
|
||||
|
||||
The LlamaCloud Helm Chart supports the service [s3proxy](https://github.com/gaul/s3proxy) as a way to connect LlamaCloud services to different cloud filestores. There are a few ways to configure this service in the charts. The following examples will show you how to configure s3proxy to proxy to AWS S3 requests to the Azure Blob Storage.
|
||||
|
||||
## 1. Configure directly in the values.yaml
|
||||
|
||||
Inside the `values.yaml`, there is a field, `.Values.s3proxy.config`, where you can provide the configurations directly.
|
||||
|
||||
```yaml
|
||||
s3proxy:
|
||||
enabled: true
|
||||
|
||||
config:
|
||||
S3PROXY_ENDPOINT: "http://0.0.0.0:80"
|
||||
S3PROXY_AUTHORIZATION: "none"
|
||||
JCLOUDS_PROVIDER: "azureblob"
|
||||
JCLOUDS_AZUREBLOB_AUTH: "azureKey"
|
||||
JCLOUD_REGION: "<azure-region>"
|
||||
JCLOUDS_IDENTITY: "<azure-storage-account-name>"
|
||||
JCLOUDS_CREDENTIAL: "<azure-storage-account-key>"
|
||||
JCLOUDS_ENDPOINT: "<azure-storage-account-endpoint>"
|
||||
|
||||
```
|
||||
|
||||
## 2. Use an existing secret or configmap
|
||||
|
||||
The `values.yaml` provides a way to pass in an existing secret or configmap with the necessary configuration
|
||||
|
||||
```yaml
|
||||
# existing-secret.yaml
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: existing-s3proxy-secret
|
||||
data:
|
||||
S3PROXY_ENDPOINT: "http://0.0.0.0:80"
|
||||
S3PROXY_AUTHORIZATION: "none"
|
||||
JCLOUDS_PROVIDER: "azureblob"
|
||||
JCLOUDS_AZUREBLOB_AUTH: "azureKey"
|
||||
JCLOUD_REGION: "<azure-region>"
|
||||
JCLOUDS_IDENTITY: "<azure-storage-account-name>"
|
||||
JCLOUDS_CREDENTIAL: "<azure-storage-account-key>"
|
||||
JCLOUDS_ENDPOINT: "<azure-storage-account-endpoint>"
|
||||
|
||||
|
||||
# values.yaml
|
||||
s3proxy:
|
||||
enabled: true
|
||||
|
||||
envFromSecretName: existing-s3proxy-secret
|
||||
```
|
||||
|
||||
## 3. Configure extra environment variables
|
||||
|
||||
The `values.yaml` also supports an `extraEnvVariables` field that adds envariable variable configuration to the s3proxy Deployment object.
|
||||
|
||||
```yaml
|
||||
# values.yaml
|
||||
s3proxy:
|
||||
enabled: true
|
||||
|
||||
extraEnvVariables:
|
||||
- name: S3PROXY_ENDPOINT
|
||||
value: "http://0.0.0.0:80"
|
||||
- name: JCLOUDS_CREDENTIAL
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: azure-secret
|
||||
key: storage-account-key
|
||||
- name: OTHER_VARIABLES
|
||||
value: "other values"
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
For more information, please refer to the following:
|
||||
|
||||
- [S3 Proxy Config Examples](https://github.com/gaul/s3proxy/wiki/Storage-backend-examples)
|
||||
- [Dockerfile with Env Vars](https://github.com/gaul/s3proxy/blob/master/Dockerfile)
|
||||
@@ -0,0 +1,160 @@
|
||||
# This example shows how to configure autoscaling for the LlamaCloud platform.
|
||||
# It is used in the `values.yaml` file for each component.
|
||||
|
||||
# Autoscaling is enabled by default for llamaParse and llamaParseOcr given the nature of their workloads.
|
||||
# To disable autoscaling for a component, set the horizontalPodAutoscalerSpec to an empty object {}.
|
||||
|
||||
license:
|
||||
key: "<REPLACE-WITH-LLAMACLOUD-LICENSE-KEY>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
# Connection details for required services
|
||||
postgresql:
|
||||
host: "<REPLACE-WITH-POSTGRESQL-HOST>"
|
||||
port: "5432"
|
||||
database: "<REPLACE-WITH-DATABASE-NAME>"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
mongodb:
|
||||
host: "<REPLACE-WITH-MONGODB-HOST>"
|
||||
port: "27017"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
rabbitmq:
|
||||
host: "<REPLACE-WITH-RABBITMQ-HOST>"
|
||||
port: "5672"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
redis:
|
||||
host: "<REPLACE-WITH-REDIS-HOST>"
|
||||
port: "6379"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
config:
|
||||
llms:
|
||||
openAi:
|
||||
apiKey: "<REPLACE-WITH-OPENAI-API-KEY>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
authentication:
|
||||
oidc:
|
||||
enabled: true
|
||||
discoveryUrl: "https://login.microsoftonline.com/<your-tenant-id>/v2.0/.well-known/openid-configuration"
|
||||
clientId: "your-client-id"
|
||||
clientSecret: "your-client-secret"
|
||||
# secret: "oidc-secret"
|
||||
|
||||
backend:
|
||||
horizontalPodAutoscalerSpec:
|
||||
minReplicas: 1
|
||||
maxReplicas: 8
|
||||
metrics:
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
|
||||
jobsService:
|
||||
horizontalPodAutoscalerSpec:
|
||||
minReplicas: 1
|
||||
maxReplicas: 4
|
||||
metrics:
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
|
||||
jobsWorker:
|
||||
horizontalPodAutoscalerSpec:
|
||||
minReplicas: 1
|
||||
maxReplicas: 4
|
||||
metrics:
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
|
||||
llamaParse:
|
||||
horizontalPodAutoscalerSpec:
|
||||
minReplicas: 2
|
||||
maxReplicas: 10
|
||||
metrics:
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
|
||||
llamaParseOcr:
|
||||
horizontalPodAutoscalerSpec:
|
||||
minReplicas: 2
|
||||
maxReplicas: 10
|
||||
metrics:
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
|
||||
usage:
|
||||
horizontalPodAutoscalerSpec:
|
||||
minReplicas: 1
|
||||
maxReplicas: 4
|
||||
metrics:
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
@@ -0,0 +1,51 @@
|
||||
license:
|
||||
key: "<REPLACE-WITH-LLAMACLOUD-LICENSE-KEY>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
# Connection details for required services
|
||||
postgresql:
|
||||
host: "<REPLACE-WITH-POSTGRESQL-HOST>"
|
||||
port: "5432"
|
||||
database: "<REPLACE-WITH-DATABASE-NAME>"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
mongodb:
|
||||
host: "<REPLACE-WITH-MONGODB-HOST>"
|
||||
port: "27017"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
rabbitmq:
|
||||
host: "<REPLACE-WITH-RABBITMQ-HOST>"
|
||||
port: "5672"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
redis:
|
||||
host: "<REPLACE-WITH-REDIS-HOST>"
|
||||
port: "6379"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
config:
|
||||
llms:
|
||||
azureOpenAi:
|
||||
deployments:
|
||||
- model: "gpt-4o"
|
||||
apiKey: "<REPLACE-WITH-AZURE-OPENAI-API-KEY>"
|
||||
baseUrl: "<REPLACE-WITH-AZURE-OPENAI-ENDPOINT>"
|
||||
deploymentName: "<REPLACE-WITH-AZURE-OPENAI-DEPLOYMENT-NAME>"
|
||||
apiVersion: "<REPLACE-WITH-AZURE-OPENAI-API-VERSION>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
authentication:
|
||||
oidc:
|
||||
enabled: true
|
||||
discoveryUrl: "https://login.microsoftonline.com/your-tenant-id/oauth2/v2.0/token"
|
||||
clientId: "your-client-id"
|
||||
clientSecret: "your-client-secret"
|
||||
# secret: "oidc-secret"
|
||||
@@ -0,0 +1,46 @@
|
||||
license:
|
||||
key: "<REPLACE-WITH-LLAMACLOUD-LICENSE-KEY>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
# Connection details for required services
|
||||
postgresql:
|
||||
host: "<REPLACE-WITH-POSTGRESQL-HOST>"
|
||||
port: "5432"
|
||||
database: "<REPLACE-WITH-DATABASE-NAME>"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
mongodb:
|
||||
host: "<REPLACE-WITH-MONGODB-HOST>"
|
||||
port: "27017"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
rabbitmq:
|
||||
host: "<REPLACE-WITH-RABBITMQ-HOST>"
|
||||
port: "5672"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
redis:
|
||||
host: "<REPLACE-WITH-REDIS-HOST>"
|
||||
port: "6379"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
config:
|
||||
llms:
|
||||
openAi:
|
||||
apiKey: "<REPLACE-WITH-OPENAI-API-KEY>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
authentication:
|
||||
oidc:
|
||||
enabled: true
|
||||
discoveryUrl: "https://login.microsoftonline.com/<your-tenant-id>/v2.0/.well-known/openid-configuration"
|
||||
clientId: "your-client-id"
|
||||
clientSecret: "your-client-secret"
|
||||
# secret: "oidc-secret"
|
||||
@@ -0,0 +1,52 @@
|
||||
license:
|
||||
key: "<REPLACE-WITH-LLAMACLOUD-LICENSE-KEY>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
# Connection details for required services
|
||||
postgresql:
|
||||
host: "<REPLACE-WITH-POSTGRESQL-HOST>"
|
||||
port: "5432"
|
||||
database: "<REPLACE-WITH-DATABASE-NAME>"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
mongodb:
|
||||
host: "<REPLACE-WITH-MONGODB-HOST>"
|
||||
port: "27017"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
rabbitmq:
|
||||
host: "<REPLACE-WITH-RABBITMQ-HOST>"
|
||||
port: "5672"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
redis:
|
||||
host: "<REPLACE-WITH-REDIS-HOST>"
|
||||
port: "6379"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
host: "llamacloud.example.com"
|
||||
tlsSecretName: "llamacloud-example-tls-secret"
|
||||
ingressClassName: "default-ingress-class"
|
||||
|
||||
config:
|
||||
llms:
|
||||
openAi:
|
||||
apiKey: "<REPLACE-WITH-OPENAI-API-KEY>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
authentication:
|
||||
oidc:
|
||||
enabled: true
|
||||
discoveryUrl: "https://login.microsoftonline.com/<your-tenant-id>/v2.0/.well-known/openid-configuration"
|
||||
clientId: "your-client-id"
|
||||
clientSecret: "your-client-secret"
|
||||
# secret: "oidc-secret"
|
||||
@@ -0,0 +1,42 @@
|
||||
license:
|
||||
key: "<input-license-key-here>"
|
||||
# secret: ""
|
||||
|
||||
# Connection details for required services
|
||||
postgresql:
|
||||
host: "<REPLACE-WITH-POSTGRESQL-HOST>"
|
||||
port: "5432"
|
||||
database: "<REPLACE-WITH-DATABASE-NAME>"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
mongodb:
|
||||
host: "<REPLACE-WITH-MONGODB-HOST>"
|
||||
port: "27017"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
rabbitmq:
|
||||
host: "<REPLACE-WITH-RABBITMQ-HOST>"
|
||||
port: "5672"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
redis:
|
||||
host: "<REPLACE-WITH-REDIS-HOST>"
|
||||
port: "6379"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
config:
|
||||
storageBuckets:
|
||||
parsedDocuments: "<your-bucket-name>"
|
||||
parsedEtl: "<your-bucket-name>"
|
||||
parsedExternalComponents: "<your-bucket-name>"
|
||||
parsedFileParsing: "<your-bucket-name>"
|
||||
parsedRawFile: "<your-bucket-name>"
|
||||
parseOutput: "<your-bucket-name>"
|
||||
parsedFileScreenshot: "<your-bucket-name>"
|
||||
@@ -0,0 +1,68 @@
|
||||
# This example shows a full configuration for the LlamaCloud platform on Azure.
|
||||
# It shows how to configure the platform to use Azure OpenAI and Azure Blob Storage (using s3proxy).
|
||||
# We currently do not have native support for non-S3 filestores in LlamaCloud at the moment.
|
||||
|
||||
license:
|
||||
key: "<contact-support-for-key>"
|
||||
|
||||
# Connection details for required services
|
||||
postgresql:
|
||||
host: "<REPLACE-WITH-POSTGRESQL-HOST>"
|
||||
port: "5432"
|
||||
database: "<REPLACE-WITH-DATABASE-NAME>"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
mongodb:
|
||||
host: "<REPLACE-WITH-MONGODB-HOST>"
|
||||
port: "27017"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
rabbitmq:
|
||||
host: "<REPLACE-WITH-RABBITMQ-HOST>"
|
||||
port: "5672"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
redis:
|
||||
host: "<REPLACE-WITH-REDIS-HOST>"
|
||||
port: "6379"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
config:
|
||||
authentication:
|
||||
oidc:
|
||||
enabled: true
|
||||
discoveryUrl: "fill-out"
|
||||
clientId: "fill-out"
|
||||
clientSecret: "fill-out"
|
||||
|
||||
llms:
|
||||
azureOpenAi:
|
||||
deployments:
|
||||
- model: "gpt-4o"
|
||||
apiKey: "fill-out"
|
||||
baseUrl: "fill-out"
|
||||
deploymentName: "fill-out"
|
||||
apiVersion: "fill-out"
|
||||
|
||||
storageBuckets:
|
||||
provider: "azure"
|
||||
|
||||
s3proxy:
|
||||
config:
|
||||
S3PROXY_ENDPOINT: "http://0.0.0.0:80"
|
||||
S3PROXY_AUTHORIZATION: "none"
|
||||
S3PROXY_IGNORE_UNKNOWN_HEADERS: "true"
|
||||
S3PROXY_CORS_ALLOW_ORIGINS: "*"
|
||||
JCLOUDS_PROVIDER: "azureblob"
|
||||
JCLOUD_REGION: "eastus"
|
||||
JCLOUDS_AZUREBLOB_AUTH: "azureKey"
|
||||
JCLOUDS_IDENTITY: "fill-out"
|
||||
JCLOUDS_CREDENTIAL: "fill-out"
|
||||
JCLOUDS_ENDPOINT: "fill-out"
|
||||
@@ -0,0 +1,111 @@
|
||||
license:
|
||||
key: "<REPLACE-WITH-LLAMACLOUD-LICENSE-KEY>"
|
||||
|
||||
# Connection details for required services
|
||||
postgresql:
|
||||
host: "<REPLACE-WITH-POSTGRESQL-HOST>"
|
||||
port: "5432"
|
||||
database: "<REPLACE-WITH-DATABASE-NAME>"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
mongodb:
|
||||
host: "<REPLACE-WITH-MONGODB-HOST>"
|
||||
port: "27017"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
rabbitmq:
|
||||
host: "<REPLACE-WITH-RABBITMQ-HOST>"
|
||||
port: "5672"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
redis:
|
||||
host: "<REPLACE-WITH-REDIS-HOST>"
|
||||
port: "6379"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
config:
|
||||
authentication:
|
||||
oidc:
|
||||
enabled: true
|
||||
discoveryUrl: "https://login.microsoftonline.com/<your-tenant-id>/v2.0/.well-known/openid-configuration"
|
||||
clientId: "your-client-id"
|
||||
clientSecret: "your-client-secret"
|
||||
# secret: "oidc-secret"
|
||||
|
||||
llms:
|
||||
openAi:
|
||||
apiKey: "<REPLACE-WITH-OPENAI-API-KEY>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
anthropic:
|
||||
apiKey: "<REPLACE-WITH-ANTHROPIC-API-KEY>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
gemini:
|
||||
apiKey: "<REPLACE-WITH-GEMINI-API-KEY>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
azureOpenAi:
|
||||
deployments:
|
||||
- model: "gpt-4o"
|
||||
apiKey: "test-api-key"
|
||||
baseUrl: "https://api.openai.com/v1"
|
||||
apiVersion: "2024-08-06"
|
||||
deploymentName: "gpt-4o"
|
||||
- model: "gpt-4o-mini"
|
||||
apiKey: "test-api-key"
|
||||
baseUrl: "https://api.openai.com/v1"
|
||||
apiVersion: "2024-08-06"
|
||||
deploymentName: "gpt-4o-mini"
|
||||
- model: "gpt-4.1"
|
||||
apiKey: "test-api-key"
|
||||
baseUrl: "https://api.openai.com/v1"
|
||||
apiVersion: "2024-08-06"
|
||||
deploymentName: "gpt-4.1"
|
||||
- model: "gpt-4.1-mini"
|
||||
apiKey: "test-api-key"
|
||||
baseUrl: "https://api.openai.com/v1"
|
||||
apiVersion: "2024-08-06"
|
||||
deploymentName: "gpt-4.1-mini"
|
||||
- model: "gpt-4.1-nano"
|
||||
apiKey: "test-api-key"
|
||||
baseUrl: "https://api.openai.com/v1"
|
||||
apiVersion: "2024-08-06"
|
||||
deploymentName: "gpt-4.1-nano"
|
||||
- model: "gpt-5"
|
||||
apiKey: "test-api-key"
|
||||
baseUrl: "https://api.openai.com/v1"
|
||||
apiVersion: "2024-08-06"
|
||||
deploymentName: "gpt-5"
|
||||
- model: "gpt-5-mini"
|
||||
apiKey: "test-api-key"
|
||||
baseUrl: "https://api.openai.com/v1"
|
||||
apiVersion: "2024-08-06"
|
||||
deploymentName: "gpt-5-mini"
|
||||
- model: "gpt-5-nano"
|
||||
apiKey: "test-api-key"
|
||||
baseUrl: "https://api.openai.com/v1"
|
||||
apiVersion: "2024-08-06"
|
||||
deploymentName: "gpt-5-nano"
|
||||
|
||||
googleVertexAi:
|
||||
projectId: "<REPLACE-WITH-GOOGLE-VERTEX-AI-PROJECT-ID>"
|
||||
location: "<REPLACE-WITH-GOOGLE-VERTEX-AI-LOCATION>"
|
||||
credentialsJson: "<REPLACE-WITH-GOOGLE-VERTEX-AI-CREDENTIALS-JSON>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
awsBedrock:
|
||||
region: "<REPLACE-WITH-AWS-BEDROCK-REGION>"
|
||||
accessKeyId: "<REPLACE-WITH-AWS-BEDROCK-ACCESS-KEY-ID>"
|
||||
secretAccessKey: "<REPLACE-WITH-AWS-BEDROCK-SECRET-ACCESS-KEY>"
|
||||
sonnet3_5ModelVersionName: "<REPLACE-WITH-AWS-BEDROCK-SONNET-3-5-MODEL-VERSION-NAME>"
|
||||
sonnet3_7ModelVersionName: "<REPLACE-WITH-AWS-BEDROCK-SONNET-3-7-MODEL-VERSION-NAME>"
|
||||
sonnet4_0ModelVersionName: "<REPLACE-WITH-AWS-BEDROCK-SONNET-4-0-MODEL-VERSION-NAME>"
|
||||
haiku3_5_ModelVersionName: "<REPLACE-WITH-AWS-BEDROCK-HAIKU-3-5-MODEL-VERSION-NAME>"
|
||||
@@ -0,0 +1,408 @@
|
||||
# LlamaCloud Local Quickstart with AWS S3
|
||||
|
||||
This example demonstrates how to deploy LlamaCloud locally using AWS S3 for storage. It provides a minimal configuration for quickly getting started with LlamaCloud on your local machine or development environment.
|
||||
|
||||
## Overview
|
||||
|
||||
This deployment configuration includes:
|
||||
- Local infrastructure services (PostgreSQL, MongoDB, RabbitMQ, Redis, Temporal)
|
||||
- AWS S3 for object storage (parsed documents, files, outputs)
|
||||
- OIDC authentication support
|
||||
- Optional LLM provider integrations
|
||||
- Nginx ingress for local access
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Kubernetes cluster (local or remote)
|
||||
- Helm 3.x installed
|
||||
- AWS account with S3 bucket access
|
||||
- LlamaCloud license key
|
||||
- OIDC provider (e.g., Auth0, Okta, Google) for authentication
|
||||
- Docker for Desktop with kubernetes enabled (set resources to max values in settings)
|
||||
|
||||
## Configuration Guide
|
||||
|
||||
The `values.yaml` file contains several configuration blocks that need to be customized for your deployment. Below is a comprehensive guide organized by section.
|
||||
|
||||
### Required Configuration Blocks
|
||||
|
||||
These sections contain `<REPLACE>` placeholders that **must** be filled in before deployment.
|
||||
|
||||
#### License Key (Required)
|
||||
|
||||
```yaml
|
||||
license:
|
||||
key: "<REPLACE>"
|
||||
```
|
||||
|
||||
**Instructions:**
|
||||
- Replace `<REPLACE>` with your LlamaCloud license key
|
||||
- Obtain a license key from [LlamaIndex](https://www.llamaindex.ai)
|
||||
|
||||
#### Authentication (Required)
|
||||
|
||||
```yaml
|
||||
config:
|
||||
authentication:
|
||||
oidc:
|
||||
enabled: true
|
||||
discoveryUrl: "<REPLACE>"
|
||||
clientId: "<REPLACE>"
|
||||
clientSecret: "<REPLACE>"
|
||||
```
|
||||
|
||||
**Instructions:**
|
||||
- Replace `discoveryUrl` with your OIDC provider's discovery endpoint (e.g., `https://your-domain.auth0.com/.well-known/openid-configuration`)
|
||||
- Replace `clientId` with your OIDC application/client ID
|
||||
- Replace `clientSecret` with your OIDC application/client secret
|
||||
|
||||
#### Storage Buckets (Required)
|
||||
|
||||
```yaml
|
||||
config:
|
||||
storageBuckets:
|
||||
provider: "aws"
|
||||
parsedDocuments: "<REPLACE>"
|
||||
parsedEtl: "<REPLACE>"
|
||||
parsedExternalComponents: "<REPLACE>"
|
||||
parsedFileParsing: "<REPLACE>"
|
||||
parsedRawFile: "<REPLACE>"
|
||||
parseOutput: "<REPLACE>"
|
||||
parsedFileScreenshot: "<REPLACE>"
|
||||
extractOutput: "<REPLACE>"
|
||||
parseFileUpload: "<REPLACE>"
|
||||
parseFileOutput: "<REPLACE>"
|
||||
```
|
||||
|
||||
**Instructions:**
|
||||
- Replace each `<REPLACE>` with your AWS S3 bucket names
|
||||
- You can use the same bucket for all, or separate buckets for each purpose
|
||||
- Example: `s3://my-llamacloud-bucket` or just `my-llamacloud-bucket`
|
||||
- Ensure your AWS credentials have read/write access to these buckets
|
||||
|
||||
#### AWS Credentials (Required)
|
||||
|
||||
The following services require AWS credentials to access S3:
|
||||
|
||||
```yaml
|
||||
backend:
|
||||
extraEnvVariables:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
value: "<REPLACE>"
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
value: "<REPLACE>"
|
||||
|
||||
jobsService:
|
||||
extraEnvVariables:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
value: "<REPLACE>"
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
value: "<REPLACE>"
|
||||
|
||||
jobsWorker:
|
||||
extraEnvVariables:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
value: "<REPLACE>"
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
value: "<REPLACE>"
|
||||
|
||||
llamaParse:
|
||||
extraEnvVariables:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
value: "<REPLACE>"
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
value: "<REPLACE>"
|
||||
|
||||
llamaParseOcr:
|
||||
extraEnvVariables:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
value: "<REPLACE>"
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
value: "<REPLACE>"
|
||||
|
||||
llamaParseLayoutDetectionApi:
|
||||
extraEnvVariables:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
value: "<REPLACE>"
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
value: "<REPLACE>"
|
||||
|
||||
temporalWorkloads:
|
||||
llamaParse:
|
||||
extraEnvVariables:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
value: "<REPLACE>"
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
value: "<REPLACE>"
|
||||
|
||||
jobsService:
|
||||
extraEnvVariables:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
value: "<REPLACE>"
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
value: "<REPLACE>"
|
||||
|
||||
workers:
|
||||
temporal-jobs-worker:
|
||||
extraEnvVariables:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
value: "<REPLACE>"
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
value: "<REPLACE>"
|
||||
```
|
||||
|
||||
**Instructions:**
|
||||
- Replace all AWS credential placeholders with your AWS access key ID and secret access key
|
||||
- Ensure the IAM user/role has appropriate S3 permissions
|
||||
- **Security Warning:** For production deployments, use Kubernetes secrets or a secret management solution instead of hardcoded credentials
|
||||
|
||||
### Optional Configuration Blocks
|
||||
|
||||
These sections contain `<REPLACE_OR_REMOVE>` placeholders. These blocks are **entirely optional** and can be removed if you don't plan to use them.
|
||||
|
||||
#### OpenAI (Optional)
|
||||
|
||||
```yaml
|
||||
config:
|
||||
llms:
|
||||
openAi:
|
||||
apiKey: "<REPLACE_OR_REMOVE>"
|
||||
```
|
||||
|
||||
**Instructions:**
|
||||
- **Optional:** This block can be completely removed if you don't plan to use OpenAI models
|
||||
- If using OpenAI, replace with your OpenAI API key from [platform.openai.com](https://platform.openai.com)
|
||||
|
||||
#### Anthropic (Optional)
|
||||
|
||||
```yaml
|
||||
config:
|
||||
llms:
|
||||
anthropic:
|
||||
apiKey: "<REPLACE_OR_REMOVE>"
|
||||
```
|
||||
|
||||
**Instructions:**
|
||||
- **Optional:** This block can be completely removed if you don't plan to use Anthropic models
|
||||
- If using Anthropic, replace with your Anthropic API key from [console.anthropic.com](https://console.anthropic.com)
|
||||
|
||||
#### Google Gemini (Optional)
|
||||
|
||||
```yaml
|
||||
config:
|
||||
llms:
|
||||
gemini:
|
||||
apiKey: "<REPLACE_OR_REMOVE>"
|
||||
```
|
||||
|
||||
**Instructions:**
|
||||
- **Optional:** This block can be completely removed if you don't plan to use Google Gemini models
|
||||
- If using Gemini, replace with your Google AI API key from [makersuite.google.com](https://makersuite.google.com)
|
||||
|
||||
#### Azure OpenAI (Optional)
|
||||
|
||||
```yaml
|
||||
config:
|
||||
llms:
|
||||
azureOpenAi:
|
||||
deployments:
|
||||
- model: "gpt-4.1"
|
||||
deploymentName: "gpt-4.1"
|
||||
apiKey: "<REPLACE_OR_REMOVE>"
|
||||
baseUrl: "<REPLACE_OR_REMOVE>"
|
||||
apiVersion: "2024-12-01-preview"
|
||||
# ... additional deployments
|
||||
```
|
||||
|
||||
**Instructions:**
|
||||
- **Optional:** This entire `azureOpenAi` section can be removed if you're not using Azure OpenAI
|
||||
- If using Azure OpenAI, for each deployment you want to use:
|
||||
- Replace `apiKey` with your Azure OpenAI API key
|
||||
- Replace `baseUrl` with your Azure OpenAI endpoint (e.g., `https://your-resource.openai.azure.com`)
|
||||
- Remove unused deployment configurations
|
||||
- Update model names to match your Azure deployments
|
||||
|
||||
#### AWS Bedrock (Optional)
|
||||
|
||||
```yaml
|
||||
config:
|
||||
llms:
|
||||
awsBedrock:
|
||||
region: "<REPLACE_OR_REMOVE>"
|
||||
accessKeyId: "<REPLACE_OR_REMOVE>"
|
||||
secretAccessKey: "<REPLACE_OR_REMOVE>"
|
||||
sonnet3_5ModelVersionName: "anthropic.claude-3-5-sonnet-20240620-v1:0"
|
||||
# ... additional model configurations
|
||||
```
|
||||
|
||||
**Instructions:**
|
||||
- **Optional:** This entire `awsBedrock` section can be removed if you're not using AWS Bedrock
|
||||
- If using AWS Bedrock:
|
||||
- Replace `region` with your AWS region (e.g., `us-east-1`)
|
||||
- Replace `accessKeyId` with your AWS access key ID
|
||||
- Replace `secretAccessKey` with your AWS secret access key
|
||||
- Adjust model version names as needed for your Bedrock configuration
|
||||
|
||||
#### Google Vertex AI (Optional)
|
||||
|
||||
```yaml
|
||||
config:
|
||||
llms:
|
||||
googleVertexAi:
|
||||
projectId: "<REPLACE_OR_REMOVE>"
|
||||
location: "<REPLACE_OR_REMOVE>"
|
||||
credentialsJson: '<REPLACE_OR_REMOVE>'
|
||||
```
|
||||
|
||||
**Instructions:**
|
||||
- **Optional:** This entire `googleVertexAi` section can be removed if you're not using Google Vertex AI
|
||||
- If using Vertex AI:
|
||||
- Replace `projectId` with your Google Cloud project ID
|
||||
- Replace `location` with your preferred region (e.g., `us-central1`)
|
||||
- Replace `credentialsJson` with your service account JSON key (properly escaped)
|
||||
|
||||
### Pre-configured Infrastructure Services
|
||||
|
||||
The following services are pre-configured for local development and typically don't require changes:
|
||||
|
||||
#### PostgreSQL
|
||||
```yaml
|
||||
postgresql:
|
||||
host: "postgresql"
|
||||
port: "5432"
|
||||
database: "llamacloud"
|
||||
username: "llamacloud"
|
||||
password: "llamacloud"
|
||||
```
|
||||
|
||||
#### MongoDB
|
||||
```yaml
|
||||
mongodb:
|
||||
scheme: "mongodb"
|
||||
host: "mongodb"
|
||||
port: "27017"
|
||||
username: "root"
|
||||
password: "password"
|
||||
```
|
||||
|
||||
#### RabbitMQ
|
||||
```yaml
|
||||
rabbitmq:
|
||||
scheme: "amqp"
|
||||
host: "rabbitmq"
|
||||
port: "5672"
|
||||
username: "admin"
|
||||
password: "password"
|
||||
```
|
||||
|
||||
#### Redis
|
||||
```yaml
|
||||
redis:
|
||||
host: "redis-master"
|
||||
port: "6379"
|
||||
scheme: "redis"
|
||||
password: "password"
|
||||
```
|
||||
|
||||
#### Temporal
|
||||
```yaml
|
||||
temporal:
|
||||
enabled: true
|
||||
host: "temporal-frontend"
|
||||
port: 7233
|
||||
```
|
||||
|
||||
### Ingress Configuration
|
||||
|
||||
```yaml
|
||||
ingress:
|
||||
enabled: true
|
||||
host: "localhost"
|
||||
ingressClassName: "nginx"
|
||||
```
|
||||
|
||||
**Instructions:**
|
||||
|
||||
## Deployment Instructions
|
||||
|
||||
### Step 1: Prepare Configuration
|
||||
|
||||
1. Edit `values.yaml` and replace all required `<REPLACE>` placeholders
|
||||
|
||||
3. Remove or configure optional `<REPLACE_OR_REMOVE>` blocks based on your needs
|
||||
|
||||
### Step 2: Deploy LlamaCloud
|
||||
|
||||
```bash
|
||||
# Deploy llamacloud with the supporting helm charts
|
||||
./local_up.sh
|
||||
```
|
||||
|
||||
### Step 3: Verify Deployment
|
||||
|
||||
```bash
|
||||
# Check pod status
|
||||
kubectl get pods
|
||||
|
||||
# Check ingress
|
||||
kubectl get ingress
|
||||
|
||||
# View logs
|
||||
kubectl logs -l app=llamacloud-backend
|
||||
```
|
||||
|
||||
### Step 4: Access LlamaCloud
|
||||
|
||||
Access the application:
|
||||
```
|
||||
http://localhost
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
**Pods not starting:**
|
||||
- Check logs: `kubectl logs <pod-name>`
|
||||
- Verify all required services are running
|
||||
- Ensure AWS credentials are correct and have S3 permissions
|
||||
|
||||
**Authentication errors:**
|
||||
- Verify OIDC configuration is correct
|
||||
- Check that the discovery URL is accessible
|
||||
- Ensure client ID and secret match your OIDC provider
|
||||
|
||||
**S3 access errors:**
|
||||
- Verify AWS credentials have proper IAM permissions
|
||||
- Check that bucket names are correct and exist
|
||||
- Ensure buckets are in the correct region
|
||||
|
||||
**Connection errors to infrastructure services:**
|
||||
- Verify all infrastructure services (PostgreSQL, MongoDB, etc.) are running
|
||||
- Check service names and ports match your deployment
|
||||
- Review network policies if using network restrictions
|
||||
|
||||
## Security Considerations
|
||||
|
||||
For production deployments:
|
||||
|
||||
1. **Use Kubernetes Secrets** for sensitive data instead of plain text values
|
||||
2. **Enable TLS** for ingress with valid certificates
|
||||
3. **Use IAM roles** (e.g., IRSA on EKS) instead of hardcoded AWS credentials
|
||||
4. **Change default passwords** for all infrastructure services
|
||||
5. **Enable network policies** to restrict pod-to-pod communication
|
||||
6. **Use a secrets management solution** (e.g., HashiCorp Vault, AWS Secrets Manager)
|
||||
|
||||
## Next Steps
|
||||
|
||||
- Configure additional LLM providers as needed
|
||||
- Set up monitoring and observability
|
||||
- Review and adjust resource limits for production workloads
|
||||
- Enable additional features (OCR, layout detection)
|
||||
- Review the [LlamaCloud documentation](https://docs.llamaindex.ai) for advanced configuration options
|
||||
|
||||
## Support
|
||||
|
||||
For issues and questions:
|
||||
- Review the main [LlamaCloud documentation](https://docs.llamaindex.ai)
|
||||
- Contact LlamaIndex support with your license information
|
||||
@@ -0,0 +1,69 @@
|
||||
#!/bin/zsh
|
||||
set -e
|
||||
|
||||
CURRENT_CONTEXT=$(kubectl config current-context)
|
||||
|
||||
if [ "$CURRENT_CONTEXT" != "docker-desktop" ]; then
|
||||
echo "Current kubectl context is $CURRENT_CONTEXT, not docker-desktop. Setting context to docker-desktop."
|
||||
kubectl config use-context docker-desktop
|
||||
else
|
||||
echo "Current kubectl context is docker-desktop."
|
||||
fi
|
||||
|
||||
echo "Installing dependencies..."
|
||||
|
||||
if helm status ingress-nginx -n ingress-nginx &> /dev/null; then
|
||||
echo "Release ingress-nginx exists."
|
||||
else
|
||||
echo "Installing ingress-nginx..."
|
||||
helm upgrade --install ingress-nginx ingress-nginx \
|
||||
--repo https://kubernetes.github.io/ingress-nginx \
|
||||
--namespace ingress-nginx --create-namespace
|
||||
fi
|
||||
|
||||
if helm status postgresql &> /dev/null; then
|
||||
echo "Release postgresql exists."
|
||||
else
|
||||
echo "Installing PostgreSQL..."
|
||||
helm upgrade --install postgresql oci://registry-1.docker.io/bitnamicharts/postgresql -f postgresql.yaml --wait --timeout 10m
|
||||
fi
|
||||
|
||||
if helm status mongodb &> /dev/null; then
|
||||
echo "Release mongodb exists."
|
||||
else
|
||||
echo "Installing MongoDB..."
|
||||
helm upgrade --install mongodb oci://registry-1.docker.io/bitnamicharts/mongodb -f mongodb.yaml --wait --timeout 10m
|
||||
fi
|
||||
|
||||
if helm status redis &> /dev/null; then
|
||||
echo "Release redis exists."
|
||||
else
|
||||
echo "Installing Redis..."
|
||||
helm upgrade --install redis oci://registry-1.docker.io/bitnamicharts/redis -f redis.yaml --wait --timeout 10m
|
||||
fi
|
||||
|
||||
if helm status rabbitmq &> /dev/null; then
|
||||
echo "Release rabbitmq exists."
|
||||
else
|
||||
echo "Installing RabbitMQ..."
|
||||
helm upgrade --install rabbitmq oci://registry-1.docker.io/bitnamicharts/rabbitmq -f rabbitmq.yaml --wait --timeout 10m
|
||||
fi
|
||||
|
||||
if helm status temporal &> /dev/null; then
|
||||
echo "Release temporal exists."
|
||||
else
|
||||
echo "Installing Temporal..."
|
||||
helm upgrade --install --repo https://go.temporal.io/helm-charts -f temporal.yaml temporal temporal --wait --timeout 10m
|
||||
fi
|
||||
|
||||
echo "Installing LlamaIndex local chart..."
|
||||
helm upgrade --install llamacloud ../../llamacloud -f values.yaml --wait --timeout 10m
|
||||
|
||||
echo "LlamaIndex local installation complete."
|
||||
echo "Waiting for Ingress to be registered..."
|
||||
|
||||
sleep 10
|
||||
|
||||
echo "You can access the services via the following URLs: http://localhost"
|
||||
|
||||
open "http://localhost"
|
||||
@@ -0,0 +1,19 @@
|
||||
image:
|
||||
registry: ghcr.io
|
||||
repository: xavidop/mongodb
|
||||
tag: '7.0'
|
||||
|
||||
# MongoDB Auth
|
||||
auth:
|
||||
## @param mongodb.auth.enabled Enable MongoDB Auth
|
||||
## @param mongodb.auth.rootUser Root user name
|
||||
enabled: true
|
||||
|
||||
rootUser: root
|
||||
rootPassword: password
|
||||
|
||||
global:
|
||||
security:
|
||||
allowInsecureImages: true
|
||||
|
||||
resourcesPreset: micro
|
||||
@@ -0,0 +1,35 @@
|
||||
image:
|
||||
## @param postgresql.image.registry PostgreSQL Image registry
|
||||
## @param postgresql.image.repository PostgreSQL Image repository
|
||||
registry: docker.io
|
||||
repository: bitnamilegacy/postgresql
|
||||
|
||||
# Postgres Auth
|
||||
auth:
|
||||
## @param postgresql.auth.enabled Enable PostgreSQL Auth
|
||||
## @param postgresql.auth.database Database name
|
||||
## @param postgresql.auth.username Username
|
||||
enabled: true
|
||||
database: llamacloud
|
||||
username: llamacloud
|
||||
password: llamacloud
|
||||
|
||||
## Ref: https://github.com/bitnami/charts/blob/main/bitnami/postgresql/values.yaml#L481
|
||||
primary:
|
||||
## @param postgresql.primary.resources.requests.cpu CPU requests
|
||||
## @param postgresql.primary.resources.requests.memory Memory requests
|
||||
## @param postgresql.primary.resources.limits.cpu CPU limits
|
||||
## @param postgresql.primary.resources.limits.memory Memory limits
|
||||
resources:
|
||||
requests:
|
||||
cpu: 250m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: 250m
|
||||
memory: 256Mi
|
||||
|
||||
global:
|
||||
security:
|
||||
allowInsecureImages: true
|
||||
|
||||
resourcesPreset: micro
|
||||
@@ -0,0 +1,17 @@
|
||||
image:
|
||||
## @param rabbitmq.image.registry RabbitMQ Image registry
|
||||
## @param rabbitmq.image.repository RabbitMQ Image repository
|
||||
registry: docker.io
|
||||
repository: bitnamilegacy/rabbitmq
|
||||
digest: sha256:8a36cf44a55be2ae25cafa0376b89041412c50bbcab9fa0109713d60b2ec06fb
|
||||
|
||||
global:
|
||||
security:
|
||||
allowInsecureImages: true
|
||||
|
||||
auth:
|
||||
username: admin
|
||||
password: password
|
||||
erlangCookie: secretcookie
|
||||
|
||||
resourcesPreset: micro
|
||||
@@ -0,0 +1,16 @@
|
||||
image:
|
||||
## @param redis.image.registry Redis Image registry
|
||||
## @param redis.image.repository Redis Image repository
|
||||
registry: docker.io
|
||||
repository: bitnamilegacy/redis
|
||||
|
||||
auth:
|
||||
password: "password"
|
||||
|
||||
architecture: standalone
|
||||
|
||||
global:
|
||||
security:
|
||||
allowInsecureImages: true
|
||||
|
||||
resourcesPreset: micro
|
||||
@@ -0,0 +1,71 @@
|
||||
web:
|
||||
additionalEnv:
|
||||
- name: TEMPORAL_CSRF_COOKIE_INSECURE
|
||||
value: "true"
|
||||
service:
|
||||
port: 80
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
server:
|
||||
frontend:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
history:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
|
||||
matching:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
|
||||
worker:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
config:
|
||||
persistence:
|
||||
default:
|
||||
sql:
|
||||
host: "postgresql"
|
||||
user: "llamacloud"
|
||||
password: "llamacloud"
|
||||
visibility:
|
||||
sql:
|
||||
host: "postgresql"
|
||||
user: "llamacloud"
|
||||
password: "llamacloud"
|
||||
prometheus:
|
||||
enabled: false
|
||||
grafana:
|
||||
enabled: false
|
||||
elasticsearch:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
initResources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
# Permit co-located instances for solitary minikube virtual machines.
|
||||
antiAffinity: "soft"
|
||||
|
||||
# Shrink default JVM heap.
|
||||
esJavaOpts: "-Xmx128m -Xms128m"
|
||||
|
||||
# Request smaller persistent volumes.
|
||||
volumeClaimTemplate:
|
||||
accessModes: [ "ReadWriteOnce" ]
|
||||
storageClassName: "hostpath"
|
||||
resources:
|
||||
requests:
|
||||
storage: 100M
|
||||
@@ -0,0 +1,316 @@
|
||||
license:
|
||||
key: "<REPLACE>"
|
||||
|
||||
postgresql:
|
||||
host: "postgresql"
|
||||
port: "5432"
|
||||
database: "llamacloud"
|
||||
username: "llamacloud"
|
||||
password: "llamacloud"
|
||||
|
||||
mongodb:
|
||||
scheme: "mongodb"
|
||||
host: "mongodb"
|
||||
port: "27017"
|
||||
username: "root"
|
||||
password: "password"
|
||||
|
||||
rabbitmq:
|
||||
scheme: "amqp"
|
||||
host: "rabbitmq"
|
||||
port: "5672"
|
||||
username: "admin"
|
||||
password: "password"
|
||||
|
||||
redis:
|
||||
host: "redis-master"
|
||||
port: "6379"
|
||||
scheme: "redis"
|
||||
username: ""
|
||||
password: "password"
|
||||
db: 0
|
||||
|
||||
qdrant:
|
||||
enabled: false
|
||||
url: ""
|
||||
apiKey: ""
|
||||
|
||||
temporal:
|
||||
enabled: true
|
||||
host: "temporal-frontend"
|
||||
port: 7233
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
annotations: {}
|
||||
host: "localhost"
|
||||
tlsSecretName: ""
|
||||
ingressClassName: "nginx"
|
||||
|
||||
config:
|
||||
logLevel: INFO
|
||||
|
||||
llms:
|
||||
openAi:
|
||||
apiKey: "<REPLACE_OR_REMOVE>"
|
||||
|
||||
anthropic:
|
||||
apiKey: "<REPLACE_OR_REMOVE>"
|
||||
|
||||
gemini:
|
||||
apiKey: "<REPLACE_OR_REMOVE>"
|
||||
|
||||
azureOpenAi:
|
||||
deployments:
|
||||
- model: "gpt-4.1"
|
||||
deploymentName: "gpt-4.1"
|
||||
apiKey: "<REPLACE_OR_REMOVE>"
|
||||
baseUrl: "<REPLACE_OR_REMOVE>"
|
||||
apiVersion: "2024-12-01-preview"
|
||||
- model: "gpt-4.1-mini"
|
||||
deploymentName: "gpt-4.1-mini"
|
||||
apiKey: "<REPLACE_OR_REMOVE>"
|
||||
baseUrl: "<REPLACE_OR_REMOVE>"
|
||||
apiVersion: "2024-12-01-preview"
|
||||
- model: "gpt-4.1-nano"
|
||||
deploymentName: "gpt-4.1-nano"
|
||||
apiKey: "<REPLACE_OR_REMOVE>"
|
||||
baseUrl: "<REPLACE_OR_REMOVE>"
|
||||
apiVersion: "2024-12-01-preview"
|
||||
- model: "gpt-4o"
|
||||
deploymentName: "gpt-4o"
|
||||
apiKey: "<REPLACE_OR_REMOVE>"
|
||||
baseUrl: "<REPLACE_OR_REMOVE>"
|
||||
apiVersion: "2024-12-01-preview"
|
||||
- model: "gpt-4o-mini"
|
||||
deploymentName: "gpt-4o-mini"
|
||||
apiKey: "<REPLACE_OR_REMOVE>"
|
||||
baseUrl: "<REPLACE_OR_REMOVE>"
|
||||
apiVersion: "2024-12-01-preview"
|
||||
- model: "whisper-1"
|
||||
deploymentName: "whisper-1"
|
||||
apiKey: "<REPLACE_OR_REMOVE>"
|
||||
baseUrl: "<REPLACE_OR_REMOVE>"
|
||||
apiVersion: "2024-06-01"
|
||||
- model: "gpt-5"
|
||||
deploymentName: "gpt-5"
|
||||
apiKey: "<REPLACE_OR_REMOVE>"
|
||||
baseUrl: "<REPLACE_OR_REMOVE>"
|
||||
apiVersion: "2024-12-01-preview"
|
||||
- model: "gpt-5-mini"
|
||||
deploymentName: "gpt-5-mini"
|
||||
apiKey: "<REPLACE_OR_REMOVE>"
|
||||
baseUrl: "<REPLACE_OR_REMOVE>"
|
||||
apiVersion: "2025-04-01-preview"
|
||||
- model: "gpt-5-nano"
|
||||
deploymentName: "gpt-5-nano"
|
||||
apiKey: "<REPLACE_OR_REMOVE>"
|
||||
baseUrl: "<REPLACE_OR_REMOVE>"
|
||||
apiVersion: "2025-04-01-preview"
|
||||
|
||||
awsBedrock:
|
||||
region: "<REPLACE_OR_REMOVE>"
|
||||
accessKeyId: "<REPLACE_OR_REMOVE>"
|
||||
secretAccessKey: "<REPLACE_OR_REMOVE>"
|
||||
sonnet3_5ModelVersionName: "anthropic.claude-3-5-sonnet-20240620-v1:0"
|
||||
sonnet3_7ModelVersionName: "us.anthropic.claude-3-7-sonnet-20250219-v1:0"
|
||||
sonnet4_0ModelVersionName: "us.anthropic.claude-sonnet-4-20250514-v1:0"
|
||||
sonnet4_5ModelVersionName: "us.anthropic.claude-sonnet-4-5-20250929-v1:0"
|
||||
haiku3_5ModelVersionName: "us.anthropic.claude-3-5-haiku-20241022-v1:0"
|
||||
haiku4_5ModelVersionName: "us.anthropic.claude-haiku-4-5-20251001-v1:0"
|
||||
|
||||
googleVertexAi:
|
||||
projectId: "<REPLACE_OR_REMOVE>"
|
||||
location: "<REPLACE_OR_REMOVE>"
|
||||
credentialsJson: '<REPLACE_OR_REMOVE>'
|
||||
|
||||
authentication:
|
||||
oidc:
|
||||
enabled: true
|
||||
discoveryUrl: "<REPLACE>"
|
||||
clientId: "<REPLACE>"
|
||||
clientSecret: "<REPLACE>"
|
||||
|
||||
storageBuckets:
|
||||
provider: "aws" # Options: aws, gcp, azure
|
||||
|
||||
parsedDocuments: "<REPLACE>"
|
||||
parsedEtl: "<REPLACE>"
|
||||
parsedExternalComponents: "<REPLACE>"
|
||||
parsedFileParsing: "<REPLACE>"
|
||||
parsedRawFile: "<REPLACE>"
|
||||
parseOutput: "<REPLACE>"
|
||||
parsedFileScreenshot: "<REPLACE>"
|
||||
extractOutput: "<REPLACE>"
|
||||
parseFileUpload: "<REPLACE>"
|
||||
parseFileOutput: "<REPLACE>"
|
||||
|
||||
temporal:
|
||||
workerRegistryProfile: "consolidated"
|
||||
|
||||
searchAttributesJob:
|
||||
enabled: true
|
||||
|
||||
image: "docker.io/temporalio/admin-tools:1.29"
|
||||
attributes:
|
||||
- name: Project
|
||||
type: Keyword
|
||||
- name: Organization
|
||||
type: Keyword
|
||||
|
||||
frontend:
|
||||
enabled: true
|
||||
|
||||
extraction:
|
||||
multimodalModel: "openai-gpt-4-1"
|
||||
schemaGenerationModel: "openai-gpt-4-1-mini"
|
||||
maxPages: 500
|
||||
maxFileSizeMb: 100
|
||||
maxFileSizeUiMb: 30
|
||||
|
||||
jobs:
|
||||
maxJobsInExecutionPerJobType: 10
|
||||
maxIndexJobsInExecution: 0
|
||||
maxDocumentIngestionJobsInExecution: 1
|
||||
includeJobErrorDetails: true
|
||||
defaultTransformDocumentTimeoutSeconds: "240"
|
||||
transformEmbeddingCharLimit: "11520000"
|
||||
|
||||
parse:
|
||||
debugMode: false
|
||||
maxQueueConcurrency: 3
|
||||
preferedPremiumModel: ""
|
||||
|
||||
parseOcr:
|
||||
enabled: false
|
||||
gpu: false
|
||||
|
||||
parseLayoutDetection:
|
||||
enabled: true
|
||||
|
||||
frontend:
|
||||
image: docker.io/llamaindex/llamacloud-frontend:0.5.11
|
||||
resources:
|
||||
requests:
|
||||
cpu: "250m"
|
||||
memory: "256Mi"
|
||||
|
||||
backend:
|
||||
image: docker.io/llamaindex/llamacloud-backend:0.5.11
|
||||
resources:
|
||||
requests:
|
||||
cpu: "250m"
|
||||
memory: "256Mi"
|
||||
extraEnvVariables:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
value: "<REPLACE>"
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
value: "<REPLACE>"
|
||||
|
||||
jobsService:
|
||||
image: docker.io/llamaindex/llamacloud-backend:0.5.11
|
||||
resources:
|
||||
requests:
|
||||
cpu: "250m"
|
||||
memory: "256Mi"
|
||||
|
||||
extraEnvVariables:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
value: "<REPLACE>"
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
value: "<REPLACE>"
|
||||
|
||||
jobsWorker:
|
||||
image: docker.io/llamaindex/llamacloud-backend:0.5.11
|
||||
resources:
|
||||
requests:
|
||||
cpu: "250m"
|
||||
memory: "256Mi"
|
||||
extraEnvVariables:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
value: "<REPLACE>"
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
value: "<REPLACE>"
|
||||
|
||||
## @section LlamaParse Configuration
|
||||
llamaParse:
|
||||
image: docker.io/llamaindex/llamacloud-llamaparse:0.5.11
|
||||
resources:
|
||||
requests:
|
||||
cpu: "250m"
|
||||
memory: "256Mi"
|
||||
extraEnvVariables:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
value: "<REPLACE>"
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
value: "<REPLACE>"
|
||||
|
||||
llamaParseOcr:
|
||||
image: docker.io/llamaindex/llamacloud-llamaparse-ocr:0.5.11
|
||||
resources:
|
||||
requests:
|
||||
cpu: "250m"
|
||||
memory: "256Mi"
|
||||
extraEnvVariables:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
value: "<REPLACE>"
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
value: "<REPLACE>"
|
||||
|
||||
llamaParseLayoutDetectionApi:
|
||||
image: docker.io/llamaindex/llamacloud-layout-detection-api:0.5.11
|
||||
resources:
|
||||
requests:
|
||||
cpu: "250m"
|
||||
memory: "256Mi"
|
||||
extraEnvVariables:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
value: "<REPLACE>"
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
value: "<REPLACE>"
|
||||
|
||||
usage:
|
||||
image: docker.io/llamaindex/llamacloud-backend:0.5.11
|
||||
resources:
|
||||
requests:
|
||||
cpu: "250m"
|
||||
memory: "256Mi"
|
||||
|
||||
temporalWorkloads:
|
||||
llamaParse:
|
||||
image: docker.io/llamaindex/llamacloud-llamaparse:0.5.11
|
||||
resources:
|
||||
requests:
|
||||
cpu: "250m"
|
||||
memory: "256Mi"
|
||||
extraEnvVariables:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
value: "<REPLACE>"
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
value: "<REPLACE>"
|
||||
|
||||
jobsService:
|
||||
image: docker.io/llamaindex/llamacloud-backend:0.5.11
|
||||
resources:
|
||||
requests:
|
||||
cpu: "250m"
|
||||
memory: "256Mi"
|
||||
extraEnvVariables:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
value: "<REPLACE>"
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
value: "<REPLACE>"
|
||||
|
||||
workers:
|
||||
temporal-jobs-worker:
|
||||
image: docker.io/llamaindex/llamacloud-backend:0.5.11
|
||||
imagePullPolicy: IfNotPresent
|
||||
resources:
|
||||
requests:
|
||||
cpu: "250m"
|
||||
memory: "256Mi"
|
||||
extraEnvVariables:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
value: "<REPLACE>"
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
value: "<REPLACE>"
|
||||
@@ -0,0 +1,185 @@
|
||||
# This is an example of a medium-size configuration for the LlamaCloud platform.
|
||||
# It is designed to be a good starting point for a production environment.
|
||||
# Our platform was designed to be horizontally scalable, so you can adjust the number of replicas for each component to fit your needs.
|
||||
# For larger workloads (both large files and large number of files/jobs), you may need to increase the number of replicas and resources for each component.
|
||||
# We also recommend using managed services for PostgreSQL, MongoDB, RabbitMQ, and Redis for production workloads, instead of self-hosted deployments.
|
||||
|
||||
license:
|
||||
key: "<REPLACE-WITH-LLAMACLOUD-LICENSE-KEY>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
# Connection details for required services
|
||||
# For production, use external managed services
|
||||
postgresql:
|
||||
host: "<REPLACE-WITH-POSTGRESQL-HOST>"
|
||||
port: "5432"
|
||||
database: "<REPLACE-WITH-DATABASE-NAME>"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
mongodb:
|
||||
host: "<REPLACE-WITH-MONGODB-HOST>"
|
||||
port: "27017"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
rabbitmq:
|
||||
host: "<REPLACE-WITH-RABBITMQ-HOST>"
|
||||
port: "5672"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
redis:
|
||||
host: "<REPLACE-WITH-REDIS-HOST>"
|
||||
port: "6379"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
config:
|
||||
llms:
|
||||
openAi:
|
||||
apiKey: "<REPLACE-WITH-OPENAI-API-KEY>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
authentication:
|
||||
oidc:
|
||||
enabled: true
|
||||
discoveryUrl: "https://login.microsoftonline.com/<your-tenant-id>/v2.0/.well-known/openid-configuration"
|
||||
clientId: "your-client-id"
|
||||
clientSecret: "your-client-secret"
|
||||
# secret: "oidc-secret"
|
||||
|
||||
backend:
|
||||
horizontalPodAutoscalerSpec:
|
||||
minReplicas: 4
|
||||
maxReplicas: 8
|
||||
metrics:
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 1
|
||||
memory: 2Gi
|
||||
limits:
|
||||
cpu: 2
|
||||
memory: 4Gi
|
||||
|
||||
jobsService:
|
||||
horizontalPodAutoscalerSpec:
|
||||
minReplicas: 4
|
||||
maxReplicas: 8
|
||||
metrics:
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 1
|
||||
memory: 500Mi
|
||||
limits:
|
||||
cpu: 2
|
||||
memory: 2Gi
|
||||
|
||||
jobsWorker:
|
||||
horizontalPodAutoscalerSpec:
|
||||
minReplicas: 4
|
||||
maxReplicas: 8
|
||||
metrics:
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 1
|
||||
memory: 2Gi
|
||||
limits:
|
||||
cpu: 2
|
||||
memory: 4Gi
|
||||
|
||||
llamaParse:
|
||||
horizontalPodAutoscalerSpec:
|
||||
minReplicas: 5
|
||||
maxReplicas: 20
|
||||
metrics:
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
|
||||
llamaParseOcr:
|
||||
horizontalPodAutoscalerSpec:
|
||||
minReplicas: 5
|
||||
maxReplicas: 20
|
||||
metrics:
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
|
||||
usage:
|
||||
horizontalPodAutoscalerSpec:
|
||||
minReplicas: 2
|
||||
maxReplicas: 8
|
||||
metrics:
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
@@ -0,0 +1,43 @@
|
||||
# This is an example of how to configure the LlamaCloud platform to use a private image registry.
|
||||
# Simply add a secret to the list of imagePullSecrets.
|
||||
|
||||
license:
|
||||
key: "<contact-support-for-key>"
|
||||
# secret: "<existing-secret-name>"
|
||||
|
||||
# Connection details for required services
|
||||
postgresql:
|
||||
host: "<REPLACE-WITH-POSTGRESQL-HOST>"
|
||||
port: "5432"
|
||||
database: "<REPLACE-WITH-DATABASE-NAME>"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
mongodb:
|
||||
host: "<REPLACE-WITH-MONGODB-HOST>"
|
||||
port: "27017"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
rabbitmq:
|
||||
host: "<REPLACE-WITH-RABBITMQ-HOST>"
|
||||
port: "5672"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
redis:
|
||||
host: "<REPLACE-WITH-REDIS-HOST>"
|
||||
port: "6379"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
imagePullSecrets:
|
||||
- name: "<your-pull-secret-name>"
|
||||
|
||||
# You can also attach your own IAM role annotations to the service account if needed.
|
||||
backend:
|
||||
serviceAccountAnnotations:
|
||||
# eks.amazonaws.com/role-arn: "<your-role-arn>"
|
||||
@@ -0,0 +1,54 @@
|
||||
# This example shows how to configure the LlamaCloud platform to use Azure OpenAI and Azure Blob Storage (using s3proxy).
|
||||
# We currently do not have native support for non-S3 filestores in LlamaCloud at the moment.
|
||||
|
||||
license:
|
||||
key: "<REPLACE-WITH-LLAMACLOUD-LICENSE-KEY>"
|
||||
|
||||
# Connection details for required services
|
||||
postgresql:
|
||||
host: "<REPLACE-WITH-POSTGRESQL-HOST>"
|
||||
port: "5432"
|
||||
database: "<REPLACE-WITH-DATABASE-NAME>"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
mongodb:
|
||||
host: "<REPLACE-WITH-MONGODB-HOST>"
|
||||
port: "27017"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
rabbitmq:
|
||||
host: "<REPLACE-WITH-RABBITMQ-HOST>"
|
||||
port: "5672"
|
||||
username: "<REPLACE-WITH-USERNAME>"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
redis:
|
||||
host: "<REPLACE-WITH-REDIS-HOST>"
|
||||
port: "6379"
|
||||
password: "<REPLACE-WITH-PASSWORD>"
|
||||
# secret: "<uncomment-if-using-existing-secret>"
|
||||
|
||||
# For more information on S3Proxy configuration, see:
|
||||
# https://github.com/gaul/s3proxy
|
||||
|
||||
config:
|
||||
storageBuckets:
|
||||
# Set the provider to 'azure' or 'gcp' to enable s3proxy sidecar
|
||||
provider: "azure" # or "gcp"
|
||||
|
||||
s3proxy:
|
||||
config:
|
||||
# Fillout with your own values
|
||||
# https://github.com/gaul/s3proxy/wiki/Storage-backend-examples
|
||||
# S3PROXY_ENDPOINT: "http://0.0.0.0:80"
|
||||
# S3PROXY_AUTHORIZATION: "none"
|
||||
# JCLOUDS_PROVIDER: "azureblob"
|
||||
# JCLOUDS_AZUREBLOB_AUTH: "azureKey"
|
||||
# JCLOUDS_IDENTITY: "<azure-storage-account-name>"
|
||||
# JCLOUDS_CREDENTIAL: "<azure-storage-account-key>"
|
||||
# JCLOUDS_ENDPOINT: "<azure-storage-account-endpoint>"
|
||||
@@ -0,0 +1,29 @@
|
||||
# Helm Chart Downgrade Runbook
|
||||
|
||||
Upgrading this helm chart is the same as upgrading any helm chart:
|
||||
```shell
|
||||
helm -n <namespace> upgrade llamacloud llamaindex/llamacloud -f values.yaml --version <chart-version>
|
||||
```
|
||||
|
||||
However, an extra step would be required for *downgrades*. This is primarly because the postgres database schemas will need to be migrated back to the versions they were at in the helm chart you are aiming to downgrade to.
|
||||
At a high level, you will first need to run this alembic downgrade within your deployment pod before being able to run the full helm-chart downgrade.
|
||||
|
||||
For this, we've provided a utility script in this repo named [`helm_chart_alembic_version.sh`](../scripts/helm_chart_alembic_version.sh). Each helm chart is on a specific alembic migration version which indicates the state of the postgres database schema at the point in time the specific helm chart version was created.
|
||||
This script will simply print out this alembic migration version for a given helm chart version. Here are the steps to use this when performing a helm chart downgrade:
|
||||
1. Determine which helm chart version you would like to downgrade to
|
||||
- Consult our [CHANGELOG](../CHANGELOG.md) to see the changes in each version.
|
||||
1. Run the [`helm_chart_alembic_version.sh`](../scripts/helm_chart_alembic_version.sh) script with the helm-chart version you are downgrading to
|
||||
- Usage: `./scripts/helm_chart_alembic_version.sh <version you are downgrading to>`
|
||||
- e.g. `./scripts/helm_chart_alembic_version.sh 0.1.47` should print a alembic version of `f43d21f9cdb8`
|
||||
- This script may take a minute or two to finish
|
||||
- Copy/save the alembic version that is printed at the end of this script
|
||||
1. Run the downgrade command on the backend pod
|
||||
- Assuming the helm chart is deployed in a namespace named `llamacloud`, here are some commands for doing this:
|
||||
- List the pods: `kubectl get po -n llamacloud`
|
||||
- In the list of pods, find a pod whose name starts with `llamacloud-backend-` and copy its name
|
||||
- Run the downgrade command: `kubectl exec -n llamacloud -it <copied pod name> -- alembic downgrade <alembic version copied in prior step>`
|
||||
- e.g. `kubectl exec -n llamacloud -it llamacloud-backend-58b75b89c6-74847 -- alembic downgrade f43d21f9cdb8`
|
||||
- **NOTE:** This command will have the likely outcome of causing a partial loss of functionality in your LlamaCloud deployment and data-loss for any tables/columns that are dropped as part of this DB schema downgrade.
|
||||
1. Downgrade the helm-chart to the your target helm chart version: `helm -n <namespace> upgrade llamacloud llamaindex/llamacloud -f values.yaml --version <chart-version>`
|
||||
|
||||
You should now see that the deployment to the downgraded helm chart version completes succesfully.
|
||||
@@ -0,0 +1,17 @@
|
||||
{{- $frontendValues := include "llamacloud.component.frontend" $ | fromYaml }}
|
||||
Welcome to LlamaCloud!
|
||||
|
||||
View your deployment with the following:
|
||||
|
||||
kubectl --namespace {{ .Release.Namespace }} get pods
|
||||
|
||||
To view LlamaCloud UI in your browser:
|
||||
|
||||
{{- if and (.Values.ingress).enabled }}
|
||||
{{ print "Please visit: " (include "llamacloud.ingress.scheme" .) "://" (.Values.ingress).host }}
|
||||
{{- else }}
|
||||
Run the following command:
|
||||
|
||||
kubectl --namespace {{ .Release.Namespace }} port-forward svc/{{ $frontendValues.name }} 3000:80
|
||||
{{- end }}
|
||||
|
||||
@@ -0,0 +1,184 @@
|
||||
{{- $component := .Values.backend }}
|
||||
|
||||
{{/*
|
||||
Backend Component Settings.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.backend" }}
|
||||
{{- $component := .Values.backend }}
|
||||
{{- $component = set $component "prefix" "llamacloud.component.backend" }}
|
||||
{{- $component = set $component "name" "llamacloud" }}
|
||||
{{- $component = set $component "image" ($.Values.backend).image | default ( print "docker.io/llamaindex/llamacloud-backend:" .Chart.AppVersion ) }}
|
||||
{{- $component = set $component "imagePullPolicy" ( ($.Values.backend).imagePullPolicy | default "IfNotPresent" ) }}
|
||||
{{- $component = set $component "port" 8000 }}
|
||||
{{- $component = set $component "command" (list "start_platform_api") }}
|
||||
{{- $component = set $component "usesS3" "true" }}
|
||||
{{- $component | toYaml }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Backend Resources.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.backend.resources" }}
|
||||
requests:
|
||||
cpu: {{ (((.component).resources).requests).cpu | default "500m" }}
|
||||
memory: {{ (((.component).resources).requests).memory | default "4Gi" }}
|
||||
limits:
|
||||
cpu: {{ (((.component).resources).limits).cpu | default "2" }}
|
||||
memory: {{ (((.component).resources).limits).memory | default "6Gi" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Backend Liveness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.backend.livenessProbe" }}
|
||||
httpGet:
|
||||
path: /api/health
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Backend Readiness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.backend.readinessProbe" }}
|
||||
httpGet:
|
||||
path: /api/health
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Backend Startup Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.backend.startupProbe" }}
|
||||
httpGet:
|
||||
path: /api/health
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 15
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Backend Environment Variables.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.backend.env" }}
|
||||
{{- if (.component).extraEnvVariables }}
|
||||
{{ toYaml (.component).extraEnvVariables }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Backend Environment Variables from Secrets and ConfigMaps.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.backend.envFrom" }}
|
||||
{{- include "llamacloud.secrets.license" .root }}
|
||||
- configMapRef:
|
||||
name: bucket-config
|
||||
- configMapRef:
|
||||
name: common-config
|
||||
- configMapRef:
|
||||
name: extract-config
|
||||
- configMapRef:
|
||||
name: urls-config
|
||||
{{- if not .root.Values.temporal.disabled }}
|
||||
- configMapRef:
|
||||
name: temporal-connection-config
|
||||
{{- end }}
|
||||
{{- if (include "llamacloud.component.backend.configMap" $) }}
|
||||
- configMapRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
{{- if (include "llamacloud.component.backend.secret" $) }}
|
||||
- secretRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
- secretRef:
|
||||
name: bucket-secret
|
||||
{{- include "llamacloud.secrets.postgresql" .root }}
|
||||
{{- include "llamacloud.secrets.mongodb" .root }}
|
||||
{{- include "llamacloud.secrets.rabbitmq" .root }}
|
||||
{{- include "llamacloud.secrets.redis" .root }}
|
||||
{{- include "llamacloud.secrets.qdrant" .root }}
|
||||
{{- include "llamacloud.secrets.basicAuth" .root }}
|
||||
{{- include "llamacloud.secrets.oidc" .root }}
|
||||
{{- include "llamacloud.secrets.openAi" .root }}
|
||||
{{- include "llamacloud.secrets.anthropic" .root }}
|
||||
{{- include "llamacloud.secrets.gemini" .root }}
|
||||
{{- include "llamacloud.secrets.azureOpenAi" .root }}
|
||||
{{- include "llamacloud.secrets.awsBedrock" .root }}
|
||||
{{- include "llamacloud.secrets.googleVertexAi" .root }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Backend Secret.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.backend.secret" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Backend ConfigMap.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.backend.configMap" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Backend Volume Mounts.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.backend.volumeMounts" }}
|
||||
- mountPath: /tmp
|
||||
name: tmp
|
||||
{{- if (.component).volumeMounts }}
|
||||
{{ toYaml (.component).volumeMounts }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Backend Volumes.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.backend.volumes" }}
|
||||
- emptyDir: {}
|
||||
name: tmp
|
||||
{{- if (((.root.Values.config).storageBuckets).s3proxy.enabled | default false) }}
|
||||
- emptyDir: {}
|
||||
name: s3proxy-tmp
|
||||
{{- end }}
|
||||
{{- if (.component).volumes }}
|
||||
{{ toYaml (.component).volumes }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,142 @@
|
||||
{{/*
|
||||
Labels
|
||||
|
||||
Parameters:
|
||||
- name: The name of the component
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.labels" }}
|
||||
{{- if .root.Values.commonLabels }}
|
||||
{{ .root.Values.commonLabels | toYaml }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/instance: {{ .root.Release.Name }}
|
||||
app.kubernetes.io/managed-by: {{ .root.Release.Service }}
|
||||
{{- if .name }}
|
||||
app.kubernetes.io/name: {{ .name | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Annotations
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.annotations" }}
|
||||
{{- range $key, $value := .root.Values.commonAnnotations }}
|
||||
{{ $key }}: {{ $value | quote }}
|
||||
{{- end }}
|
||||
{{- if .component }}
|
||||
{{- range $key, $value := .component.annotations }}
|
||||
{{ $key }}: {{ $value | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Pod Annotations
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.podAnnotations" }}
|
||||
{{- range $key, $value := .root.Values.commonAnnotations }}
|
||||
{{ $key }}: {{ $value | quote }}
|
||||
{{- end }}
|
||||
{{- if .component }}
|
||||
{{- range $key, $value := .component.podAnnotations }}
|
||||
{{ $key }}: {{ $value | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Security Context
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
*/}}
|
||||
{{ define "llamacloud.podSecurityContext" }}
|
||||
{{- if not .component.podSecurityContext }}
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
fsGroup: 1000
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
{{- else }}
|
||||
{{ toYaml .component.podSecurityContext }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Security Context
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
*/}}
|
||||
{{ define "llamacloud.securityContext" }}
|
||||
{{- if not .component.securityContext }}
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- all
|
||||
privileged: false
|
||||
readOnlyRootFilesystem: true
|
||||
runAsGroup: 1000
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1000
|
||||
{{- else }}
|
||||
{{ toYaml .component.securityContext }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Activated Components
|
||||
*/}}
|
||||
{{- define "llamacloud.components" }}
|
||||
{{- $activated := dict }}
|
||||
{{- $activated = set $activated "backend" (include "llamacloud.component.backend" . | fromYaml) }}
|
||||
{{- $activated = set $activated "jobsService" (include "llamacloud.component.jobsService" . | fromYaml) }}
|
||||
{{- $activated = set $activated "jobsWorker" (include "llamacloud.component.jobsWorker" . | fromYaml) }}
|
||||
{{- $activated = set $activated "llamaParse" (include "llamacloud.component.llamaParse" . | fromYaml) }}
|
||||
{{- $activated = set $activated "usage" (include "llamacloud.component.usage" . | fromYaml) }}
|
||||
{{- if (($.Values.config).frontend).enabled }}
|
||||
{{- $activated = set $activated "frontend" (include "llamacloud.component.frontend" . | fromYaml) }}
|
||||
{{- end }}
|
||||
{{- if (($.Values.config).parseOcr).enabled }}
|
||||
{{- $activated = set $activated "llamaParseOcr" (include "llamacloud.component.llamaParseOcr" . | fromYaml) }}
|
||||
{{- end }}
|
||||
{{- if (($.Values.config).parseLayoutDetection).enabled }}
|
||||
{{- $activated = set $activated "llamaParseLayoutDetectionApi" (include "llamacloud.component.llamaParseLayoutDetectionApi" . | fromYaml) }}
|
||||
{{- end }}
|
||||
{{- if (($.Values.config).parseLayoutDetectionV3).enabled }}
|
||||
{{- $activated = set $activated "llamaParseLayoutDetectionApiV3" (include "llamacloud.component.llamaParseLayoutDetectionApiV3" . | fromYaml) }}
|
||||
{{- end }}
|
||||
{{- /* Temporal workloads - skip when temporal is disabled */}}
|
||||
{{- if not $.Values.temporal.disabled }}
|
||||
{{- $activated = set $activated "temporalJobsService" (include "llamacloud.component.temporal.jobsService" . | fromYaml) }}
|
||||
{{- $activated = set $activated "temporalLlamaParse" (include "llamacloud.component.temporal.llamaParse" . | fromYaml) }}
|
||||
{{- range $workerName, $workerConfig := .Values.temporalWorkloads.workers }}
|
||||
{{- $activated = set $activated $workerName (include "llamacloud.component.temporal.worker" (dict "name" $workerName "component" $workerConfig "appVersion" $.Chart.AppVersion) | fromYaml) }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- $activated | toYaml }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Ingress Scheme
|
||||
*/}}
|
||||
{{- define "llamacloud.ingress.scheme" }}http{{ if .Values.ingress.tlsSecretName }}s{{ end }}{{- end }}
|
||||
|
||||
{{/*
|
||||
Renders a complete tree, even values that contains template.
|
||||
*/}}
|
||||
{{- define "llamacloud.render" }}
|
||||
{{- if typeIs "string" .value }}
|
||||
{{- tpl .value .context }}
|
||||
{{ else }}
|
||||
{{- tpl (.value | toYaml) .context }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,163 @@
|
||||
{{/*
|
||||
Frontend Component Settings.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.frontend" }}
|
||||
{{- $component := .Values.frontend }}
|
||||
{{- $component = set $component "prefix" "llamacloud.component.frontend" }}
|
||||
{{- $component = set $component "name" "llamacloud-web" }}
|
||||
{{- $component = set $component "image" ( ($.Values.frontend).image | default ( print "docker.io/llamaindex/llamacloud-frontend:" .Chart.AppVersion ) ) }}
|
||||
{{- $component = set $component "imagePullPolicy" ( ($.Values.frontend).imagePullPolicy | default "IfNotPresent" ) }}
|
||||
{{- $component = set $component "port" 3000 }}
|
||||
{{- $component | toYaml }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Frontend Resources.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.frontend.resources" }}
|
||||
requests:
|
||||
cpu: {{ (((.component).resources).requests).cpu | default "500m" }}
|
||||
memory: {{ (((.component).resources).requests).memory | default "512Mi" }}
|
||||
limits:
|
||||
cpu: {{ (((.component).resources).limits).cpu | default "1" }}
|
||||
memory: {{ (((.component).resources).limits).memory | default "1Gi" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Frontend Liveness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.frontend.livenessProbe" }}
|
||||
httpGet:
|
||||
path: /api/healthz
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Frontend Readiness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.frontend.readinessProbe" }}
|
||||
httpGet:
|
||||
path: /api/healthz
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Frontend Startup Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.frontend.startupProbe" }}
|
||||
httpGet:
|
||||
path: /api/healthz
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 15
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Frontend Environment Variables.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.frontend.env" }}
|
||||
{{- if (.component).extraEnvVariables }}
|
||||
{{ toYaml (.component).extraEnvVariables }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Frontend Environment Variables from Secrets and ConfigMaps.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.frontend.envFrom" }}
|
||||
{{- include "llamacloud.secrets.license" .root}}
|
||||
- configMapRef:
|
||||
name: urls-config
|
||||
{{- if (include "llamacloud.component.frontend.configMap" $) }}
|
||||
- configMapRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
{{- if (include "llamacloud.component.frontend.secret" $) }}
|
||||
- secretRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Frontend Secret.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.frontend.secret" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Frontend ConfigMap.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.frontend.configMap" }}
|
||||
HOSTNAME: 0.0.0.0
|
||||
{{- if (.root.Values.qdrant).enabled }}
|
||||
NEXT_PUBLIC_BYOC_HAS_MANAGED_QDRANT: "true"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Frontend Volume Mounts.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.frontend.volumeMounts" }}
|
||||
- mountPath: /tmp
|
||||
name: tmp
|
||||
- mountPath: /.next/cache
|
||||
name: nextjs-cache
|
||||
- mountPath: /app/frontend/.next/cache
|
||||
name: local-nextjs-cache
|
||||
{{- if (.component).volumeMounts }}
|
||||
{{ toYaml (.component).volumeMounts }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Frontend Volumes.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.frontend.volumes" }}
|
||||
- emptyDir: {}
|
||||
name: tmp
|
||||
- emptyDir: {}
|
||||
name: nextjs-cache
|
||||
- emptyDir: {}
|
||||
name: local-nextjs-cache
|
||||
{{- if (.component).volumes }}
|
||||
{{ toYaml (.component).volumes }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,173 @@
|
||||
{{/*
|
||||
Jobs Service Component Settings.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsService" }}
|
||||
{{- $component := .Values.jobsService }}
|
||||
{{- $component = set $component "prefix" "llamacloud.component.jobsService" }}
|
||||
{{- $component = set $component "name" "llamacloud-operator" }}
|
||||
{{- $component = set $component "image" ($.Values.jobsService).image | default ( print "docker.io/llamaindex/llamacloud-backend:" .Chart.AppVersion ) }}
|
||||
{{- $component = set $component "imagePullPolicy" ( ($.Values.jobsService).imagePullPolicy | default "IfNotPresent" ) }}
|
||||
{{- $component = set $component "port" 8002 }}
|
||||
{{- $component = set $component "command" (list "start_job_service") }}
|
||||
{{- $component = set $component "usesS3" "true" }}
|
||||
{{- $component | toYaml }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Service Resources.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsService.resources" }}
|
||||
requests:
|
||||
cpu: {{ (((.component).resources).requests).cpu | default "500m" }}
|
||||
memory: {{ (((.component).resources).requests).memory | default "4Gi" }}
|
||||
limits:
|
||||
cpu: {{ (((.component).resources).limits).cpu | default "2" }}
|
||||
memory: {{ (((.component).resources).limits).memory | default "8Gi" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Service Liveness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsService.livenessProbe" }}
|
||||
httpGet:
|
||||
path: /api/health
|
||||
port: http
|
||||
periodSeconds: 15
|
||||
timeoutSeconds: 10
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Service Readiness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsService.readinessProbe" }}
|
||||
httpGet:
|
||||
path: /api/health
|
||||
port: http
|
||||
periodSeconds: 15
|
||||
timeoutSeconds: 10
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Service Startup Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsService.startupProbe" }}
|
||||
httpGet:
|
||||
path: /api/health
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 15
|
||||
timeoutSeconds: 10
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Service Environment Variables.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsService.env" }}
|
||||
{{- if (.component).extraEnvVariables }}
|
||||
{{ toYaml (.component).extraEnvVariables }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Service Environment Variables from Secrets and ConfigMaps.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsService.envFrom" }}
|
||||
{{- include "llamacloud.secrets.license" .root}}
|
||||
- configMapRef:
|
||||
name: bucket-config
|
||||
- configMapRef:
|
||||
name: common-config
|
||||
- configMapRef:
|
||||
name: extract-config
|
||||
- configMapRef:
|
||||
name: urls-config
|
||||
{{- if (include "llamacloud.component.jobsService.configMap" $) }}
|
||||
- configMapRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
{{- if (include "llamacloud.component.jobsService.secret" $) }}
|
||||
- secretRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
- secretRef:
|
||||
name: bucket-secret
|
||||
{{- include "llamacloud.secrets.postgresql" .root }}
|
||||
{{- include "llamacloud.secrets.mongodb" .root }}
|
||||
{{- include "llamacloud.secrets.rabbitmq" .root }}
|
||||
{{- include "llamacloud.secrets.redis" .root }}
|
||||
{{- include "llamacloud.secrets.openAi" .root }}
|
||||
{{- include "llamacloud.secrets.anthropic" .root }}
|
||||
{{- include "llamacloud.secrets.gemini" .root }}
|
||||
{{- include "llamacloud.secrets.azureOpenAi" .root }}
|
||||
{{- include "llamacloud.secrets.awsBedrock" .root }}
|
||||
{{- include "llamacloud.secrets.googleVertexAi" .root }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Service Secret.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsService.secret" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Service ConfigMap.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsService.configMap" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Service Volume Mounts.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsService.volumeMounts" }}
|
||||
- mountPath: /tmp
|
||||
name: tmp
|
||||
{{- if (.component).volumeMounts }}
|
||||
{{ toYaml (.component).volumeMounts }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Service Volumes.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsService.volumes" }}
|
||||
- emptyDir: {}
|
||||
name: tmp
|
||||
{{- if (((.root.Values.config).storageBuckets).s3proxy.enabled | default false) }}
|
||||
- emptyDir: {}
|
||||
name: s3proxy-tmp
|
||||
{{- end }}
|
||||
{{- if (.component).volumes }}
|
||||
{{ toYaml (.component).volumes }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,186 @@
|
||||
{{/*
|
||||
Jobs Worker Component Settings.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsWorker" }}
|
||||
{{- $component := .Values.jobsWorker }}
|
||||
{{- $component = set $component "prefix" "llamacloud.component.jobsWorker" }}
|
||||
{{- $component = set $component "name" "llamacloud-worker" }}
|
||||
{{- $component = set $component "image" ($.Values.jobsWorker).image | default ( print "docker.io/llamaindex/llamacloud-backend:" .Chart.AppVersion ) }}
|
||||
{{- $component = set $component "imagePullPolicy" ( ($.Values.jobsWorker).imagePullPolicy | default "IfNotPresent" ) }}
|
||||
{{- $component = set $component "port" 8001 }}
|
||||
{{- $component = set $component "command" (list "start_consumer") }}
|
||||
{{- $component = set $component "usesS3" "true" }}
|
||||
{{- $component | toYaml }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Worker Resources.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsWorker.resources" }}
|
||||
requests:
|
||||
cpu: {{ (((.component).resources).requests).cpu | default "500m" }}
|
||||
memory: {{ (((.component).resources).requests).memory | default "4Gi" }}
|
||||
limits:
|
||||
cpu: {{ (((.component).resources).limits).cpu | default "2" }}
|
||||
memory: {{ (((.component).resources).limits).memory | default "6Gi" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Worker Liveness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsWorker.livenessProbe" }}
|
||||
httpGet:
|
||||
path: /api/health
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 15
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Worker Readiness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsWorker.readinessProbe" }}
|
||||
httpGet:
|
||||
path: /api/health
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 15
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Worker Startup Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsWorker.startupProbe" }}
|
||||
httpGet:
|
||||
path: /api/health
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 15
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Worker Environment Variables.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsWorker.env" }}
|
||||
{{- if (.component).extraEnvVariables }}
|
||||
{{ toYaml (.component).extraEnvVariables }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Worker Environment Variables from Secrets and ConfigMaps.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsWorker.envFrom" }}
|
||||
{{- include "llamacloud.secrets.license" .root}}
|
||||
- configMapRef:
|
||||
name: bucket-config
|
||||
- configMapRef:
|
||||
name: common-config
|
||||
- configMapRef:
|
||||
name: extract-config
|
||||
- configMapRef:
|
||||
name: urls-config
|
||||
{{- if (include "llamacloud.component.jobsWorker.configMap" $) }}
|
||||
- configMapRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
{{- if (include "llamacloud.component.jobsWorker.secret" $) }}
|
||||
- secretRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
- secretRef:
|
||||
name: bucket-secret
|
||||
{{- include "llamacloud.secrets.postgresql" .root }}
|
||||
{{- include "llamacloud.secrets.mongodb" .root }}
|
||||
{{- include "llamacloud.secrets.rabbitmq" .root }}
|
||||
{{- include "llamacloud.secrets.redis" .root }}
|
||||
{{- include "llamacloud.secrets.qdrant" .root }}
|
||||
{{- include "llamacloud.secrets.basicAuth" .root }}
|
||||
{{- include "llamacloud.secrets.oidc" .root }}
|
||||
{{- include "llamacloud.secrets.openAi" .root }}
|
||||
{{- include "llamacloud.secrets.anthropic" .root }}
|
||||
{{- include "llamacloud.secrets.gemini" .root }}
|
||||
{{- include "llamacloud.secrets.azureOpenAi" .root }}
|
||||
{{- include "llamacloud.secrets.awsBedrock" .root }}
|
||||
{{- include "llamacloud.secrets.googleVertexAi" .root }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Worker Secret.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsWorker.secret" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Worker ConfigMap.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsWorker.configMap" }}
|
||||
JOB_CONSUMER_PORT: "80"
|
||||
|
||||
MAX_JOBS_IN_EXECUTION_PER_JOB_TYPE: {{ ((.root.Values.config).jobs).maxJobsInExecutionPerJobType | default 10 | quote }}
|
||||
MAX_INDEX_JOBS_IN_EXECUTION: {{ ((.root.Values.config).jobs).maxIndexJobsInExecution | default 0 | quote }}
|
||||
MAX_DOCUMENT_INGESTION_JOBS_IN_EXECUTION: {{ ((.root.Values.config).jobs).maxDocumentIngestionJobsInExecution | default 1 | quote }}
|
||||
INCLUDE_JOB_ERROR_DETAILS: {{ ((.root.Values.config).jobs).includeJobErrorDetails | default "true" | quote }}
|
||||
DEFAULT_TRANSFORM_DOCUMENT_TIMEOUT_SECONDS: {{ ((.root.Values.config).jobs).defaultTransformDocumentTimeoutSeconds | default "240" | quote }}
|
||||
TRANSFORM_EMBEDDING_CHAR_LIMIT: {{ ((.root.Values.config).jobs).transformEmbeddingCharLimit | default "11520000" | quote }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Worker Volume Mounts.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsWorker.volumeMounts" }}
|
||||
- mountPath: /tmp
|
||||
name: tmp
|
||||
{{- if (.component).volumeMounts }}
|
||||
{{ toYaml (.component).volumeMounts }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Jobs Worker Volumes.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.jobsWorker.volumes" }}
|
||||
- emptyDir: {}
|
||||
name: tmp
|
||||
{{- if (((.root.Values.config).storageBuckets).s3proxy.enabled | default false) }}
|
||||
- emptyDir: {}
|
||||
name: s3proxy-tmp
|
||||
{{- end }}
|
||||
{{- if (.component).volumes }}
|
||||
{{ toYaml (.component).volumes }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,171 @@
|
||||
{{/*
|
||||
Parse Layout Detection V3 Component Settings.
|
||||
This is for BYOC deployments using the self-hosted RT-DETRv2 model.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApiV3" }}
|
||||
{{- $component := .Values.llamaParseLayoutDetectionApiV3 }}
|
||||
{{- $component = set $component "prefix" "llamacloud.component.llamaParseLayoutDetectionApiV3" }}
|
||||
{{- $component = set $component "name" "llamacloud-layout-v3" }}
|
||||
{{- $component = set $component "image" ($.Values.llamaParseLayoutDetectionApiV3).image | default ( print "docker.io/llamaindex/llamacloud-layout-detection-api-v3:" .Chart.AppVersion ) }}
|
||||
{{- $component = set $component "imagePullPolicy" ( ($.Values.llamaParseLayoutDetectionApiV3).imagePullPolicy | default "IfNotPresent" ) }}
|
||||
{{- $component = set $component "port" 8000 }}
|
||||
{{- $component | toYaml }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection V3 Resources.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApiV3.resources" }}
|
||||
requests:
|
||||
cpu: {{ (((.component).resources).requests).cpu | default "1" }}
|
||||
memory: {{ (((.component).resources).requests).memory | default "8Gi" }}
|
||||
{{- if ((.root.Values.config).parseLayoutDetectionV3).gpu }}
|
||||
nvidia.com/gpu: 1
|
||||
{{- end }}
|
||||
limits:
|
||||
cpu: {{ (((.component).resources).limits).cpu | default "2" }}
|
||||
memory: {{ (((.component).resources).limits).memory | default "16Gi" }}
|
||||
{{- if ((.root.Values.config).parseLayoutDetectionV3).gpu }}
|
||||
nvidia.com/gpu: 1
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection V3 Liveness Probe.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApiV3.livenessProbe" }}
|
||||
httpGet:
|
||||
path: /health
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 15
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 5
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection V3 Readiness Probe.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApiV3.readinessProbe" }}
|
||||
httpGet:
|
||||
path: /health
|
||||
port: http
|
||||
initialDelaySeconds: 15
|
||||
periodSeconds: 15
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 5
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection V3 Startup Probe.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApiV3.startupProbe" }}
|
||||
httpGet:
|
||||
path: /health
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 15
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 10
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection V3 Environment Variables.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApiV3.env" }}
|
||||
{{- if (.component).extraEnvVariables }}
|
||||
{{ toYaml (.component).extraEnvVariables }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection V3 Environment Variables from Secrets and ConfigMaps.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApiV3.envFrom" }}
|
||||
{{- include "llamacloud.secrets.license" .root}}
|
||||
{{- if (include "llamacloud.component.llamaParseLayoutDetectionApiV3.configMap" $) }}
|
||||
- configMapRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
{{- if (include "llamacloud.component.llamaParseLayoutDetectionApiV3.secret" $) }}
|
||||
- secretRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection V3 Secret.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApiV3.secret" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection V3 ConfigMap.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApiV3.configMap" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection V3 Volume Mounts.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApiV3.volumeMounts" }}
|
||||
- mountPath: /tmp
|
||||
name: tmp
|
||||
{{- if (.component).volumeMounts }}
|
||||
{{ toYaml (.component).volumeMounts }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection V3 Volumes.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApiV3.volumes" }}
|
||||
- emptyDir: {}
|
||||
name: tmp
|
||||
{{- if (.component).volumes }}
|
||||
{{ toYaml (.component).volumes }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,170 @@
|
||||
{{/*
|
||||
Parse Layout Detection Component Settings.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApi" }}
|
||||
{{- $component := .Values.llamaParseLayoutDetectionApi }}
|
||||
{{- $component = set $component "prefix" "llamacloud.component.llamaParseLayoutDetectionApi" }}
|
||||
{{- $component = set $component "name" "llamacloud-layout" }}
|
||||
{{- $component = set $component "image" ($.Values.llamaParseLayoutDetectionApi).image | default ( print "docker.io/llamaindex/llamacloud-layout-detection-api:" .Chart.AppVersion ) }}
|
||||
{{- $component = set $component "imagePullPolicy" ( ($.Values.llamaParseLayoutDetectionApi).imagePullPolicy | default "IfNotPresent" ) }}
|
||||
{{- $component = set $component "port" 8000 }}
|
||||
{{- $component | toYaml }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection Resources.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApi.resources" }}
|
||||
requests:
|
||||
cpu: {{ (((.component).resources).requests).cpu | default "1" }}
|
||||
memory: {{ (((.component).resources).requests).memory | default "6Gi" }}
|
||||
{{- if ((.root.Values.config).parseLayoutDetection).gpu }}
|
||||
nvidia.com/gpu: 1
|
||||
{{- end }}
|
||||
limits:
|
||||
cpu: {{ (((.component).resources).limits).cpu | default "2" }}
|
||||
memory: {{ (((.component).resources).limits).memory | default "12Gi" }}
|
||||
{{- if ((.root.Values.config).parseLayoutDetection).gpu }}
|
||||
nvidia.com/gpu: 1
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection Liveness Probe.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApi.livenessProbe" }}
|
||||
httpGet:
|
||||
path: /health
|
||||
port: http
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 15
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 5
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection Readiness Probe.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApi.readinessProbe" }}
|
||||
httpGet:
|
||||
path: /health
|
||||
port: http
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 15
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 5
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection Startup Probe.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApi.startupProbe" }}
|
||||
httpGet:
|
||||
path: /health
|
||||
port: http
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 15
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 5
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection Environment Variables.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApi.env" }}
|
||||
{{- if (.component).extraEnvVariables }}
|
||||
{{ toYaml (.component).extraEnvVariables }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection Environment Variables from Secrets and ConfigMaps.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApi.envFrom" }}
|
||||
{{- include "llamacloud.secrets.license" .root}}
|
||||
{{- if (include "llamacloud.component.llamaParseLayoutDetectionApi.configMap" $) }}
|
||||
- configMapRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
{{- if (include "llamacloud.component.llamaParseLayoutDetectionApi.secret" $) }}
|
||||
- secretRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection Secret.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApi.secret" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection ConfigMap.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApi.configMap" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection Volume Mounts.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApi.volumeMounts" }}
|
||||
- mountPath: /tmp
|
||||
name: tmp
|
||||
{{- if (.component).volumeMounts }}
|
||||
{{ toYaml (.component).volumeMounts }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Layout Detection Volumes.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseLayoutDetectionApi.volumes" }}
|
||||
- emptyDir: {}
|
||||
name: tmp
|
||||
{{- if (.component).volumes }}
|
||||
{{ toYaml (.component).volumes }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,177 @@
|
||||
{{/*
|
||||
Parse OCR Image Tag Suffix.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseOcr.imageTagSuffix" }}
|
||||
{{- if not ((.Values.config).parseOcr).gpu -}}
|
||||
-cpu
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse OCR Component Settings.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseOcr" }}
|
||||
{{- $suffix := include "llamacloud.component.llamaParseOcr.imageTagSuffix" . }}
|
||||
{{- $component := .Values.llamaParseOcr | deepCopy }}
|
||||
{{- $component = set $component "prefix" "llamacloud.component.llamaParseOcr" }}
|
||||
{{- $component = set $component "name" "llamacloud-ocr" }}
|
||||
{{- if not (empty ($.Values.llamaParseOcr).image) }}
|
||||
{{- $component = set $component "image" (print ($.Values.llamaParseOcr).image $suffix) }}
|
||||
{{- else }}
|
||||
{{- $component = set $component "image" ( print "docker.io/llamaindex/llamacloud-llamaparse-ocr:" .Chart.AppVersion $suffix ) }}
|
||||
{{- end }}
|
||||
{{- $component = set $component "imagePullPolicy" ( ($.Values.llamaParseOcr).imagePullPolicy | default "IfNotPresent" ) }}
|
||||
{{- $component = set $component "port" 8080 }}
|
||||
{{- $component = set $component "command" (list "serve") }}
|
||||
{{- $component | toYaml }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse OCR Resources.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseOcr.resources" }}
|
||||
requests:
|
||||
cpu: {{ (((.component).resources).requests).cpu | default "2" }}
|
||||
memory: {{ (((.component).resources).requests).memory | default "12Gi" }}
|
||||
{{- if ((.root.Values.config).parseOcr).gpu }}
|
||||
nvidia.com/gpu: 1
|
||||
{{- end }}
|
||||
limits:
|
||||
cpu: {{ (((.component).resources).limits).cpu | default "4" }}
|
||||
memory: {{ (((.component).resources).limits).memory | default "16Gi" }}
|
||||
{{- if ((.root.Values.config).parseOcr).gpu }}
|
||||
nvidia.com/gpu: 1
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse OCR Liveness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseOcr.livenessProbe" }}
|
||||
httpGet:
|
||||
path: /health_check
|
||||
port: http
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 15
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 5
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse OCR Readiness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseOcr.readinessProbe" }}
|
||||
httpGet:
|
||||
path: /health_check
|
||||
port: http
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 15
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 5
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse OCR Startup Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseOcr.startupProbe" }}
|
||||
httpGet:
|
||||
path: /health_check
|
||||
port: http
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 15
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 5
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse OCR Environment Variables.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseOcr.env" }}
|
||||
{{- if ((.root.Values.config).parseOcr).gpu }}
|
||||
- name: PADDLE_OCR_ENABLED
|
||||
value: "true"
|
||||
{{- end }}
|
||||
{{- if (.component).extraEnvVariables }}
|
||||
{{ toYaml (.component).extraEnvVariables }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse OCR Environment Variables from Secrets and ConfigMaps.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseOcr.envFrom" }}
|
||||
{{- include "llamacloud.secrets.license" .root}}
|
||||
{{- if (include "llamacloud.component.llamaParseOcr.configMap" $) }}
|
||||
- configMapRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
{{- if (include "llamacloud.component.llamaParseOcr.secret" $) }}
|
||||
- secretRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse OCR Secret.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseOcr.secret" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse OCR ConfigMap.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseOcr.configMap" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse OCR Volume Mounts.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseOcr.volumeMounts" }}
|
||||
- mountPath: /tmp
|
||||
name: tmp
|
||||
{{- if (.component).volumeMounts }}
|
||||
{{ toYaml (.component).volumeMounts }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse OCR Volumes.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParseOcr.volumes" }}
|
||||
- emptyDir: {}
|
||||
name: tmp
|
||||
{{- if (.component).volumes }}
|
||||
{{ toYaml (.component).volumes }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,178 @@
|
||||
{{/*
|
||||
Parse Component Settings.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParse" }}
|
||||
{{- $component := .Values.llamaParse }}
|
||||
{{- $component = set $component "prefix" "llamacloud.component.llamaParse" }}
|
||||
{{- $component = set $component "name" "llamacloud-parse" }}
|
||||
{{- $component = set $component "image" ($.Values.llamaParse).image | default ( print "docker.io/llamaindex/llamacloud-llamaparse:" .Chart.AppVersion ) }}
|
||||
{{- $component = set $component "imagePullPolicy" ( ($.Values.llamaParse).imagePullPolicy | default "IfNotPresent" ) }}
|
||||
{{- $component = set $component "port" 8004 }}
|
||||
{{- $component = set $component "usesS3" "true" }}
|
||||
{{- $component | toYaml }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Resources.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParse.resources" }}
|
||||
requests:
|
||||
cpu: {{ (((.component).resources).requests).cpu | default "3" }}
|
||||
memory: {{ (((.component).resources).requests).memory | default "6Gi" }}
|
||||
limits:
|
||||
cpu: {{ (((.component).resources).limits).cpu | default "7" }}
|
||||
memory: {{ (((.component).resources).limits).memory | default "13Gi" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Liveness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParse.livenessProbe" }}
|
||||
httpGet:
|
||||
path: /livez
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 30
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 10
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Readiness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParse.readinessProbe" }}
|
||||
httpGet:
|
||||
path: /livez
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 30
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 10
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Startup Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParse.startupProbe" }}
|
||||
httpGet:
|
||||
path: /livez
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 30
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 10
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Environment Variables.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParse.env" }}
|
||||
{{- if (.component).extraEnvVariables }}
|
||||
{{ toYaml (.component).extraEnvVariables }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Environment Variables from Secrets and ConfigMaps.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParse.envFrom" }}
|
||||
{{- include "llamacloud.secrets.license" .root}}
|
||||
- configMapRef:
|
||||
name: bucket-config
|
||||
- configMapRef:
|
||||
name: urls-config
|
||||
- configMapRef:
|
||||
name: concurrency-config
|
||||
{{- if (include "llamacloud.component.llamaParse.configMap" $ ) }}
|
||||
- configMapRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
{{- if (include "llamacloud.component.llamaParse.secret" $) }}
|
||||
- secretRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
- secretRef:
|
||||
name: bucket-secret
|
||||
{{- include "llamacloud.secrets.rabbitmq" .root }}
|
||||
{{- include "llamacloud.secrets.openAi" .root }}
|
||||
{{- include "llamacloud.secrets.anthropic" .root }}
|
||||
{{- include "llamacloud.secrets.gemini" .root }}
|
||||
{{- include "llamacloud.secrets.azureOpenAi" .root }}
|
||||
{{- include "llamacloud.secrets.awsBedrock" .root }}
|
||||
{{- include "llamacloud.secrets.googleVertexAi" .root }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Secret.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParse.secret" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse ConfigMap.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParse.configMap" }}
|
||||
DEBUG_MODE: {{ ((.root.Values.config).parse).debugMode | default false | quote }}
|
||||
MAX_QUEUE_CONCURRENCY: {{ ((.root.Values.config).parse).maxQueueConcurrency | default 1 | quote }}
|
||||
|
||||
{{- if ((.root.Values.config).parse).preferedPremiumModel }}
|
||||
PREFERED_PREMIUM_MODE_MODEL: {{ ((.root.Values.config).parse).preferedPremiumModel | quote }}
|
||||
{{- end }}
|
||||
{{if ((.root.Values.config).parse).writeDirectory }}
|
||||
LLAMAPARSE_WRITE_DIRECTORY: {{ ((.root.Values.config).parse).writeDirectory | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Volume Mounts.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParse.volumeMounts" }}
|
||||
- mountPath: /tmp
|
||||
name: tmp
|
||||
{{- if (.component).volumeMounts }}
|
||||
{{ toYaml (.component).volumeMounts }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Parse Volumes.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.llamaParse.volumes" }}
|
||||
- emptyDir: {}
|
||||
name: tmp
|
||||
{{- if (((.root.Values.config).storageBuckets).s3proxy.enabled | default false) }}
|
||||
- emptyDir: {}
|
||||
name: s3proxy-tmp
|
||||
{{- end }}
|
||||
{{- if (.component).volumes }}
|
||||
{{ toYaml (.component).volumes }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,53 @@
|
||||
{{/*
|
||||
S3Proxy Sidecar Container Definition.
|
||||
*/}}
|
||||
{{ define "llamacloud.s3proxy.container" }}
|
||||
{{- if ((($.Values.config).storageBuckets).s3proxy.enabled | default false) }}
|
||||
- name: s3proxy
|
||||
securityContext: {{ toYaml ((($.Values.config).storageBuckets).s3proxy).securityContext | indent 4}}
|
||||
image: "{{ ((($.Values.config).storageBuckets).s3proxy).image | default "docker.io/andrewgaul/s3proxy:sha-82e50ee" }}"
|
||||
imagePullPolicy: {{ ((($.Values.config).storageBuckets).s3proxy).imagePullPolicy | default "IfNotPresent" }}
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: {{ print (int ((($.Values.config).storageBuckets).s3proxy.containerPort | default 80))}}
|
||||
protocol: TCP
|
||||
resources:
|
||||
requests:
|
||||
cpu: {{ ((((($.Values.config).storageBuckets).s3proxy).resources).requests).cpu | default "500m" }}
|
||||
memory: {{ ((((($.Values.config).storageBuckets).s3proxy).resources).requests).memory | default "512Mi" }}
|
||||
limits:
|
||||
cpu: {{ ((((($.Values.config).storageBuckets).s3proxy).resources).limits).cpu | default "1" }}
|
||||
memory: {{ ((((($.Values.config).storageBuckets).s3proxy).resources).limits).memory | default "1Gi" }}
|
||||
env:
|
||||
- name: LOG_LEVEL
|
||||
value: {{ ($.Values.config).logLevel | default "info" }}
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: s3proxy-config
|
||||
- secretRef:
|
||||
name: s3proxy-secret
|
||||
volumeMounts:
|
||||
- name: s3proxy-tmp
|
||||
mountPath: /tmp
|
||||
subPath: tmp-dir
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
S3Proxy Secret.
|
||||
*/}}
|
||||
{{ define "llamacloud.s3proxy.secret" }}
|
||||
{{- range $key, $value := $.Values.config.storageBuckets.s3proxy.config }}
|
||||
{{ $key }}: {{ $value | b64enc | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
S3Proxy ConfigMap Data.
|
||||
*/}}
|
||||
{{ define "llamacloud.s3proxy.configMap" }}
|
||||
S3PROXY_AUTHORIZATION: "none"
|
||||
S3PROXY_CORS_ALLOW_ORIGINS: "*"
|
||||
S3PROXY_ENDPOINT: {{ printf "http://0.0.0.0:%d" (int ((($.Values.config).storageBuckets).s3proxy.containerPort | default 80)) | quote }}
|
||||
S3PROXY_IGNORE_UNKNOWN_HEADERS: "true"
|
||||
{{- end }}
|
||||
@@ -0,0 +1,181 @@
|
||||
{{/*
|
||||
License Secret envFrom
|
||||
*/}}
|
||||
{{ define "llamacloud.secrets.license" }}
|
||||
{{- if (.Values.license).secret }}
|
||||
- secretRef:
|
||||
name: {{ .Values.license.secret }}
|
||||
{{- else }}
|
||||
- secretRef:
|
||||
name: llamacloud-license-key
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
PostgreSQL Secret envFrom
|
||||
*/}}
|
||||
{{ define "llamacloud.secrets.postgresql" }}
|
||||
{{- if (.Values.postgresql).secret }}
|
||||
- secretRef:
|
||||
name: {{ .Values.postgresql.secret }}
|
||||
{{- else }}
|
||||
- secretRef:
|
||||
name: "postgresql-secret"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
MongoDB Secret envFrom
|
||||
*/}}
|
||||
{{ define "llamacloud.secrets.mongodb" }}
|
||||
{{- if (.Values.mongodb).secret }}
|
||||
- secretRef:
|
||||
name: {{ .Values.mongodb.secret }}
|
||||
{{- else }}
|
||||
- secretRef:
|
||||
name: "mongodb-secret"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
RabbitMQ Secret envFrom
|
||||
*/}}
|
||||
{{ define "llamacloud.secrets.rabbitmq" }}
|
||||
{{- if (.Values.rabbitmq).secret }}
|
||||
- secretRef:
|
||||
name: {{ .Values.rabbitmq.secret }}
|
||||
{{- else }}
|
||||
- secretRef:
|
||||
name: "rabbitmq-secret"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Redis Secret envFrom
|
||||
*/}}
|
||||
{{ define "llamacloud.secrets.redis" }}
|
||||
{{- if (.Values.redis).secret }}
|
||||
- secretRef:
|
||||
name: {{ .Values.redis.secret }}
|
||||
{{- else }}
|
||||
- secretRef:
|
||||
name: "redis-secret"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Qdrant Secret envFrom
|
||||
*/}}
|
||||
{{ define "llamacloud.secrets.qdrant" }}
|
||||
{{- if ( and (.Values.qdrant).enabled (.Values.qdrant).secret ) }}
|
||||
- secretRef:
|
||||
name: {{ .Values.qdrant.secret }}
|
||||
{{- else if (.Values.qdrant).enabled }}
|
||||
- secretRef:
|
||||
name: "qdrant-secret"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Basic Auth Secret envFrom
|
||||
*/}}
|
||||
{{ define "llamacloud.secrets.basicAuth" }}
|
||||
{{- if ( and (((.Values.config).authentication).basicAuth).enabled (((.Values.config).authentication).basicAuth).secret ) }}
|
||||
- secretRef:
|
||||
name: {{ .Values.config.authentication.basicAuth.secret }}
|
||||
{{- else if (((.Values.config).authentication).basicAuth).enabled }}
|
||||
- secretRef:
|
||||
name: "basic-auth-secret"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
OIDC Secret envFrom
|
||||
*/}}
|
||||
{{ define "llamacloud.secrets.oidc" }}
|
||||
{{- if ( and (((.Values.config).authentication).oidc).enabled (((.Values.config).authentication).oidc).secret ) }}
|
||||
- secretRef:
|
||||
name: {{ .Values.config.authentication.oidc.secret }}
|
||||
{{- else if (((.Values.config).authentication).oidc).enabled }}
|
||||
- secretRef:
|
||||
name: "oidc-secret"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
OpenAI Secret envFrom
|
||||
*/}}
|
||||
{{ define "llamacloud.secrets.openAi" }}
|
||||
{{- if (((.Values.config).llms).openAi).secret }}
|
||||
- secretRef:
|
||||
name: {{ .Values.config.llms.openAi.secret }}
|
||||
{{- else if (((.Values.config).llms).openAi).apiKey }}
|
||||
- secretRef:
|
||||
name: "openai-api-key-secret"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Anthropic Secret envFrom
|
||||
*/}}
|
||||
{{ define "llamacloud.secrets.anthropic" }}
|
||||
{{- if (((.Values.config).llms).anthropic).secret }}
|
||||
- secretRef:
|
||||
name: {{ .Values.config.llms.anthropic.secret }}
|
||||
{{- else if (((.Values.config).llms).anthropic).apiKey }}
|
||||
- secretRef:
|
||||
name: "anthropic-api-key-secret"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Gemini Secret envFrom
|
||||
*/}}
|
||||
{{ define "llamacloud.secrets.gemini" }}
|
||||
{{- if (((.Values.config).llms).gemini).secret }}
|
||||
- secretRef:
|
||||
name: {{ .Values.config.llms.gemini.secret }}
|
||||
{{- else if (((.Values.config).llms).gemini).apiKey }}
|
||||
- secretRef:
|
||||
name: "gemini-api-key-secret"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Azure Open AI Secret envFrom
|
||||
*/}}
|
||||
{{ define "llamacloud.secrets.azureOpenAi" }}
|
||||
{{- if (((.Values.config).llms).azureOpenAi).secret }}
|
||||
- secretRef:
|
||||
name: {{ .Values.config.llms.azureOpenAi.secret }}
|
||||
{{- else if (((.Values.config).llms).azureOpenAi).deployments }}
|
||||
- secretRef:
|
||||
name: "azure-open-ai-api-key-secret"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
AWS Bedrock Secret envFrom
|
||||
*/}}
|
||||
{{ define "llamacloud.secrets.awsBedrock" }}
|
||||
{{- if (((.Values.config).llms).awsBedrock).secret }}
|
||||
- secretRef:
|
||||
name: {{ .Values.config.llms.awsBedrock.secret }}
|
||||
{{- else if and (((.Values.config).llms).awsBedrock).accessKeyId (((.Values.config).llms).awsBedrock).secretAccessKey (((.Values.config).llms).awsBedrock).region }}
|
||||
- secretRef:
|
||||
name: "aws-bedrock-api-key-secret"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Google Vertex AI Secret envFrom
|
||||
*/}}
|
||||
{{ define "llamacloud.secrets.googleVertexAi" }}
|
||||
{{- if (((.Values.config).llms).googleVertexAi).secret }}
|
||||
- secretRef:
|
||||
name: {{ .Values.config.llms.googleVertexAi.secret }}
|
||||
{{- else if and (((.Values.config).llms).googleVertexAi).projectId (((.Values.config).llms).googleVertexAi).credentialsJson (((.Values.config).llms).googleVertexAi).location }}
|
||||
- secretRef:
|
||||
name: "google-vertex-ai-api-key-secret"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,175 @@
|
||||
{{/*
|
||||
Temporal Jobs Service Component Settings.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.jobsService" }}
|
||||
{{- $component := ($.Values.temporalWorkloads).jobsService }}
|
||||
{{- $component = set $component "prefix" "llamacloud.component.temporal.jobsService" }}
|
||||
{{- $component = set $component "name" "llamacloud-temporal-operator" }}
|
||||
{{- $component = set $component "image" (($.Values.temporalWorkloads).jobsService).image | default ( print "docker.io/llamaindex/llamacloud-backend:" .Chart.AppVersion ) }}
|
||||
{{- $component = set $component "imagePullPolicy" ( (($.Values.temporalWorkloads).jobsService).imagePullPolicy | default "IfNotPresent" ) }}
|
||||
{{- $component = set $component "port" 8002 }}
|
||||
{{- $component = set $component "command" (list "start_jobs_api") }}
|
||||
{{- $component = set $component "usesS3" "true" }}
|
||||
{{- $component | toYaml }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Jobs Service Resources.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.jobsService.resources" }}
|
||||
requests:
|
||||
cpu: {{ (((.component).resources).requests).cpu | default "500m" }}
|
||||
memory: {{ (((.component).resources).requests).memory | default "4Gi" }}
|
||||
limits:
|
||||
cpu: {{ (((.component).resources).limits).cpu | default "2" }}
|
||||
memory: {{ (((.component).resources).limits).memory | default "8Gi" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Jobs Service Liveness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.jobsService.livenessProbe" }}
|
||||
httpGet:
|
||||
path: /healthcheck
|
||||
port: http
|
||||
periodSeconds: 15
|
||||
timeoutSeconds: 10
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Jobs Service Readiness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.jobsService.readinessProbe" }}
|
||||
httpGet:
|
||||
path: /healthcheck
|
||||
port: http
|
||||
periodSeconds: 15
|
||||
timeoutSeconds: 10
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Jobs Service Startup Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.jobsService.startupProbe" }}
|
||||
httpGet:
|
||||
path: /healthcheck
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 15
|
||||
timeoutSeconds: 10
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Jobs Service Environment Variables.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.jobsService.env" }}
|
||||
{{- if (.component).extraEnvVariables }}
|
||||
{{ toYaml (.component).extraEnvVariables }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Jobs Service Environment Variables from Secrets and ConfigMaps.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.jobsService.envFrom" }}
|
||||
{{- include "llamacloud.secrets.license" .root}}
|
||||
- configMapRef:
|
||||
name: bucket-config
|
||||
- configMapRef:
|
||||
name: common-config
|
||||
- configMapRef:
|
||||
name: extract-config
|
||||
- configMapRef:
|
||||
name: urls-config
|
||||
- configMapRef:
|
||||
name: temporal-connection-config
|
||||
{{- if (include "llamacloud.component.temporal.jobsService.configMap" $) }}
|
||||
- configMapRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
{{- if (include "llamacloud.component.temporal.jobsService.secret" $) }}
|
||||
- secretRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
- secretRef:
|
||||
name: bucket-secret
|
||||
{{- include "llamacloud.secrets.postgresql" .root }}
|
||||
{{- include "llamacloud.secrets.mongodb" .root }}
|
||||
{{- include "llamacloud.secrets.rabbitmq" .root }}
|
||||
{{- include "llamacloud.secrets.redis" .root }}
|
||||
{{- include "llamacloud.secrets.openAi" .root }}
|
||||
{{- include "llamacloud.secrets.anthropic" .root }}
|
||||
{{- include "llamacloud.secrets.gemini" .root }}
|
||||
{{- include "llamacloud.secrets.azureOpenAi" .root }}
|
||||
{{- include "llamacloud.secrets.awsBedrock" .root }}
|
||||
{{- include "llamacloud.secrets.googleVertexAi" .root }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Jobs Service Secret.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.jobsService.secret" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Jobs Service ConfigMap.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.jobsService.configMap" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Jobs Service Volume Mounts.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.jobsService.volumeMounts" }}
|
||||
- mountPath: /tmp
|
||||
name: tmp
|
||||
{{- if (.component).volumeMounts }}
|
||||
{{ toYaml (.component).volumeMounts }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Jobs Service Volumes.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.jobsService.volumes" }}
|
||||
- emptyDir: {}
|
||||
name: tmp
|
||||
{{- if (((.root.Values.config).storageBuckets).s3proxy.enabled | default false) }}
|
||||
- emptyDir: {}
|
||||
name: s3proxy-tmp
|
||||
{{- end }}
|
||||
{{- if (.component).volumes }}
|
||||
{{ toYaml (.component).volumes }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,181 @@
|
||||
{{/*
|
||||
Temporal Parse Component Settings.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.llamaParse" }}
|
||||
{{- $component := ($.Values.temporalWorkloads).llamaParse }}
|
||||
{{- $component = set $component "prefix" "llamacloud.component.temporal.llamaParse" }}
|
||||
{{- $component = set $component "name" "llamacloud-temporal-parse" }}
|
||||
{{- $component = set $component "image" (($.Values.temporalWorkloads).llamaParse).image | default ( print "docker.io/llamaindex/llamacloud-llamaparse:" .Chart.AppVersion ) }}
|
||||
{{- $component = set $component "imagePullPolicy" ( (($.Values.temporalWorkloads).llamaParse).imagePullPolicy | default "IfNotPresent" ) }}
|
||||
{{- $component = set $component "port" 8003 }}
|
||||
{{- $component = set $component "command" (list "/bin/bash" "-c" "exec node --max-old-space-size=$MAX_OLD_SPACE_SIZE dist/worker/temporal/worker.js") }}
|
||||
{{- $component = set $component "usesS3" "true" }}
|
||||
{{- $component | toYaml }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Parse Resources.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.llamaParse.resources" }}
|
||||
requests:
|
||||
cpu: {{ (((.component).resources).requests).cpu | default "3" }}
|
||||
memory: {{ (((.component).resources).requests).memory | default "6Gi" }}
|
||||
limits:
|
||||
cpu: {{ (((.component).resources).limits).cpu | default "7" }}
|
||||
memory: {{ (((.component).resources).limits).memory | default "13Gi" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Parse Liveness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.llamaParse.livenessProbe" }}
|
||||
httpGet:
|
||||
path: /healthcheck
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 30
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 10
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Parse Readiness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.llamaParse.readinessProbe" }}
|
||||
httpGet:
|
||||
path: /healthcheck
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 30
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 10
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Parse Startup Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.llamaParse.startupProbe" }}
|
||||
httpGet:
|
||||
path: /healthcheck
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 30
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 10
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Parse Environment Variables.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.llamaParse.env" }}
|
||||
{{- if (.component).extraEnvVariables }}
|
||||
{{ toYaml (.component).extraEnvVariables }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Parse Environment Variables from Secrets and ConfigMaps.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.llamaParse.envFrom" }}
|
||||
{{- include "llamacloud.secrets.license" .root}}
|
||||
- configMapRef:
|
||||
name: bucket-config
|
||||
- configMapRef:
|
||||
name: urls-config
|
||||
- configMapRef:
|
||||
name: concurrency-config
|
||||
- configMapRef:
|
||||
name: temporal-connection-config
|
||||
{{- if (include "llamacloud.component.temporal.llamaParse.configMap" $ ) }}
|
||||
- configMapRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
{{- if (include "llamacloud.component.temporal.llamaParse.secret" $) }}
|
||||
- secretRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
- secretRef:
|
||||
name: bucket-secret
|
||||
{{- include "llamacloud.secrets.rabbitmq" .root }}
|
||||
{{- include "llamacloud.secrets.openAi" .root }}
|
||||
{{- include "llamacloud.secrets.anthropic" .root }}
|
||||
{{- include "llamacloud.secrets.gemini" .root }}
|
||||
{{- include "llamacloud.secrets.azureOpenAi" .root }}
|
||||
{{- include "llamacloud.secrets.awsBedrock" .root }}
|
||||
{{- include "llamacloud.secrets.googleVertexAi" .root }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Parse Secret.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.llamaParse.secret" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Parse ConfigMap.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.llamaParse.configMap" }}
|
||||
DEBUG_MODE: {{ ((.root.Values.config).parse).debugMode | default false | quote }}
|
||||
MAX_QUEUE_CONCURRENCY: {{ ((.root.Values.config).parse).maxQueueConcurrency | default 1 | quote }}
|
||||
|
||||
{{- if ((.root.Values.config).parse).preferedPremiumModel }}
|
||||
PREFERED_PREMIUM_MODE_MODEL: {{ ((.root.Values.config).parse).preferedPremiumModel | quote }}
|
||||
{{- end }}
|
||||
{{if ((.root.Values.config).parse).writeDirectory }}
|
||||
LLAMAPARSE_WRITE_DIRECTORY: {{ ((.root.Values.config).parse).writeDirectory | quote }}
|
||||
{{- end}}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Parse Volume Mounts.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.llamaParse.volumeMounts" }}
|
||||
- mountPath: /tmp
|
||||
name: tmp
|
||||
{{- if (.component).volumeMounts }}
|
||||
{{ toYaml (.component).volumeMounts }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Parse Volumes.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.llamaParse.volumes" }}
|
||||
- emptyDir: {}
|
||||
name: tmp
|
||||
{{- if (((.root.Values.config).storageBuckets).s3proxy.enabled | default false) }}
|
||||
- emptyDir: {}
|
||||
name: s3proxy-tmp
|
||||
{{- end }}
|
||||
{{- if (.component).volumes }}
|
||||
{{ toYaml (.component).volumes }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,205 @@
|
||||
{{/*
|
||||
Temporal Worker Component Settings.
|
||||
|
||||
Parameters:
|
||||
- name: The name of the component
|
||||
- component: The component configuration in values.yaml
|
||||
- appVersion: The application version
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.worker" }}
|
||||
{{- .name | required "You must provide a name for the component." }}
|
||||
{{- .component | required "You must provide a component for configuration" }}
|
||||
{{- $appVersion := .appVersion | required "You must provide the Helm Chart AppVersion" }}
|
||||
{{- $component := .component }}
|
||||
{{- $component = set $component "prefix" "llamacloud.component.temporal.worker" }}
|
||||
{{- $component = set $component "name" .name }}
|
||||
{{- $component = set $component "image" .component.image | default ( print "docker.io/llamaindex/llamacloud-backend:" .appVersion ) }}
|
||||
{{- $component = set $component "imagePullPolicy" ( .component.imagePullPolicy | default "IfNotPresent" ) }}
|
||||
{{- $component = set $component "port" 8000 }}
|
||||
{{- $component = set $component "command" (.component.command | default (list "temporal_worker")) }}
|
||||
{{- $component = set $component "usesS3" "true" }}
|
||||
{{- $component | toYaml }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Worker Resources.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.worker.resources" }}
|
||||
requests:
|
||||
cpu: {{ (((.component).resources).requests).cpu | default "500m" }}
|
||||
memory: {{ (((.component).resources).requests).memory | default "4Gi" }}
|
||||
limits:
|
||||
cpu: {{ (((.component).resources).limits).cpu | default "2" }}
|
||||
memory: {{ (((.component).resources).limits).memory | default "6Gi" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Worker Liveness Probe.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.worker.livenessProbe" }}
|
||||
httpGet:
|
||||
path: /healthcheck
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 15
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Worker Readiness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.worker.readinessProbe" }}
|
||||
httpGet:
|
||||
path: /healthcheck
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 15
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Worker Startup Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.worker.startupProbe" }}
|
||||
httpGet:
|
||||
path: /healthcheck
|
||||
port: http
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 15
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Worker Environment Variables.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.worker.env" }}
|
||||
- name: IS_TEMPORAL_WORKER
|
||||
value: "true"
|
||||
- name: WORKER_HOST
|
||||
value: "0.0.0.0"
|
||||
- name: WORKER_PORT
|
||||
value: "8000"
|
||||
{{- if (.component).extraEnvVariables }}
|
||||
{{ toYaml (.component).extraEnvVariables }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Worker Environment Variables from Secrets and ConfigMaps.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.worker.envFrom" }}
|
||||
{{- include "llamacloud.secrets.license" .root}}
|
||||
- configMapRef:
|
||||
name: bucket-config
|
||||
- configMapRef:
|
||||
name: common-config
|
||||
- configMapRef:
|
||||
name: extract-config
|
||||
- configMapRef:
|
||||
name: urls-config
|
||||
- configMapRef:
|
||||
name: temporal-connection-config
|
||||
{{- if (include "llamacloud.component.temporal.worker.configMap" $) }}
|
||||
- configMapRef:
|
||||
name: {{ .component.name | quote }}
|
||||
{{- end }}
|
||||
{{- if (include "llamacloud.component.temporal.worker.secret" $) }}
|
||||
- secretRef:
|
||||
name: {{ .component.name | quote }}
|
||||
{{- end }}
|
||||
- secretRef:
|
||||
name: bucket-secret
|
||||
{{- include "llamacloud.secrets.postgresql" .root }}
|
||||
{{- include "llamacloud.secrets.mongodb" .root }}
|
||||
{{- include "llamacloud.secrets.rabbitmq" .root }}
|
||||
{{- include "llamacloud.secrets.redis" .root }}
|
||||
{{- include "llamacloud.secrets.qdrant" .root }}
|
||||
{{- include "llamacloud.secrets.basicAuth" .root }}
|
||||
{{- include "llamacloud.secrets.oidc" .root }}
|
||||
{{- include "llamacloud.secrets.openAi" .root }}
|
||||
{{- include "llamacloud.secrets.anthropic" .root }}
|
||||
{{- include "llamacloud.secrets.gemini" .root }}
|
||||
{{- include "llamacloud.secrets.azureOpenAi" .root }}
|
||||
{{- include "llamacloud.secrets.awsBedrock" .root }}
|
||||
{{- include "llamacloud.secrets.googleVertexAi" .root }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Worker Secret.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.worker.secret" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Worker ConfigMap.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.worker.configMap" }}
|
||||
JOB_CONSUMER_PORT: "80"
|
||||
|
||||
MAX_JOBS_IN_EXECUTION_PER_JOB_TYPE: {{ ((.root.Values.config).jobs).maxJobsInExecutionPerJobType | default 10 | quote }}
|
||||
MAX_INDEX_JOBS_IN_EXECUTION: {{ ((.root.Values.config).jobs).maxIndexJobsInExecution | default 0 | quote }}
|
||||
MAX_DOCUMENT_INGESTION_JOBS_IN_EXECUTION: {{ ((.root.Values.config).jobs).maxDocumentIngestionJobsInExecution | default 1 | quote }}
|
||||
INCLUDE_JOB_ERROR_DETAILS: {{ ((.root.Values.config).jobs).includeJobErrorDetails | default "true" | quote }}
|
||||
DEFAULT_TRANSFORM_DOCUMENT_TIMEOUT_SECONDS: {{ ((.root.Values.config).jobs).defaultTransformDocumentTimeoutSeconds | default "240" | quote }}
|
||||
TRANSFORM_EMBEDDING_CHAR_LIMIT: {{ ((.root.Values.config).jobs).transformEmbeddingCharLimit | default "11520000" | quote }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Worker Volume Mounts.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.worker.volumeMounts" }}
|
||||
- mountPath: /tmp
|
||||
name: tmp
|
||||
{{- if (.component).volumeMounts }}
|
||||
{{ toYaml (.component).volumeMounts }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Temporal Worker Volumes.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.temporal.worker.volumes" }}
|
||||
- emptyDir: {}
|
||||
name: tmp
|
||||
{{- if (((.root.Values.config).storageBuckets).s3proxy.enabled | default false) }}
|
||||
- emptyDir: {}
|
||||
name: s3proxy-tmp
|
||||
{{- end }}
|
||||
{{- if (.component).volumes }}
|
||||
{{ toYaml (.component).volumes }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,156 @@
|
||||
{{/*
|
||||
Usage Component Settings.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.usage" }}
|
||||
{{- $component := .Values.usage }}
|
||||
{{- $component = set $component "prefix" "llamacloud.component.usage" }}
|
||||
{{- $component = set $component "name" "llamacloud-telemetry" }}
|
||||
{{- $component = set $component "image" ($.Values.usage).image | default ( print "docker.io/llamaindex/llamacloud-backend:" .Chart.AppVersion ) }}
|
||||
{{- $component = set $component "imagePullPolicy" ( ($.Values.usage).imagePullPolicy | default "IfNotPresent" ) }}
|
||||
{{- $component = set $component "port" 8005 }}
|
||||
{{- $component = set $component "command" (list "start_usage_service") }}
|
||||
{{- $component | toYaml }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Usage Resources.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.usage.resources" }}
|
||||
requests:
|
||||
cpu: {{ (((.root.Values.usage).resources).requests).cpu | default "1" }}
|
||||
memory: {{ (((.root.Values.usage).resources).requests).memory | default "1Gi" }}
|
||||
limits:
|
||||
cpu: {{ (((.root.Values.usage).resources).limits).cpu | default "2" }}
|
||||
memory: {{ (((.root.Values.usage).resources).limits).memory | default "2Gi" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Usage Liveness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.usage.livenessProbe" }}
|
||||
httpGet:
|
||||
path: /health_check
|
||||
port: http
|
||||
initialDelaySeconds: 15
|
||||
periodSeconds: 15
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Usage Readiness Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.usage.readinessProbe" }}
|
||||
httpGet:
|
||||
path: /health_check
|
||||
port: http
|
||||
initialDelaySeconds: 15
|
||||
periodSeconds: 15
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Usage Startup Probe.
|
||||
*/}}
|
||||
{{ define "llamacloud.component.usage.startupProbe" }}
|
||||
httpGet:
|
||||
path: /health_check
|
||||
port: http
|
||||
initialDelaySeconds: 15
|
||||
periodSeconds: 15
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 30
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Usage Environment Variables.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.usage.env" }}
|
||||
{{- if (.root.Values.usage).extraEnvVariables }}
|
||||
{{ toYaml (.root.Values.usage).extraEnvVariables }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
|
||||
{{/*
|
||||
Usage Environment Variables from Secrets and ConfigMaps.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.usage.envFrom" }}
|
||||
{{- include "llamacloud.secrets.license" .root}}
|
||||
{{- if (include "llamacloud.component.usage.configMap" $) }}
|
||||
- configMapRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
{{- if (include "llamacloud.component.usage.secret" $) }}
|
||||
- secretRef:
|
||||
name: {{ .component.name }}
|
||||
{{- end }}
|
||||
{{- include "llamacloud.secrets.postgresql" .root }}
|
||||
{{- include "llamacloud.secrets.redis" .root }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Usage Secret.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.usage.secret" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Usage ConfigMap.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.usage.configMap" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Usage Volume Mounts.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.usage.volumeMounts" }}
|
||||
- mountPath: /tmp
|
||||
name: tmp
|
||||
{{- if (.root.Values.usage).volumeMounts }}
|
||||
{{ toYaml (.root.Values.usage).volumeMounts }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Usage Volumes.
|
||||
|
||||
Parameters:
|
||||
- component: The component configuration in values.yaml
|
||||
- root: $
|
||||
*/}}
|
||||
{{ define "llamacloud.component.usage.volumes" }}
|
||||
- emptyDir: {}
|
||||
name: tmp
|
||||
{{- if (.root.Values.usage).volumes }}
|
||||
{{ toYaml (.root.Values.usage).volumes }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,40 @@
|
||||
{{- if .Values.ingress.enabled -}}
|
||||
{{- $ingressClassName := .Values.ingress.ingressClassName | required ".Values.ingress.ingressClassName is required" -}}
|
||||
{{- $host := .Values.ingress.host | required ".Values.ingress.host is required" -}}
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ .Release.Name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
{{- with .Values.ingress.annotations -}}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
ingressClassName: {{ $ingressClassName }}
|
||||
rules:
|
||||
- host: {{ $host }}
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
service:
|
||||
name: {{ (include "llamacloud.component.frontend" . | fromYaml ).name }}
|
||||
port:
|
||||
number: 80
|
||||
path: /
|
||||
pathType: Prefix
|
||||
- backend:
|
||||
service:
|
||||
name: {{ (include "llamacloud.component.backend" . | fromYaml ).name }}
|
||||
port:
|
||||
number: 80
|
||||
path: "/api"
|
||||
pathType: Prefix
|
||||
{{- if .Values.ingress.tlsSecretName }}
|
||||
tls:
|
||||
- hosts:
|
||||
- {{ $host }}
|
||||
secretName: {{ .Values.ingress.tlsSecretName }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,15 @@
|
||||
{{- range $name, $component := ((include "llamacloud.components" .) | fromYaml ) }}
|
||||
{{- $componentPrefix := $component.prefix }}
|
||||
{{- $params := dict "component" $component "root" $ }}
|
||||
{{- if (include (printf "%s.configMap" $componentPrefix) $params) }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ print $component.name | quote }}
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "name" $component.name "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" $params | indent 4 }}
|
||||
data: {{ include (printf "%s.configMap" $componentPrefix) $params | indent 2 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,21 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: bucket-config
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
CLOUD_PROVIDER: {{ ((.Values.config).storageBuckets).provider | default "aws" | quote }}
|
||||
|
||||
S3_DOCUMENT_BUCKET_NAME: {{ required ".Values.config.storageBuckets.parsedDocuments is required" ((.Values.config).storageBuckets).parsedDocuments }}
|
||||
S3_ETL_BUCKET_NAME: {{ required ".Values.config.storageBuckets.parsedEtl is required" ((.Values.config).storageBuckets).parsedEtl }}
|
||||
S3_EXTERNAL_COMPONENTS_BUCKET_NAME: {{ required ".Values.config.storageBuckets.parsedExternalComponents is required" ((.Values.config).storageBuckets).parsedExternalComponents }}
|
||||
S3_FILE_PARSING_BUCKET_NAME: {{ required ".Values.config.storageBuckets.parsedFileParsing is required" ((.Values.config).storageBuckets).parsedFileParsing }}
|
||||
S3_RAW_FILE_BUCKET_NAME: {{ required ".Values.config.storageBuckets.parsedRawFile is required" ((.Values.config).storageBuckets).parsedRawFile }}
|
||||
S3_LLAMA_CLOUD_PARSE_OUTPUT_BUCKET_NAME: {{ required ".Values.config.storageBuckets.parseOutput is required" ((.Values.config).storageBuckets).parseOutput }}
|
||||
S3_FILE_SCREENSHOT_BUCKET_NAME: {{ required ".Values.config.storageBuckets.parsedFileScreenshot is required" ((.Values.config).storageBuckets).parsedFileScreenshot }}
|
||||
S3_LLAMA_EXTRACT_OUTPUT_BUCKET_NAME: {{ required ".Values.config.storageBuckets.extractOutput is required" ((.Values.config).storageBuckets).extractOutput }}
|
||||
|
||||
S3_UPLOAD_BUCKET: {{ required ".Values.config.storageBuckets.parseFileUpload is required" ((.Values.config).storageBuckets).parseFileUpload }}
|
||||
S3_OUTPUT_BUCKET: {{ required ".Values.config.storageBuckets.parseFileOutput is required" ((.Values.config).storageBuckets).parseFileOutput }}
|
||||
@@ -0,0 +1,12 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: common-config
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
IS_DEPLOYED: "true"
|
||||
DEPLOYMENT_MODE: "prod"
|
||||
PARSE_PREMIUM: "true"
|
||||
ALLOWED_INDEX: "true"
|
||||
@@ -0,0 +1,98 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: concurrency-config
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
{{- if ((($.Values.config).parse).concurrency).accurateModeLLMConcurrency }}
|
||||
ACCURATE_MODE_LLM_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).accurateModeLLMConcurrency | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).multimodalModelConcurrency }}
|
||||
MULTIMODAL_MODEL_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).multimodalModelConcurrency | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).premiumModeModelConcurrency }}
|
||||
PREMIUM_MODE_MODEL_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).premiumModeModelConcurrency | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).ocrConcurrency }}
|
||||
OCR_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).ocrConcurrency | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).layoutExtractionConcurrency }}
|
||||
LAYOUT_EXTRACTION_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).layoutExtractionConcurrency | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).layoutExtractionV2Concurrency }}
|
||||
LAYOUT_EXTRACTION_V2_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).layoutExtractionV2Concurrency | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).layoutModeBlockParseConcurrency }}
|
||||
LAYOUT_MODE_BLOCK_PARSE_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).layoutModeBlockParseConcurrency | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).layoutModePageConcurrency }}
|
||||
LAYOUT_MODE_PAGE_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).layoutModePageConcurrency | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).layoutModeReadingOrderDetectionConcurrency }}
|
||||
LAYOUT_MODE_READING_ORDER_DETECTION_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).layoutModeReadingOrderDetectionConcurrency | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).gemini25Flash }}
|
||||
GEMINI_2_5_FLASH_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).gemini25Flash | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).gemini25Pro }}
|
||||
GEMINI_2_5_PRO_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).gemini25Pro | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).gemini20Flash }}
|
||||
GEMINI_2_0_FLASH_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).gemini20Flash | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).gemini20FlashLite }}
|
||||
GEMINI_2_0_FLASH_LITE_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).gemini20FlashLite | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).gemini15Flash }}
|
||||
GEMINI_1_5_FLASH_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).gemini15Flash | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).gemini15Pro }}
|
||||
GEMINI_1_5_PRO_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).gemini15Pro | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).openaiGpt4oMini }}
|
||||
OPENAI_GPT_4O_MINI_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).openaiGpt4oMini | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).openaiGpt4o }}
|
||||
OPENAI_GPT_4O_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).openaiGpt4o | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).openaiGpt41 }}
|
||||
OPENAI_GPT_4_1_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).openaiGpt41 | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).openaiGpt41Mini }}
|
||||
OPENAI_GPT_4_1_MINI_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).openaiGpt41Mini | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).openaiGpt41Nano }}
|
||||
OPENAI_GPT_4_1_NANO_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).openaiGpt41Nano | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).openaiGpt5 }}
|
||||
OPENAI_GPT_5_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).openaiGpt5 | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).openaiGpt5Mini }}
|
||||
OPENAI_GPT_5_MINI_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).openaiGpt5Mini | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).openaiGpt5Nano }}
|
||||
OPENAI_GPT_5_NANO_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).openaiGpt5Nano | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).openaiWhisper1 }}
|
||||
OPENAI_WHISPER_1_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).openaiWhisper1 | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).anthropicSonnet37 }}
|
||||
ANTHROPIC_SONNET_3_7_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).anthropicSonnet37 | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).anthropicSonnet35 }}
|
||||
ANTHROPIC_SONNET_3_5_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).anthropicSonnet35 | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).anthropicSonnet40 }}
|
||||
ANTHROPIC_SONNET_4_0_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).anthropicSonnet40 | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).anthropicSonnet45 }}
|
||||
ANTHROPIC_SONNET_4_5_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).anthropicSonnet45 | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).anthropicHaiku35 }}
|
||||
ANTHROPIC_HAIKU_3_5_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).anthropicHaiku35 | quote }}
|
||||
{{- end }}
|
||||
{{- if ((($.Values.config).parse).concurrency).anthropicHaiku45 }}
|
||||
ANTHROPIC_HAIKU_4_5_CONCURRENCY: {{ ((($.Values.config).parse).concurrency).anthropicHaiku45 | quote }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,12 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: extract-config
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
LLAMA_EXTRACT_MULTIMODAL_MODEL: {{ (($.Values.config).extraction).multimodalModel | default "gemini-2.0-flash" | quote }}
|
||||
LLAMA_EXTRACT_SCHEMA_GENERATION_MODEL: {{ (($.Values.config).extraction).schemaGenerationModel | default "gemini-2.0-flash" | quote }}
|
||||
LLAMA_EXTRACT_MAX_PAGES: {{ (($.Values.config).extraction).maxPages | default "500" | quote }}
|
||||
LLAMA_EXTRACT_MAX_FILE_SIZE_MB: {{ (($.Values.config).extraction).maxFileSizeMb | default "100" | quote }}
|
||||
@@ -0,0 +1,12 @@
|
||||
{{- if ((($.Values.config).storageBuckets).s3proxy.enabled | default false) }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: s3proxy-config
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
{{- include "llamacloud.s3proxy.configMap" $ | indent 2 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,32 @@
|
||||
{{- if and .Values.temporal.disabled .Values.temporal.deploy }}
|
||||
{{- fail "temporal.deploy must be false when temporal.disabled is true" }}
|
||||
{{- end }}
|
||||
{{- if not .Values.temporal.disabled }}
|
||||
{{- $temporalHost := "" }}
|
||||
{{- $temporalPort := "" }}
|
||||
{{- if .Values.temporal.deploy }}
|
||||
{{- /* When deploying subchart, auto-configure to point to the subchart's frontend service */}}
|
||||
{{- $temporalHost = printf "%s-temporal-subchart-frontend" .Release.Name }}
|
||||
{{- $temporalPort = "7233" }}
|
||||
{{- else }}
|
||||
{{- /* Using external Temporal, require host and port to be set */}}
|
||||
{{- if not (and .Values.temporal.host .Values.temporal.port) }}
|
||||
{{- fail "temporal.host and temporal.port are required when temporal.deploy is false" }}
|
||||
{{- end }}
|
||||
{{- $temporalHost = .Values.temporal.host }}
|
||||
{{- $temporalPort = .Values.temporal.port | toString }}
|
||||
{{- end }}
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: temporal-connection-config
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
TEMPORAL_HOST: {{ $temporalHost | quote }}
|
||||
TEMPORAL_PORT: {{ $temporalPort | quote }}
|
||||
TEMPORAL_NAMESPACE: {{ ((.Values.config).temporal).namespace | default $.Release.Namespace | quote }}
|
||||
TEMPORAL_WORKER_REGISTRY_PROFILE: {{ (.Values.config).workerRegistryProfile | default "consolidated" | quote }}
|
||||
TEMPORAL_JOB_SERVICE_URL: {{ printf "http://%s:%d" (include "llamacloud.component.temporal.jobsService" $ | fromYaml).name ( "80" | int) | quote }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,32 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: urls-config
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
JOB_API_SERVICE_PORT: "80"
|
||||
JOB_SERVICE_URL: {{ printf "http://%s:%d" (include "llamacloud.component.jobsService" $ | fromYaml).name ( "80" | int) | quote }}
|
||||
TRACKING_SERVICE_URL: {{ printf "http://%s:%d" (include "llamacloud.component.usage" $ | fromYaml).name ( "80" | int) | quote }}
|
||||
{{- if ( not (eq (.Values.ingress).host "localhost") )}}
|
||||
BACKEND_URL: {{ print (include "llamacloud.ingress.scheme" .) "://" (.Values.ingress).host | quote }}
|
||||
{{- else }}
|
||||
BACKEND_URL: {{ printf "http://%s:%d" (include "llamacloud.component.backend" $ | fromYaml).name ( "80" | int) | quote }}
|
||||
{{- end }}
|
||||
{{- if ($.Values.ingress).host }}
|
||||
LLAMACLOUD_INGRESS_URL: {{ print (include "llamacloud.ingress.scheme" .) "://" (.Values.ingress).host | quote }}
|
||||
{{- end }}
|
||||
{{- if (((.Values.config).storageBuckets).s3proxy.enabled | default false) }}
|
||||
S3_ENDPOINT_URL: {{ printf "http://localhost:%d" (int ((($.Values.config).storageBuckets).s3proxy.containerPort | default 80)) | quote }}
|
||||
{{- end }}
|
||||
{{- if .Values.config.parseOcr.enabled }}
|
||||
OCR_SERVER_URL: {{ printf "http://%s:%d/ocr" (include "llamacloud.component.llamaParseOcr" $ | fromYaml).name ( "80" | int) | quote }}
|
||||
{{- end }}
|
||||
{{- if .Values.config.parseLayoutDetection.enabled }}
|
||||
LAYOUT_EXTRACTION_ENDPOINT: {{ printf "http://%s:%d" (include "llamacloud.component.llamaParseLayoutDetectionApi" $ | fromYaml).name ( "80" | int) | quote }}
|
||||
LAYOUT_EXTRACTION_V2_ENDPOINT: {{ printf "http://%s:%d" (include "llamacloud.component.llamaParseLayoutDetectionApi" $ | fromYaml).name ( "80" | int) | quote }}
|
||||
{{- end }}
|
||||
{{- if .Values.config.parseLayoutDetectionV3.enabled }}
|
||||
LAYOUT_EXTRACTION_V3_ENDPOINT: {{ printf "http://%s:%d" (include "llamacloud.component.llamaParseLayoutDetectionApiV3" $ | fromYaml).name ( "80" | int) | quote }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,70 @@
|
||||
{{- range $name, $component := ((include "llamacloud.components" .) | fromYaml ) }}
|
||||
{{- $componentPrefix := $component.prefix }}
|
||||
{{- $params := dict "component" $component "root" $ }}
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ print $component.name | quote }}
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "name" $component.name "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" $params | indent 4 }}
|
||||
spec:
|
||||
replicas: {{ $component.replicas }}
|
||||
strategy:
|
||||
rollingUpdate:
|
||||
maxUnavailable: 0
|
||||
type: RollingUpdate
|
||||
selector:
|
||||
matchLabels: {{ include "llamacloud.labels" (dict "name" $component.name "root" $) | indent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
labels: {{ include "llamacloud.labels" (dict "name" $component.name "root" $) | indent 8 }}
|
||||
annotations: {{ include "llamacloud.podAnnotations" $params | indent 8 }}
|
||||
spec:
|
||||
imagePullSecrets: {{ $.Values.imagePullSecrets | toYaml | nindent 8 }}
|
||||
serviceAccountName: {{ $component.name | quote }}
|
||||
securityContext: {{ include "llamacloud.podSecurityContext" $params | indent 8 }}
|
||||
containers:
|
||||
- name: {{ $component.name | quote }}
|
||||
securityContext: {{ include "llamacloud.securityContext" $params | indent 10 }}
|
||||
image: {{ print $component.image | quote }}
|
||||
imagePullPolicy: {{ $component.imagePullPolicy }}
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: {{ $component.port }}
|
||||
protocol: TCP
|
||||
{{- if $component.command }}
|
||||
command: {{ $component.command | toYaml | nindent 10 }}
|
||||
{{- end }}
|
||||
livenessProbe: {{ include (printf "%s.livenessProbe" $componentPrefix) $ | indent 10 }}
|
||||
readinessProbe: {{ include (printf "%s.readinessProbe" $componentPrefix) $ | indent 10 }}
|
||||
startupProbe: {{ include (printf "%s.startupProbe" $componentPrefix) $ | indent 10 }}
|
||||
resources: {{ include (printf "%s.resources" $componentPrefix) $params | indent 10 }}
|
||||
env: {{ include (printf "%s.env" $componentPrefix) $params | indent 8 }}
|
||||
- name: LOG_LEVEL
|
||||
value: {{ ($.Values.config).logLevel | default "info" }}
|
||||
- name: PORT
|
||||
value: {{ $component.port | quote }}
|
||||
- name: UVICORN_PORT
|
||||
value: {{ $component.port | quote }}
|
||||
envFrom: {{ include (printf "%s.envFrom" $componentPrefix) $params | indent 8 }}
|
||||
volumeMounts: {{- include (printf "%s.volumeMounts" $componentPrefix) $params | indent 8 -}}
|
||||
{{- if $component.usesS3 }}
|
||||
{{- include "llamacloud.s3proxy.container" $ | indent 6 }}
|
||||
{{- end }}
|
||||
volumes: {{ include (printf "%s.volumes" $componentPrefix) $params | indent 6 }}
|
||||
{{- if $component.nodeSelector }}
|
||||
nodeSelector: {{ toYaml $component.nodeSelector | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if $component.affinity }}
|
||||
affinity: {{ toYaml $component.affinity | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if $component.tolerations }}
|
||||
tolerations: {{ toYaml $component.tolerations | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if $component.topologySpreadConstraints }}
|
||||
topologySpreadConstraints: {{ toYaml $component.topologySpreadConstraints | nindent 8 }}
|
||||
{{- end }}
|
||||
terminationGracePeriodSeconds: 30
|
||||
{{- end }}
|
||||
@@ -0,0 +1,4 @@
|
||||
{{- range .Values.extraObjects }}
|
||||
---
|
||||
{{ include "llamacloud.render" (dict "value" . "context" $) }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,14 @@
|
||||
{{- range $name, $component := ((include "llamacloud.components" .) | fromYaml ) }}
|
||||
{{- $componentPrefix := $component.prefix }}
|
||||
{{- if $component.horizontalPodAutoscalerSpec }}
|
||||
---
|
||||
apiVersion: autoscaling/v2
|
||||
kind: HorizontalPodAutoscaler
|
||||
metadata:
|
||||
name: {{ print $component.name | quote }}
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "name" $component.name "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "component" $component "root" $) | indent 4 }}
|
||||
spec: {{ $component.horizontalPodAutoscalerSpec | toYaml | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,92 @@
|
||||
{{- if and (((.Values.config).temporal).searchAttributesJob).enabled .Values.temporal.deploy (not .Values.temporal.disabled) }}
|
||||
{{- /*
|
||||
Migration hook: Delete old temporal-search-attributes job if it exists with hook annotations.
|
||||
This is needed because the job was previously created as a helm hook, but is now a regular resource
|
||||
when temporal.deploy=true. Helm cannot adopt the old job, so we delete it first.
|
||||
*/}}
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-temporal-job-cleanup
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
"helm.sh/hook": pre-upgrade
|
||||
"helm.sh/hook-weight": "-5"
|
||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
||||
spec:
|
||||
ttlSecondsAfterFinished: 60
|
||||
backoffLimit: 1
|
||||
template:
|
||||
metadata:
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 8 }}
|
||||
app.kubernetes.io/component: temporal-job-cleanup
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
serviceAccountName: {{ .Release.Name }}-job-cleanup
|
||||
containers:
|
||||
- name: cleanup
|
||||
image: bitnami/kubectl:latest
|
||||
command:
|
||||
- /bin/sh
|
||||
- -c
|
||||
- |
|
||||
JOB_NAME="{{ .Release.Name }}-temporal-search-attributes"
|
||||
NAMESPACE="{{ .Release.Namespace }}"
|
||||
|
||||
echo "Checking for old temporal-search-attributes job..."
|
||||
if kubectl get job "$JOB_NAME" -n "$NAMESPACE" 2>/dev/null; then
|
||||
# Check if it has the old hook annotations
|
||||
HOOK_ANNOTATION=$(kubectl get job "$JOB_NAME" -n "$NAMESPACE" -o jsonpath='{.metadata.annotations.helm\.sh/hook}' 2>/dev/null || echo "")
|
||||
if [ -n "$HOOK_ANNOTATION" ]; then
|
||||
echo "Found old job with hook annotations, deleting..."
|
||||
kubectl delete job "$JOB_NAME" -n "$NAMESPACE" --ignore-not-found=true
|
||||
echo "Old job deleted successfully"
|
||||
else
|
||||
echo "Job exists but doesn't have hook annotations, skipping"
|
||||
fi
|
||||
else
|
||||
echo "No old job found, nothing to clean up"
|
||||
fi
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-job-cleanup
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
"helm.sh/hook": pre-upgrade
|
||||
"helm.sh/hook-weight": "-10"
|
||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-job-cleanup
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
"helm.sh/hook": pre-upgrade
|
||||
"helm.sh/hook-weight": "-10"
|
||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
||||
rules:
|
||||
- apiGroups: ["batch"]
|
||||
resources: ["jobs"]
|
||||
verbs: ["get", "delete"]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-job-cleanup
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
"helm.sh/hook": pre-upgrade
|
||||
"helm.sh/hook-weight": "-10"
|
||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: {{ .Release.Name }}-job-cleanup
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Release.Name }}-job-cleanup
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,101 @@
|
||||
{{- if and (((.Values.config).temporal).searchAttributesJob).enabled (not .Values.temporal.disabled) }}
|
||||
{{- /* Determine temporal host and port based on deploy mode */}}
|
||||
{{- $temporalHost := "" }}
|
||||
{{- $temporalPort := "" }}
|
||||
{{- $isTemporalDeployed := .Values.temporal.deploy }}
|
||||
{{- if $isTemporalDeployed }}
|
||||
{{- $temporalHost = printf "%s-temporal-subchart-frontend" .Release.Name }}
|
||||
{{- $temporalPort = "7233" }}
|
||||
{{- else }}
|
||||
{{- $temporalHost = .Values.temporal.host }}
|
||||
{{- $temporalPort = .Values.temporal.port | toString }}
|
||||
{{- end }}
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-temporal-search-attributes
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
{{- if not $isTemporalDeployed }}
|
||||
{{- /* Only use hooks when connecting to external Temporal server */}}
|
||||
"helm.sh/hook": pre-install,pre-upgrade
|
||||
"helm.sh/hook-weight": "5"
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
{{- end }}
|
||||
spec:
|
||||
backoffLimit: 6
|
||||
template:
|
||||
metadata:
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 8 }}
|
||||
app.kubernetes.io/component: temporal-search-attributes-job
|
||||
spec:
|
||||
restartPolicy: OnFailure
|
||||
imagePullSecrets: {{ .Values.imagePullSecrets | toYaml | nindent 8 }}
|
||||
containers:
|
||||
- name: create-search-attributes
|
||||
image: {{ (((.Values.config).temporal).searchAttributesJob).image | quote }}
|
||||
imagePullPolicy: IfNotPresent
|
||||
command:
|
||||
- /bin/bash
|
||||
- -c
|
||||
- |
|
||||
set -e
|
||||
TEMPORAL_NAMESPACE={{ (($.Values.config).temporal).namespace | default $.Release.Namespace | quote }}
|
||||
MAX_RETRIES=30
|
||||
RETRY_INTERVAL=10
|
||||
|
||||
echo "Waiting for Temporal server to be ready..."
|
||||
for i in $(seq 1 $MAX_RETRIES); do
|
||||
if temporal operator cluster health 2>/dev/null | grep -q SERVING; then
|
||||
echo "Temporal server is ready"
|
||||
break
|
||||
fi
|
||||
if [ $i -eq $MAX_RETRIES ]; then
|
||||
echo "ERROR: Temporal server not ready after $MAX_RETRIES attempts"
|
||||
exit 1
|
||||
fi
|
||||
echo "Waiting for Temporal server... (attempt $i/$MAX_RETRIES)"
|
||||
sleep $RETRY_INTERVAL
|
||||
done
|
||||
|
||||
echo "Ensuring Temporal Namespace exists: $TEMPORAL_NAMESPACE"
|
||||
for i in $(seq 1 $MAX_RETRIES); do
|
||||
# Check if namespace already exists
|
||||
if temporal operator namespace describe --namespace "$TEMPORAL_NAMESPACE" >/dev/null 2>&1; then
|
||||
echo "Namespace $TEMPORAL_NAMESPACE already exists"
|
||||
break
|
||||
fi
|
||||
# Try to create the namespace
|
||||
if temporal operator namespace create --namespace "$TEMPORAL_NAMESPACE" --retention 7d 2>&1; then
|
||||
echo "Namespace $TEMPORAL_NAMESPACE created successfully"
|
||||
break
|
||||
fi
|
||||
if [ $i -eq $MAX_RETRIES ]; then
|
||||
echo "ERROR: Failed to create namespace after $MAX_RETRIES attempts"
|
||||
exit 1
|
||||
fi
|
||||
echo "Retrying namespace creation... (attempt $i/$MAX_RETRIES)"
|
||||
sleep $RETRY_INTERVAL
|
||||
done
|
||||
|
||||
echo "Ensuring search attributes exist..."
|
||||
{{- range (((.Values.config).temporal).searchAttributesJob).attributes }}
|
||||
echo "Ensuring search attribute exists: {{ .name }} ({{ .type }})"
|
||||
# Check if attribute already exists
|
||||
if temporal operator search-attribute list --namespace "$TEMPORAL_NAMESPACE" 2>/dev/null | grep -q "{{ .name }}"; then
|
||||
echo "Search attribute {{ .name }} already exists"
|
||||
else
|
||||
if temporal operator search-attribute create --namespace "$TEMPORAL_NAMESPACE" --name {{ .name }} --type {{ .type }} 2>&1; then
|
||||
echo "Search attribute {{ .name }} created successfully"
|
||||
else
|
||||
echo "Warning: Failed to create search attribute {{ .name }}, it may already exist"
|
||||
fi
|
||||
fi
|
||||
{{- end }}
|
||||
echo "Search attributes setup completed"
|
||||
env:
|
||||
- name: TEMPORAL_CLI_ADDRESS
|
||||
value: {{ printf "%s:%s" $temporalHost $temporalPort | quote }}
|
||||
- name: TEMPORAL_ADDRESS
|
||||
value: {{ printf "%s:%s" $temporalHost $temporalPort | quote }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,18 @@
|
||||
{{- range $name, $component := ((include "llamacloud.components" .) | fromYaml ) }}
|
||||
{{- $componentPrefix := $component.prefix }}
|
||||
{{- if $component.horizontalPodAutoscalerSpec }}
|
||||
---
|
||||
apiVersion: policy/v1
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: {{ print $component.name | quote }}
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "name" $component.name "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "component" $component "root" $) | indent 4 }}
|
||||
spec:
|
||||
maxUnavailable: 1
|
||||
selector:
|
||||
matchLabels: {{ include "llamacloud.labels" (dict "name" $component.name "root" $) | indent 6 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
{{- range $name, $component := ((include "llamacloud.components" .) | fromYaml ) }}
|
||||
{{- $componentPrefix := $component.prefix }}
|
||||
{{- $params := dict "component" $component "root" $ }}
|
||||
{{- if (include (printf "%s.secret" $componentPrefix) $params) }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ print $component.name | quote }}
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "name" $component.name "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "component" $component "root" $) | indent 4 }}
|
||||
data: {{ include (printf "%s.secret" $componentPrefix) $params | indent 2 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,21 @@
|
||||
{{- if and (((.Values.config).authentication).basicAuth).enabled (((.Values.config).authentication).oidc).enabled }}
|
||||
{{- fail "Cannot enable both basic authentication and OIDC authentication at the same time. Please choose one authentication method." -}}
|
||||
{{- end }}
|
||||
{{- if not ( or (((.Values.config).authentication).basicAuth).enabled (((.Values.config).authentication).oidc).enabled ) }}
|
||||
{{- fail "Must enable either basic authentication or OIDC authentication. Please choose an authentication method." -}}
|
||||
{{- end }}
|
||||
{{- if (((.Values.config).authentication).basicAuth).enabled }}
|
||||
{{- if not (((.Values.config).authentication).basicAuth).secret }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: basic-auth-secret
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
BYOC_AUTH_MODE: {{ print "basic" | b64enc | quote }}
|
||||
BYOC_VALID_EMAIL_DOMAIN: {{ required ".Values.config.authentication.basicAuth.validEmailDomain is required when basic auth is enabled and no secret is provided" (((.Values.config).authentication).basicAuth).validEmailDomain | b64enc | quote }}
|
||||
BYOC_JWT_SECRET: {{ required ".Values.config.authentication.basicAuth.jwtSecret is required when basic auth is enabled and no secret is provided" (((.Values.config).authentication).basicAuth).jwtSecret | b64enc | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,16 @@
|
||||
{{- if (((.Values.config).authentication).oidc).enabled }}
|
||||
{{- if not (((.Values.config).authentication).oidc).secret }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: oidc-secret
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
OIDC_DISCOVERY_URL: {{ required ".Values.config.authentication.oidc.discoveryUrl is required when OIDC is enabled and no secret is provided" (((.Values.config).authentication).oidc).discoveryUrl | b64enc | quote }}
|
||||
OIDC_CLIENT_ID: {{ required ".Values.config.authentication.oidc.clientId is required when OIDC is enabled and no secret is provided" (((.Values.config).authentication).oidc).clientId | b64enc | quote }}
|
||||
OIDC_CLIENT_SECRET: {{ required ".Values.config.authentication.oidc.clientSecret is required when OIDC is enabled and no secret is provided" (((.Values.config).authentication).oidc).clientSecret | b64enc | quote }}
|
||||
SESSION_SECRET_KEY: {{ randAlphaNum 64 | b64enc | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,11 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: bucket-secret
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
{{- range $name, $value := .Values.config.storageBuckets.extraEnvVariables }}
|
||||
{{ $name }}: {{ $value | b64enc | quote }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,27 @@
|
||||
{{- if not (.Values.mongodb).secret }}
|
||||
{{- if not (.Values.mongodb).mongodb_url }}
|
||||
{{- if not (.Values.mongodb).host }}
|
||||
{{- fail ".Values.mongodb.host cannot be empty. Please provide a valid mongodb host" }}
|
||||
{{- end }}
|
||||
{{- if not (.Values.mongodb).username }}
|
||||
{{- fail ".Values.mongodb.username cannot be empty. Please provide a valid mongodb username" }}
|
||||
{{- end }}
|
||||
{{- if not (.Values.mongodb).password }}
|
||||
{{- fail ".Values.mongodb.password cannot be empty. Please provide a valid mongodb password" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: mongodb-secret
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
MONGODB_HOST: {{ .Values.mongodb.host | b64enc | quote }}
|
||||
MONGODB_URL_SCHEME: {{ .Values.mongodb.scheme | default "mongodb" | b64enc | quote }}
|
||||
MONGODB_PORT: {{ .Values.mongodb.port | default 27017 | b64enc | quote }}
|
||||
MONGODB_USER: {{ .Values.mongodb.username | b64enc | quote }}
|
||||
MONGODB_PASSWORD: {{ .Values.mongodb.password | b64enc | quote }}
|
||||
MONGODB_URL: {{ .Values.mongodb.mongodb_url | b64enc | quote }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,27 @@
|
||||
{{- if not (.Values.postgresql).secret }}
|
||||
{{- if not (.Values.postgresql).host }}
|
||||
{{- fail ".Values.postgresql.host cannot be empty. Please provide a valid postgres host" }}
|
||||
{{- end }}
|
||||
{{- if not (.Values.postgresql).database }}
|
||||
{{- fail ".Values.postgresql.database cannot be empty. Please provide a valid postgres database" }}
|
||||
{{- end }}
|
||||
{{- if not (.Values.postgresql).username }}
|
||||
{{- fail ".Values.postgresql.username cannot be empty. Please provide a valid postgres username" }}
|
||||
{{- end }}
|
||||
{{- if not (.Values.postgresql).password }}
|
||||
{{- fail ".Values.postgresql.password cannot be empty. Please provide a valid postgres password" }}
|
||||
{{- end }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: postgresql-secret
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
DATABASE_HOST: {{ .Values.postgresql.host | b64enc | quote }}
|
||||
DATABASE_PORT: {{ .Values.postgresql.port | default 5432 | b64enc | quote }}
|
||||
DATABASE_NAME: {{ .Values.postgresql.database | b64enc | quote }}
|
||||
DATABASE_USER: {{ .Values.postgresql.username | b64enc | quote }}
|
||||
DATABASE_PASSWORD: {{ .Values.postgresql.password | b64enc | quote }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,19 @@
|
||||
{{- if ( and (.Values.qdrant).enabled (not (.Values.qdrant).secret) ) }}
|
||||
{{- if not (.Values.qdrant).url }}
|
||||
{{- fail ".Values.qdrant.url cannot be empty. Please provide a valid qdrant url" }}
|
||||
{{- end }}
|
||||
{{- if not (.Values.qdrant).apiKey }}
|
||||
{{- fail ".Values.qdrant.apiKey cannot be empty. Please provide a valid qdrant apiKey" }}
|
||||
{{- end }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: qdrant-secret
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
QDRANT_URL: {{ .Values.qdrant.url | b64enc | quote }}
|
||||
QDRANT_API_KEY: {{ .Values.qdrant.apiKey | b64enc | quote }}
|
||||
BYOC_HAS_MANAGED_QDRANT: {{ print "true" | b64enc | quote }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,29 @@
|
||||
{{- if not (.Values.rabbitmq).secret }}
|
||||
{{- if not (.Values.rabbitmq).connectionString }}
|
||||
{{- if not (.Values.rabbitmq).host }}
|
||||
{{- fail ".Values.rabbitmq.host cannot be empty. Please provide a valid rabbitmq host or connection string" }}
|
||||
{{- end }}
|
||||
{{- if not (.Values.rabbitmq).username }}
|
||||
{{- fail ".Values.rabbitmq.username cannot be empty. Please provide a valid rabbitmq username or connection string" }}
|
||||
{{- end }}
|
||||
{{- if not (.Values.rabbitmq).password }}
|
||||
{{- fail ".Values.rabbitmq.password cannot be empty. Please provide a valid rabbitmq password or connection string" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: rabbitmq-secret
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
{{- if .Values.rabbitmq.connectionString }}
|
||||
JOB_QUEUE_CONNECTION_STRING: {{ .Values.rabbitmq.connectionString | b64enc | quote }}
|
||||
{{- else }}
|
||||
# JOB_QUEUE_CONNECTION_STRING: {{ printf "%s://%s:%s@%s:%d?frameMax=0" ( .Values.rabbitmq.scheme | default "amqp" ) .Values.rabbitmq.username .Values.rabbitmq.password .Values.rabbitmq.host ( .Values.rabbitmq.port | default 5672 ) | b64enc | quote }}
|
||||
JOB_QUEUE_ENDPOINT: {{ printf "%s://%s:%s" ( .Values.rabbitmq.scheme | default "amqp" ) .Values.rabbitmq.host ( .Values.rabbitmq.port | default 5672 ) | b64enc | quote }}
|
||||
JOB_QUEUE_USERNAME: {{ .Values.rabbitmq.username | b64enc | quote }}
|
||||
JOB_QUEUE_PASSWORD: {{ .Values.rabbitmq.password | b64enc | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,19 @@
|
||||
{{- if not (.Values.redis).secret }}
|
||||
{{- if not (.Values.redis).host }}
|
||||
{{- fail ".Values.redis.host cannot be empty. Please provide a valid redis host" }}
|
||||
{{- end }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: redis-secret
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
REDIS_SCHEME: {{ .Values.redis.scheme | default "6379" | b64enc | quote }}
|
||||
REDIS_PORT: {{ .Values.redis.port | default "6379" | b64enc | quote }}
|
||||
REDIS_DB: {{ .Values.redis.db | default "0" | b64enc | quote }}
|
||||
REDIS_HOST: {{ .Values.redis.host | b64enc | quote }}
|
||||
REDIS_USERNAME: {{ .Values.redis.username | b64enc | quote }}
|
||||
REDIS_PASSWORD: {{ .Values.redis.password | b64enc | quote }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,15 @@
|
||||
{{- if and .Values.temporal.deploy (not .Values.temporal.disabled) }}
|
||||
{{- /* Create secrets for temporal subchart using main postgresql credentials */}}
|
||||
{{- /* This allows users to configure postgresql once and have temporal reuse it */}}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: temporal-postgresql-secret
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
type: Opaque
|
||||
data:
|
||||
password: {{ .Values.postgresql.password | b64enc | quote }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,14 @@
|
||||
{{- if not (.Values.license).secret }}
|
||||
{{- if not (.Values.license).key }}
|
||||
{{- fail ".Values.license.key cannot be empty. Please provide a valid license key" }}
|
||||
{{- end }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: llamacloud-license-key
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
LLAMACLOUD_LICENSE_KEY: {{ .Values.license.key | b64enc | quote }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,11 @@
|
||||
{{- if (((.Values.config).llms).anthropic).apiKey }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: anthropic-api-key-secret
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
ANTHROPIC_API_KEY: {{ (((.Values.config).llms).anthropic).apiKey | b64enc | quote }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,36 @@
|
||||
{{- if (((.Values.config).llms).awsBedrock).region }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: aws-bedrock-api-key-secret
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
AWS_BEDROCK_ENABLED: {{ "true" | b64enc | quote }}
|
||||
AWS_BEDROCK_REGION: {{ (((.Values.config).llms).awsBedrock).region | b64enc | quote }}
|
||||
{{- if (((.Values.config).llms).awsBedrock).accessKeyId }}
|
||||
AWS_BEDROCK_ACCESS_KEY_ID: {{ (((.Values.config).llms).awsBedrock).accessKeyId | b64enc | quote }}
|
||||
{{- end }}
|
||||
{{- if (((.Values.config).llms).awsBedrock).secretAccessKey }}
|
||||
AWS_BEDROCK_SECRET_ACCESS_KEY: {{ (((.Values.config).llms).awsBedrock).secretAccessKey | b64enc | quote }}
|
||||
{{- end }}
|
||||
AWS_BEDROCK_SONNET_3_5_MODEL_VERSION_NAME: {{ (((.Values.config).llms).awsBedrock).sonnet3_5ModelVersionName | default "" | b64enc | quote }}
|
||||
AWS_BEDROCK_SONNET_3_7_MODEL_VERSION_NAME: {{ (((.Values.config).llms).awsBedrock).sonnet3_7ModelVersionName | default "" | b64enc | quote }}
|
||||
AWS_BEDROCK_SONNET_4_0_MODEL_VERSION_NAME: {{ (((.Values.config).llms).awsBedrock).sonnet4_0ModelVersionName | default "" | b64enc | quote }}
|
||||
AWS_BEDROCK_SONNET_4_5_MODEL_VERSION_NAME: {{ (((.Values.config).llms).awsBedrock).sonnet4_5ModelVersionName | default "" | b64enc | quote }}
|
||||
AWS_BEDROCK_HAIKU_3_5_MODEL_VERSION_NAME: {{ (((.Values.config).llms).awsBedrock).haiku3_5ModelVersionName | default "" | b64enc | quote }}
|
||||
AWS_BEDROCK_HAIKU_4_5_MODEL_VERSION_NAME: {{ (((.Values.config).llms).awsBedrock).haiku4_5ModelVersionName | default "" | b64enc | quote }}
|
||||
BEDROCK_ANTHROPIC_SONNET_3_5_VERSION_NAME: {{ (((.Values.config).llms).awsBedrock).sonnet3_5ModelVersionName | default "" | b64enc | quote }}
|
||||
BEDROCK_ANTHROPIC_SONNET_3_7_VERSION_NAME: {{ (((.Values.config).llms).awsBedrock).sonnet3_7ModelVersionName | default "" | b64enc | quote }}
|
||||
BEDROCK_ANTHROPIC_SONNET_4_0_VERSION_NAME: {{ (((.Values.config).llms).awsBedrock).sonnet4_0ModelVersionName | default "" | b64enc | quote }}
|
||||
BEDROCK_ANTHROPIC_SONNET_4_5_VERSION_NAME: {{ (((.Values.config).llms).awsBedrock).sonnet4_5ModelVersionName | default "" | b64enc | quote }}
|
||||
BEDROCK_ANTHROPIC_HAIKU_3_5_VERSION_NAME: {{ (((.Values.config).llms).awsBedrock).haiku3_5ModelVersionName | default "" | b64enc | quote }}
|
||||
BEDROCK_ANTHROPIC_HAIKU_4_5_VERSION_NAME: {{ (((.Values.config).llms).awsBedrock).haiku4_5ModelVersionName | default "" | b64enc | quote }}
|
||||
BEDROCK_ANTHROPIC_SONNET_3_5_MODEL_ID: {{ (((.Values.config).llms).awsBedrock).sonnet3_5ModelVersionName | default "" | b64enc | quote }}
|
||||
BEDROCK_ANTHROPIC_SONNET_3_7_MODEL_ID: {{ (((.Values.config).llms).awsBedrock).sonnet3_7ModelVersionName | default "" | b64enc | quote }}
|
||||
BEDROCK_ANTHROPIC_SONNET_4_0_MODEL_ID: {{ (((.Values.config).llms).awsBedrock).sonnet4_0ModelVersionName | default "" | b64enc | quote }}
|
||||
BEDROCK_ANTHROPIC_SONNET_4_5_MODEL_ID: {{ (((.Values.config).llms).awsBedrock).sonnet4_5ModelVersionName | default "" | b64enc | quote }}
|
||||
BEDROCK_ANTHROPIC_HAIKU_3_5_MODEL_ID: {{ (((.Values.config).llms).awsBedrock).haiku3_5ModelVersionName | default "" | b64enc | quote }}
|
||||
BEDROCK_ANTHROPIC_HAIKU_4_5_MODEL_ID: {{ (((.Values.config).llms).awsBedrock).haiku4_5ModelVersionName | default "" | b64enc | quote }}
|
||||
{{ end }}
|
||||
@@ -0,0 +1,20 @@
|
||||
{{- if (((.Values.config).llms).azureOpenAi).deployments }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: azure-open-ai-api-key-secret
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
{{- range $idx, $deployment := (((.Values.config).llms).azureOpenAi).deployments -}}
|
||||
{{- if not (and $deployment.model $deployment.apiKey $deployment.baseUrl $deployment.apiVersion) -}}
|
||||
{{- fail (printf "Azure OpenAI deployment %s at index %d is missing required fields: model, apiKey, baseUrl, or apiVersion" $deployment.model $idx) -}}
|
||||
{{- end -}}
|
||||
{{ $MODEL_NAME_PREFIX := printf "AZURE_OPENAI_%s" ($deployment.model | replace "." "_" | replace "-" "_" | upper) | upper }}
|
||||
{{ $MODEL_NAME_PREFIX }}_API_KEY: {{ $deployment.apiKey | b64enc | quote }}
|
||||
{{ $MODEL_NAME_PREFIX }}_BASE_URL: {{ $deployment.baseUrl | b64enc | quote }}
|
||||
{{ $MODEL_NAME_PREFIX }}_DEPLOYMENT_NAME: {{ $deployment.deploymentName | default $deployment.model | b64enc | quote }}
|
||||
{{ $MODEL_NAME_PREFIX }}_API_VERSION: {{ $deployment.apiVersion | b64enc | quote }}
|
||||
{{- end }}
|
||||
{{ end }}
|
||||
@@ -0,0 +1,14 @@
|
||||
{{- if and (((.Values.config).llms).googleVertexAi).projectId (((.Values.config).llms).googleVertexAi).credentialsJson (((.Values.config).llms).googleVertexAi).location }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: google-vertex-ai-api-key-secret
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
GOOGLE_VERTEX_AI_ENABLED: {{ "true" | b64enc | quote }}
|
||||
GOOGLE_VERTEX_AI_PROJECT_ID: {{ (((.Values.config).llms).googleVertexAi).projectId | b64enc | quote }}
|
||||
GOOGLE_VERTEX_AI_LOCATION: {{ (((.Values.config).llms).googleVertexAi).location | b64enc | quote }}
|
||||
GOOGLE_VERTEX_AI_CREDENTIALS_JSON: {{ (((.Values.config).llms).googleVertexAi).credentialsJson | b64enc | quote }}
|
||||
{{ end }}
|
||||
@@ -0,0 +1,11 @@
|
||||
{{- if (((.Values.config).llms).gemini).apiKey }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: gemini-api-key-secret
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
GOOGLE_GEMINI_API_KEY: {{ (((.Values.config).llms).gemini).apiKey | b64enc | quote }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,16 @@
|
||||
{{- if (((.Values.config).llms).openAi).apiKey }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: openai-api-key-secret
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data:
|
||||
OPENAI_API_KEY: {{ (((.Values.config).llms).openAi).apiKey | b64enc | quote }}
|
||||
LC_OPENAI_API_KEY: {{ (((.Values.config).llms).openAi).apiKey | b64enc | quote }}
|
||||
EVAL_OPENAI_API_KEY: {{ (((.Values.config).llms).openAi).apiKey | b64enc | quote }}
|
||||
{{- if (((.Values.config).llms).openAi).baseUrl }}
|
||||
OPENAI_BASE_URL: {{ (((.Values.config).llms).openAi).baseUrl | b64enc | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,11 @@
|
||||
{{- if ((($.Values.config).storageBuckets).s3proxy.enabled | default false) }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: s3proxy-secret
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "root" $) | indent 4 }}
|
||||
data: {{ include "llamacloud.s3proxy.secret" $ | nindent 2 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,19 @@
|
||||
{{- range $name, $component := ((include "llamacloud.components" .) | fromYaml ) }}
|
||||
{{- $componentPrefix := $component.prefix }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ print $component.name | quote }}
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "name" $component.name "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "component" $component "root" $) | indent 4 }}
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
targetPort: {{ $component.port }}
|
||||
protocol: TCP
|
||||
selector: {{ include "llamacloud.labels" (dict "name" $component.name "root" $) | indent 4 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,14 @@
|
||||
{{- range $name, $component := ((include "llamacloud.components" .) | fromYaml ) }}
|
||||
{{- $componentPrefix := $component.prefix }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ print $component.name | quote }}
|
||||
namespace: {{ $.Release.Namespace | quote }}
|
||||
labels: {{ include "llamacloud.labels" (dict "name" $component.name "root" $) | indent 4 }}
|
||||
annotations: {{ include "llamacloud.annotations" (dict "component" $component "root" $) | indent 4 }}
|
||||
{{- if $component.serviceAccountAnnotations }}
|
||||
{{- $component.serviceAccountAnnotations | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,363 @@
|
||||
suite: backend-tests
|
||||
|
||||
templates:
|
||||
- ../templates/llamacloud/configmaps/common.yaml
|
||||
- ../templates/llamacloud/configmaps/buckets.yaml
|
||||
- ../templates/llamacloud/configmaps/extract.yaml
|
||||
- ../templates/llamacloud/deployment.yaml
|
||||
- ../templates/llamacloud/hpa.yaml
|
||||
- ../templates/llamacloud/pdb.yaml
|
||||
- ../templates/llamacloud/service.yaml
|
||||
- ../templates/llamacloud/secrets/auth.oidc.yaml
|
||||
- ../templates/llamacloud/secrets/data.qdrant.yaml
|
||||
- ../templates/llamacloud/secrets/llm.azure.yaml
|
||||
- ../templates/llamacloud/secrets/llm.openai.yaml
|
||||
- ../templates/llamacloud/serviceaccount.yaml
|
||||
|
||||
release:
|
||||
name: test-release
|
||||
namespace: test-namespace
|
||||
|
||||
capabilities:
|
||||
majorVersion: 1
|
||||
minorVersion: 31
|
||||
apiVersions:
|
||||
- apps/v1
|
||||
- monitoring.coreos.com/v1
|
||||
|
||||
chart:
|
||||
appVersion: 0.0.0
|
||||
|
||||
tests:
|
||||
- it: should be a Deployment
|
||||
documentIndex: 0
|
||||
set:
|
||||
backend.image: docker.io/llamaindex/llamacloud-backend:latest
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Deployment
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].image
|
||||
value: docker.io/llamaindex/llamacloud-backend:latest
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].env[?(@.name == "UVICORN_PORT")].value
|
||||
value: "8000"
|
||||
|
||||
- it: should use an external secret name for the license key if it is set
|
||||
documentIndex: 0
|
||||
set:
|
||||
license.secret: existing-license-key
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].envFrom[?(@.secretRef.name == "existing-license-key")].secretRef.name
|
||||
value: existing-license-key
|
||||
|
||||
- it: basic auth secret should be loaded via envFrom if basic auth is enabled
|
||||
documentIndex: 0
|
||||
set:
|
||||
config.authentication.basicAuth.enabled: true
|
||||
config.authentication.basicAuth.validEmailDomain: llamaindex.ai
|
||||
config.authentication.basicAuth.jwtSecret: test-jwt-secret
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].envFrom[?(@.secretRef.name == "basic-auth-secret")].secretRef.name
|
||||
value: basic-auth-secret
|
||||
|
||||
- it: should use existing basic auth secret via envFrom if secret is provided
|
||||
documentIndex: 0
|
||||
set:
|
||||
config.authentication.basicAuth.enabled: true
|
||||
config.authentication.basicAuth.secret: existing-basic-auth-secret
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].envFrom[?(@.secretRef.name == "existing-basic-auth-secret")].secretRef.name
|
||||
value: existing-basic-auth-secret
|
||||
|
||||
- it: urls-config configmap should be loaded via envFrom and contain ingress URL
|
||||
documentIndex: 0
|
||||
set:
|
||||
ingress.enabled: true
|
||||
ingress.host: test-ingress-host
|
||||
ingress.tlsSecretName: test-tls-secret
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].envFrom[?(@.configMapRef.name == "urls-config")].configMapRef.name
|
||||
value: urls-config
|
||||
|
||||
- it: should use the component name as service account
|
||||
documentIndex: 0
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.template.spec.serviceAccountName
|
||||
value: llamacloud
|
||||
|
||||
- it: should use an external secret name for the OpenAI API key if it is set
|
||||
documentIndex: 0
|
||||
set:
|
||||
config.llms.openAi.secret: existing-openai-api-key
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].envFrom[?(@.secretRef.name == "existing-openai-api-key")].secretRef.name
|
||||
value: existing-openai-api-key
|
||||
|
||||
- it: postgresql secret should be loaded via envFrom
|
||||
documentIndex: 0
|
||||
set:
|
||||
postgresql.host: test-release-postgresql
|
||||
postgresql.port: "5432"
|
||||
postgresql.database: llamacloud
|
||||
postgresql.username: llamacloud
|
||||
postgresql.password: test-password
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].envFrom[?(@.secretRef.name == "postgresql-secret")].secretRef.name
|
||||
value: postgresql-secret
|
||||
|
||||
- it: should use external postgresql secret if provided
|
||||
documentIndex: 0
|
||||
set:
|
||||
postgresql.secret: external-postgresql-secret
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].envFrom[?(@.secretRef.name == "external-postgresql-secret")].secretRef.name
|
||||
value: external-postgresql-secret
|
||||
|
||||
- it: mongodb secret should be loaded via envFrom
|
||||
documentIndex: 0
|
||||
set:
|
||||
mongodb.scheme: mongodb+srv
|
||||
mongodb.host: test-mongo-host
|
||||
mongodb.port: "27017"
|
||||
mongodb.username: test-mongo-user
|
||||
mongodb.password: test-mongo-password
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].envFrom[?(@.secretRef.name == "mongodb-secret")].secretRef.name
|
||||
value: mongodb-secret
|
||||
|
||||
- it: should create common-config ConfigMap with correct values
|
||||
set:
|
||||
config.storageBuckets.parsedDocuments: test-cloud-bucket-name
|
||||
templates:
|
||||
- ../templates/llamacloud/configmaps/common.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: ConfigMap
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: common-config
|
||||
- equal:
|
||||
path: .data.IS_DEPLOYED
|
||||
value: "true"
|
||||
- equal:
|
||||
path: .data.ALLOWED_INDEX
|
||||
value: "true"
|
||||
- equal:
|
||||
path: .data.PARSE_PREMIUM
|
||||
value: "true"
|
||||
|
||||
- it: should create bucket-config ConfigMap with correct bucket names
|
||||
set:
|
||||
config.storageBuckets.parsedDocuments: test-cloud-bucket-name
|
||||
templates:
|
||||
- ../templates/llamacloud/configmaps/buckets.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: ConfigMap
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: bucket-config
|
||||
- equal:
|
||||
path: .data.S3_DOCUMENT_BUCKET_NAME
|
||||
value: test-cloud-bucket-name
|
||||
- equal:
|
||||
path: .data.S3_ETL_BUCKET_NAME
|
||||
value: llama-platform-etl
|
||||
- equal:
|
||||
path: .data.S3_EXTERNAL_COMPONENTS_BUCKET_NAME
|
||||
value: llama-platform-external-components
|
||||
- equal:
|
||||
path: .data.S3_FILE_PARSING_BUCKET_NAME
|
||||
value: llama-platform-file-parsing
|
||||
- equal:
|
||||
path: .data.S3_RAW_FILE_BUCKET_NAME
|
||||
value: llama-platform-raw-files
|
||||
- equal:
|
||||
path: .data.S3_LLAMA_CLOUD_PARSE_OUTPUT_BUCKET_NAME
|
||||
value: llama-cloud-parse-output
|
||||
- equal:
|
||||
path: .data.S3_FILE_SCREENSHOT_BUCKET_NAME
|
||||
value: llama-platform-file-screenshots
|
||||
- equal:
|
||||
path: .data.S3_LLAMA_EXTRACT_OUTPUT_BUCKET_NAME
|
||||
value: llama-platform-extract-output
|
||||
|
||||
- it: should create extract-config ConfigMap with default LLAMA_EXTRACT settings
|
||||
templates:
|
||||
- ../templates/llamacloud/configmaps/extract.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: ConfigMap
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: extract-config
|
||||
- equal:
|
||||
path: .data.LLAMA_EXTRACT_MULTIMODAL_MODEL
|
||||
value: "openai-gpt-4-1"
|
||||
- equal:
|
||||
path: .data.LLAMA_EXTRACT_SCHEMA_GENERATION_MODEL
|
||||
value: "openai-gpt-4-1-mini"
|
||||
- equal:
|
||||
path: .data.LLAMA_EXTRACT_MAX_PAGES
|
||||
value: "500"
|
||||
- equal:
|
||||
path: .data.LLAMA_EXTRACT_MAX_FILE_SIZE_MB
|
||||
value: "100"
|
||||
|
||||
- it: should set custom LLAMA_EXTRACT settings when specified
|
||||
set:
|
||||
config.extraction.multimodalModel: "openai-gpt-4-1"
|
||||
config.extraction.schemaGenerationModel: "openai-gpt-4-1-mini"
|
||||
config.extraction.maxPages: 1000
|
||||
config.extraction.maxFileSizeMb: 200
|
||||
templates:
|
||||
- ../templates/llamacloud/configmaps/extract.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .data.LLAMA_EXTRACT_MULTIMODAL_MODEL
|
||||
value: "openai-gpt-4-1"
|
||||
- equal:
|
||||
path: .data.LLAMA_EXTRACT_SCHEMA_GENERATION_MODEL
|
||||
value: "openai-gpt-4-1-mini"
|
||||
- equal:
|
||||
path: .data.LLAMA_EXTRACT_MAX_PAGES
|
||||
value: "1000"
|
||||
- equal:
|
||||
path: .data.LLAMA_EXTRACT_MAX_FILE_SIZE_MB
|
||||
value: "200"
|
||||
|
||||
- it: backend deployment should have LOG_LEVEL env var set correctly
|
||||
documentIndex: 0
|
||||
set:
|
||||
config.logLevel: debug
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].env[?(@.name == "LOG_LEVEL")].value
|
||||
value: debug
|
||||
|
||||
- it: should correctly set OIDC configs in the secret
|
||||
template: ../templates/llamacloud/secrets/auth.oidc.yaml
|
||||
set:
|
||||
config.authentication.oidc.enabled: true
|
||||
config.authentication.oidc.clientId: test-client-id
|
||||
config.authentication.oidc.clientSecret: test-client-secret
|
||||
config.authentication.oidc.discoveryUrl: test-discovery-url
|
||||
asserts:
|
||||
- equal:
|
||||
path: .data.OIDC_CLIENT_ID
|
||||
value: dGVzdC1jbGllbnQtaWQ=
|
||||
- equal:
|
||||
path: .data.OIDC_CLIENT_SECRET
|
||||
value: dGVzdC1jbGllbnQtc2VjcmV0
|
||||
- equal:
|
||||
path: .data.OIDC_DISCOVERY_URL
|
||||
value: dGVzdC1kaXNjb3ZlcnktdXJs
|
||||
|
||||
- it: should correctly set managed qdrant config in the secret
|
||||
template: ../templates/llamacloud/secrets/data.qdrant.yaml
|
||||
set:
|
||||
qdrant.enabled: true
|
||||
qdrant.url: test-qdrant-url
|
||||
qdrant.apiKey: test-qdrant-api-key
|
||||
asserts:
|
||||
- equal:
|
||||
path: .data.QDRANT_URL
|
||||
value: dGVzdC1xZHJhbnQtdXJs
|
||||
- equal:
|
||||
path: .data.QDRANT_API_KEY
|
||||
value: dGVzdC1xZHJhbnQtYXBpLWtleQ==
|
||||
- equal:
|
||||
path: .data.BYOC_HAS_MANAGED_QDRANT
|
||||
value: dHJ1ZQ==
|
||||
|
||||
- it: should include the Azure OpenAI API key in the environment variables
|
||||
template: ../templates/llamacloud/secrets/llm.azure.yaml
|
||||
set:
|
||||
config.llms.azureOpenAi.deployments:
|
||||
- model: "gpt-4o"
|
||||
deploymentName: "test-deployment-name"
|
||||
apiKey: "test-key"
|
||||
baseUrl: "test-endpoint"
|
||||
apiVersion: "test-api-version"
|
||||
asserts:
|
||||
- equal:
|
||||
path: .data.AZURE_OPENAI_GPT_4O_API_KEY
|
||||
value: dGVzdC1rZXk=
|
||||
- equal:
|
||||
path: .data.AZURE_OPENAI_GPT_4O_BASE_URL
|
||||
value: dGVzdC1lbmRwb2ludA==
|
||||
- equal:
|
||||
path: .data.AZURE_OPENAI_GPT_4O_DEPLOYMENT_NAME
|
||||
value: dGVzdC1kZXBsb3ltZW50LW5hbWU=
|
||||
- equal:
|
||||
path: .data.AZURE_OPENAI_GPT_4O_API_VERSION
|
||||
value: dGVzdC1hcGktdmVyc2lvbg==
|
||||
|
||||
- it: should use an external secret name for the Azure OpenAI API key if it is set
|
||||
documentIndex: 0
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
set:
|
||||
config.llms.azureOpenAi.secret: existing-azure-openai-api-key
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].envFrom[?(@.secretRef.name == "existing-azure-openai-api-key")].secretRef.name
|
||||
value: existing-azure-openai-api-key
|
||||
|
||||
- it: should include the LLM models in the environment variables
|
||||
template: ../templates/llamacloud/secrets/llm.openai.yaml
|
||||
set:
|
||||
config.llms.openAi.apiKey: test-openai-api-key
|
||||
asserts:
|
||||
- equal:
|
||||
path: .data.OPENAI_API_KEY
|
||||
value: dGVzdC1vcGVuYWktYXBpLWtleQ==
|
||||
|
||||
- it: backend should create a HorizontalPodAutoscaler if autoscaling is enabled
|
||||
set:
|
||||
backend.horizontalPodAutoscalerSpec:
|
||||
minReplicas: 2
|
||||
maxReplicas: 10
|
||||
metrics:
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
templates:
|
||||
- ../templates/llamacloud/hpa.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 1
|
||||
- isKind:
|
||||
of: HorizontalPodAutoscaler
|
||||
|
||||
- it: should not create backend HorizontalPodAutoscaler if autoscaling is disabled
|
||||
set:
|
||||
backend.horizontalPodAutoscalerSpec: null
|
||||
templates:
|
||||
- ../templates/llamacloud/hpa.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
@@ -0,0 +1,284 @@
|
||||
suite: frontend-tests
|
||||
|
||||
templates:
|
||||
- ../templates/llamacloud/deployment.yaml
|
||||
- ../templates/llamacloud/service.yaml
|
||||
- ../templates/llamacloud/hpa.yaml
|
||||
- ../templates/llamacloud/serviceaccount.yaml
|
||||
|
||||
release:
|
||||
name: test-release
|
||||
namespace: test-namespace
|
||||
|
||||
capabilities:
|
||||
majorVersion: 1
|
||||
minorVersion: 31
|
||||
apiVersions:
|
||||
- apps/v1
|
||||
- autoscaling/v2
|
||||
|
||||
chart:
|
||||
appVersion: 0.0.0
|
||||
|
||||
tests:
|
||||
- it: should be a Deployment
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: true
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
frontend:
|
||||
image: docker.io/llamaindex/llamacloud-frontend:latest
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
documentIndex: 1
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Deployment
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].image
|
||||
value: docker.io/llamaindex/llamacloud-frontend:latest
|
||||
|
||||
- it: should set the correct BACKEND_URL via configmap when ingress is enabled
|
||||
set:
|
||||
config.frontend.enabled: true
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
ingress.enabled: true
|
||||
ingress.tlsSecretName: tls-secret
|
||||
ingress.host: llamacloud.example.com
|
||||
documentIndex: 1
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
configMapRef:
|
||||
name: urls-config
|
||||
|
||||
- it: should set the correct BACKEND_URL via configmap when ingress is disabled
|
||||
set:
|
||||
config.frontend.enabled: true
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
ingress.enabled: false
|
||||
backend.name: backend
|
||||
backend.service.port: 8000
|
||||
documentIndex: 1
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
configMapRef:
|
||||
name: urls-config
|
||||
|
||||
- it: should create a HorizontalPodAutoscaler if autoscaling is enabled
|
||||
set:
|
||||
config.frontend.enabled: true
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
frontend.horizontalPodAutoscalerSpec:
|
||||
minReplicas: 2
|
||||
maxReplicas: 10
|
||||
metrics:
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
template: ../templates/llamacloud/hpa.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 1
|
||||
- isKind:
|
||||
of: HorizontalPodAutoscaler
|
||||
- equal:
|
||||
path: .spec.minReplicas
|
||||
value: 2
|
||||
- equal:
|
||||
path: .spec.maxReplicas
|
||||
value: 10
|
||||
- equal:
|
||||
path: .spec.metrics[0].resource.target.averageUtilization
|
||||
value: 80
|
||||
|
||||
- it: should not create a HorizontalPodAutoscaler if autoscaling is disabled
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: true
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
frontend:
|
||||
image: docker.io/llamaindex/llamacloud-frontend:latest
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
template: ../templates/llamacloud/hpa.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
- it: should create HPA with both CPU and memory metrics when both are specified
|
||||
set:
|
||||
config.frontend.enabled: true
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
frontend.horizontalPodAutoscalerSpec:
|
||||
minReplicas: 1
|
||||
maxReplicas: 5
|
||||
metrics:
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 70
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
template: ../templates/llamacloud/hpa.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 1
|
||||
- equal:
|
||||
path: .spec.metrics[0].resource.name
|
||||
value: cpu
|
||||
- equal:
|
||||
path: .spec.metrics[0].resource.target.averageUtilization
|
||||
value: 70
|
||||
- equal:
|
||||
path: .spec.metrics[1].resource.name
|
||||
value: memory
|
||||
- equal:
|
||||
path: .spec.metrics[1].resource.target.averageUtilization
|
||||
value: 80
|
||||
|
||||
- it: should apply custom labels and annotations to all resources
|
||||
set:
|
||||
config.frontend.enabled: true
|
||||
frontend.annotations:
|
||||
custom-annotation: frontend-annotation
|
||||
frontend.serviceAccountAnnotations:
|
||||
sa-annotation: sa-annotation
|
||||
frontend.podAnnotations:
|
||||
pod-annotation: pod-annotation
|
||||
documentIndex: 1
|
||||
templates:
|
||||
- ../templates/llamacloud/deployment.yaml
|
||||
- ../templates/llamacloud/service.yaml
|
||||
- ../templates/llamacloud/serviceaccount.yaml
|
||||
asserts:
|
||||
- template: ../templates/llamacloud/deployment.yaml
|
||||
equal:
|
||||
path: .metadata.annotations.custom-annotation
|
||||
value: frontend-annotation
|
||||
- template: ../templates/llamacloud/deployment.yaml
|
||||
equal:
|
||||
path: .spec.template.metadata.annotations.pod-annotation
|
||||
value: pod-annotation
|
||||
- template: ../templates/llamacloud/serviceaccount.yaml
|
||||
equal:
|
||||
path: .metadata.annotations.sa-annotation
|
||||
value: sa-annotation
|
||||
|
||||
- it: should include extra environment variables when specified
|
||||
set:
|
||||
config.frontend.enabled: true
|
||||
frontend.extraEnvVariables:
|
||||
- name: CUSTOM_ENV_VAR
|
||||
value: custom-value
|
||||
- name: ANOTHER_VAR
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: my-secret
|
||||
key: my-key
|
||||
documentIndex: 1
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].env[?(@.name == "CUSTOM_ENV_VAR")].value
|
||||
value: custom-value
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].env[?(@.name == "ANOTHER_VAR")].valueFrom.secretKeyRef.name
|
||||
value: my-secret
|
||||
|
||||
- it: should set rolling update strategy with correct parameters
|
||||
set:
|
||||
config.frontend.enabled: true
|
||||
documentIndex: 1
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.strategy.type
|
||||
value: RollingUpdate
|
||||
- equal:
|
||||
path: .spec.strategy.rollingUpdate.maxUnavailable
|
||||
value: 0
|
||||
|
||||
- it: should set correct security contexts
|
||||
set:
|
||||
config.frontend.enabled: true
|
||||
frontend.podSecurityContext:
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1000
|
||||
frontend.securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
readOnlyRootFilesystem: true
|
||||
documentIndex: 1
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.template.spec.securityContext.runAsNonRoot
|
||||
value: true
|
||||
- equal:
|
||||
path: .spec.template.spec.securityContext.runAsUser
|
||||
value: 1000
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation
|
||||
value: false
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem
|
||||
value: true
|
||||
@@ -0,0 +1,60 @@
|
||||
suite: ingress-tests
|
||||
|
||||
templates:
|
||||
- ../templates/ingress.yaml
|
||||
- ../templates/llamacloud/configmaps/urls.yaml
|
||||
|
||||
tests:
|
||||
- it: should be an Ingress
|
||||
set:
|
||||
ingress.enabled: true
|
||||
ingress.host: "llamacloud.example.com"
|
||||
ingress.tlsSecretName: "llamacloud-example-tls-secret"
|
||||
ingress.ingressClassName: "default-ingress-class"
|
||||
template: ../templates/ingress.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Ingress
|
||||
- equal:
|
||||
path: .spec.rules[0].host
|
||||
value: "llamacloud.example.com"
|
||||
- equal:
|
||||
path: .spec.tls[0].hosts[0]
|
||||
value: "llamacloud.example.com"
|
||||
- equal:
|
||||
path: .spec.tls[0].secretName
|
||||
value: "llamacloud-example-tls-secret"
|
||||
- equal:
|
||||
path: .spec.ingressClassName
|
||||
value: "default-ingress-class"
|
||||
|
||||
- it: should set BACKEND_URL to use https when tlsSecretName is provided
|
||||
set:
|
||||
ingress.enabled: true
|
||||
ingress.ingressClassName: "default-ingress-class"
|
||||
ingress.host: "llamacloud.example.com"
|
||||
ingress.tlsSecretName: "llamacloud-example-tls-secret"
|
||||
template: ../templates/llamacloud/configmaps/urls.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .data.BACKEND_URL
|
||||
value: "https://llamacloud.example.com"
|
||||
|
||||
- it: should set BACKEND_URL to use http when tlsSecretName is not provided
|
||||
set:
|
||||
ingress.enabled: true
|
||||
ingress.ingressClassName: "default-ingress-class"
|
||||
ingress.host: "llamacloud.example.com"
|
||||
template: ../templates/llamacloud/configmaps/urls.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .data.BACKEND_URL
|
||||
value: "http://llamacloud.example.com"
|
||||
|
||||
- it: should not create an ingress if ingress.enabled is false
|
||||
set:
|
||||
ingress.enabled: false
|
||||
template: ../templates/ingress.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
@@ -0,0 +1,366 @@
|
||||
suite: jobs-service-tests
|
||||
|
||||
templates:
|
||||
- ../templates/llamacloud/configmaps/common.yaml
|
||||
- ../templates/llamacloud/configmaps/buckets.yaml
|
||||
- ../templates/llamacloud/configmaps/extract.yaml
|
||||
- ../templates/llamacloud/deployment.yaml
|
||||
- ../templates/llamacloud/service.yaml
|
||||
- ../templates/llamacloud/secret.yaml
|
||||
- ../templates/llamacloud/secrets/llm.openai.yaml
|
||||
- ../templates/llamacloud/secrets/llm.anthropic.yaml
|
||||
- ../templates/llamacloud/secrets/llm.gemini.yaml
|
||||
- ../templates/llamacloud/secrets/llm.azure.yaml
|
||||
- ../templates/llamacloud/secrets/llm.aws.yaml
|
||||
- ../templates/llamacloud/secrets/llm.gcp.yaml
|
||||
- ../templates/llamacloud/serviceaccount.yaml
|
||||
|
||||
release:
|
||||
name: test-release
|
||||
namespace: test-namespace
|
||||
|
||||
capabilities:
|
||||
majorVersion: 1
|
||||
minorVersion: 31
|
||||
apiVersions:
|
||||
- apps/v1
|
||||
- monitoring.coreos.com/v1
|
||||
|
||||
chart:
|
||||
appVersion: 0.0.0
|
||||
|
||||
tests:
|
||||
- it: should be a Deployment
|
||||
set:
|
||||
jobsService.image: docker.io/llamaindex/llamacloud-jobs-service:latest
|
||||
redis.host: test-redis-host
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
documentIndex: 1
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Deployment
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].image
|
||||
value: docker.io/llamaindex/llamacloud-jobs-service:latest
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].env[?(@.name == "UVICORN_PORT")].value
|
||||
value: "8002"
|
||||
|
||||
- it: should create a Deployment with correct llm environment variables
|
||||
set:
|
||||
config.llms.openAi.secret: existing-openai-api-key
|
||||
config.llms.anthropic.secret: existing-anthropic-api-key
|
||||
config.llms.gemini.secret: existing-gemini-api-key
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
documentIndex: 1
|
||||
asserts:
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
secretRef:
|
||||
name: existing-anthropic-api-key
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
secretRef:
|
||||
name: existing-openai-api-key
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
secretRef:
|
||||
name: existing-gemini-api-key
|
||||
|
||||
- it: should add llm configs from new llm config section with existing secrets
|
||||
set:
|
||||
config.llms.openAi.secret: existing-openai-api-key
|
||||
config.llms.anthropic.secret: existing-anthropic-api-key
|
||||
config.llms.gemini.secret: existing-gemini-api-key
|
||||
config.llms.azureOpenAi.secret: existing-azure-openai-api-key
|
||||
config.llms.awsBedrock.secret: existing-aws-bedrock-api-key
|
||||
config.llms.googleVertexAi.secret: existing-google-vertex-ai-api-key
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
documentIndex: 1
|
||||
asserts:
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
secretRef:
|
||||
name: existing-anthropic-api-key
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
secretRef:
|
||||
name: existing-openai-api-key
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
secretRef:
|
||||
name: existing-gemini-api-key
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
secretRef:
|
||||
name: existing-azure-openai-api-key
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
secretRef:
|
||||
name: existing-aws-bedrock-api-key
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
secretRef:
|
||||
name: existing-google-vertex-ai-api-key
|
||||
|
||||
- it: should create OpenAI secret with API key
|
||||
set:
|
||||
config.llms.openAi.apiKey: "test-api-key"
|
||||
template: ../templates/llamacloud/secrets/llm.openai.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Secret
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: openai-api-key-secret
|
||||
- equal:
|
||||
path: .data.OPENAI_API_KEY
|
||||
value: dGVzdC1hcGkta2V5
|
||||
- equal:
|
||||
path: .data.LC_OPENAI_API_KEY
|
||||
value: dGVzdC1hcGkta2V5
|
||||
|
||||
- it: should create Anthropic secret with API key
|
||||
set:
|
||||
config.llms.anthropic.apiKey: "test-api-key"
|
||||
template: ../templates/llamacloud/secrets/llm.anthropic.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Secret
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: anthropic-api-key-secret
|
||||
- equal:
|
||||
path: .data.ANTHROPIC_API_KEY
|
||||
value: dGVzdC1hcGkta2V5
|
||||
|
||||
- it: should create Gemini secret with API key
|
||||
set:
|
||||
config.llms.gemini.apiKey: "test-api-key"
|
||||
template: ../templates/llamacloud/secrets/llm.gemini.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Secret
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: gemini-api-key-secret
|
||||
- equal:
|
||||
path: .data.GOOGLE_GEMINI_API_KEY
|
||||
value: dGVzdC1hcGkta2V5
|
||||
|
||||
- it: should create Azure OpenAI secret with deployments
|
||||
set:
|
||||
config.llms.azureOpenAi.deployments:
|
||||
- model: "gpt-4o"
|
||||
apiKey: "test-api-key"
|
||||
baseUrl: "https://api.openai.com/v1"
|
||||
apiVersion: "2024-08-06"
|
||||
deploymentName: "gpt-4o"
|
||||
- model: "gpt-4o-mini"
|
||||
apiKey: "test-api-key"
|
||||
baseUrl: "https://api.openai.com/v1"
|
||||
apiVersion: "2024-08-06"
|
||||
deploymentName: "gpt-4o-mini"
|
||||
template: ../templates/llamacloud/secrets/llm.azure.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Secret
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: azure-open-ai-api-key-secret
|
||||
- equal:
|
||||
path: .data.AZURE_OPENAI_GPT_4O_API_KEY
|
||||
value: dGVzdC1hcGkta2V5
|
||||
- equal:
|
||||
path: .data.AZURE_OPENAI_GPT_4O_BASE_URL
|
||||
value: aHR0cHM6Ly9hcGkub3BlbmFpLmNvbS92MQ==
|
||||
- equal:
|
||||
path: .data.AZURE_OPENAI_GPT_4O_DEPLOYMENT_NAME
|
||||
value: Z3B0LTRv
|
||||
- equal:
|
||||
path: .data.AZURE_OPENAI_GPT_4O_API_VERSION
|
||||
value: MjAyNC0wOC0wNg==
|
||||
- equal:
|
||||
path: .data.AZURE_OPENAI_GPT_4O_MINI_API_KEY
|
||||
value: dGVzdC1hcGkta2V5
|
||||
- equal:
|
||||
path: .data.AZURE_OPENAI_GPT_4O_MINI_BASE_URL
|
||||
value: aHR0cHM6Ly9hcGkub3BlbmFpLmNvbS92MQ==
|
||||
- equal:
|
||||
path: .data.AZURE_OPENAI_GPT_4O_MINI_DEPLOYMENT_NAME
|
||||
value: Z3B0LTRvLW1pbmk=
|
||||
- equal:
|
||||
path: .data.AZURE_OPENAI_GPT_4O_MINI_API_VERSION
|
||||
value: MjAyNC0wOC0wNg==
|
||||
|
||||
- it: should create AWS Bedrock secret with credentials
|
||||
set:
|
||||
config.llms.awsBedrock.region: "us-east-1"
|
||||
config.llms.awsBedrock.accessKeyId: "test-api-key"
|
||||
config.llms.awsBedrock.secretAccessKey: "test-api-key"
|
||||
config.llms.awsBedrock.sonnet3_5ModelVersionName: "anthropic.claude-3-5-sonnet-20240620-v1:0"
|
||||
config.llms.awsBedrock.sonnet3_7ModelVersionName: "anthropic.claude-3-7-sonnet-20250219-v1:0"
|
||||
config.llms.awsBedrock.sonnet4_0ModelVersionName: "anthropic.claude-sonnet-4-20250514-v1:0"
|
||||
config.llms.awsBedrock.haiku3_5ModelVersionName: "anthropic.claude-3-5-haiku-20241022-v1:0"
|
||||
config.llms.awsBedrock.haiku4_5ModelVersionName: "anthropic.claude-haiku-4-5-20251001-v1:0"
|
||||
template: ../templates/llamacloud/secrets/llm.aws.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Secret
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: aws-bedrock-api-key-secret
|
||||
- equal:
|
||||
path: .data.AWS_BEDROCK_ENABLED
|
||||
value: dHJ1ZQ==
|
||||
- equal:
|
||||
path: .data.AWS_BEDROCK_REGION
|
||||
value: dXMtZWFzdC0x
|
||||
- equal:
|
||||
path: .data.AWS_BEDROCK_ACCESS_KEY_ID
|
||||
value: dGVzdC1hcGkta2V5
|
||||
- equal:
|
||||
path: .data.AWS_BEDROCK_SECRET_ACCESS_KEY
|
||||
value: dGVzdC1hcGkta2V5
|
||||
- equal:
|
||||
path: .data.AWS_BEDROCK_SONNET_3_5_MODEL_VERSION_NAME
|
||||
value: YW50aHJvcGljLmNsYXVkZS0zLTUtc29ubmV0LTIwMjQwNjIwLXYxOjA=
|
||||
- equal:
|
||||
path: .data.AWS_BEDROCK_SONNET_3_7_MODEL_VERSION_NAME
|
||||
value: YW50aHJvcGljLmNsYXVkZS0zLTctc29ubmV0LTIwMjUwMjE5LXYxOjA=
|
||||
- equal:
|
||||
path: .data.AWS_BEDROCK_SONNET_4_0_MODEL_VERSION_NAME
|
||||
value: YW50aHJvcGljLmNsYXVkZS1zb25uZXQtNC0yMDI1MDUxNC12MTow
|
||||
- equal:
|
||||
path: .data.AWS_BEDROCK_HAIKU_3_5_MODEL_VERSION_NAME
|
||||
value: YW50aHJvcGljLmNsYXVkZS0zLTUtaGFpa3UtMjAyNDEwMjItdjE6MA==
|
||||
- equal:
|
||||
path: .data.AWS_BEDROCK_HAIKU_4_5_MODEL_VERSION_NAME
|
||||
value: YW50aHJvcGljLmNsYXVkZS1oYWlrdS00LTUtMjAyNTEwMDEtdjE6MA==
|
||||
|
||||
- it: should create Google Vertex AI secret with credentials
|
||||
set:
|
||||
config.llms.googleVertexAi.projectId: "test-project-id"
|
||||
config.llms.googleVertexAi.location: "us-east-1"
|
||||
config.llms.googleVertexAi.credentialsJson: "test-credentials-json"
|
||||
template: ../templates/llamacloud/secrets/llm.gcp.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Secret
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: google-vertex-ai-api-key-secret
|
||||
- equal:
|
||||
path: .data.GOOGLE_VERTEX_AI_ENABLED
|
||||
value: dHJ1ZQ==
|
||||
- equal:
|
||||
path: .data.GOOGLE_VERTEX_AI_PROJECT_ID
|
||||
value: dGVzdC1wcm9qZWN0LWlk
|
||||
- equal:
|
||||
path: .data.GOOGLE_VERTEX_AI_LOCATION
|
||||
value: dXMtZWFzdC0x
|
||||
- equal:
|
||||
path: .data.GOOGLE_VERTEX_AI_CREDENTIALS_JSON
|
||||
value: dGVzdC1jcmVkZW50aWFscy1qc29u
|
||||
|
||||
- it: should create common-config ConfigMap with IS_DEPLOYED
|
||||
templates:
|
||||
- ../templates/llamacloud/configmaps/common.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: ConfigMap
|
||||
- equal:
|
||||
path: .data.IS_DEPLOYED
|
||||
value: "true"
|
||||
|
||||
- it: should create bucket-config ConfigMap with correct bucket names
|
||||
set:
|
||||
config.storageBuckets.parsedDocuments: test-cloud-bucket-name
|
||||
redis.host: test-redis-host
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
templates:
|
||||
- ../templates/llamacloud/configmaps/buckets.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: ConfigMap
|
||||
- equal:
|
||||
path: .data.S3_DOCUMENT_BUCKET_NAME
|
||||
value: test-cloud-bucket-name
|
||||
- equal:
|
||||
path: .data.S3_ETL_BUCKET_NAME
|
||||
value: llama-platform-etl
|
||||
- equal:
|
||||
path: .data.S3_EXTERNAL_COMPONENTS_BUCKET_NAME
|
||||
value: llama-platform-external-components
|
||||
- equal:
|
||||
path: .data.S3_FILE_PARSING_BUCKET_NAME
|
||||
value: llama-platform-file-parsing
|
||||
- equal:
|
||||
path: .data.S3_RAW_FILE_BUCKET_NAME
|
||||
value: llama-platform-raw-files
|
||||
- equal:
|
||||
path: .data.S3_LLAMA_CLOUD_PARSE_OUTPUT_BUCKET_NAME
|
||||
value: llama-cloud-parse-output
|
||||
- equal:
|
||||
path: .data.S3_FILE_SCREENSHOT_BUCKET_NAME
|
||||
value: llama-platform-file-screenshots
|
||||
- equal:
|
||||
path: .data.S3_LLAMA_EXTRACT_OUTPUT_BUCKET_NAME
|
||||
value: llama-platform-extract-output
|
||||
|
||||
- it: should create extract-config ConfigMap with LLAMA_EXTRACT settings
|
||||
templates:
|
||||
- ../templates/llamacloud/configmaps/extract.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: ConfigMap
|
||||
- equal:
|
||||
path: .data.LLAMA_EXTRACT_MULTIMODAL_MODEL
|
||||
value: "openai-gpt-4-1"
|
||||
|
||||
- it: jobs-service deployment should have LOG_LEVEL env var
|
||||
set:
|
||||
config.logLevel: info
|
||||
redis.host: test-redis-host
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
documentIndex: 1
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].env[?(@.name == "LOG_LEVEL")].value
|
||||
value: info
|
||||
|
||||
|
||||
- it: should create a Service
|
||||
set:
|
||||
redis.host: test-redis-host
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
template: ../templates/llamacloud/service.yaml
|
||||
documentIndex: 1
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Service
|
||||
@@ -0,0 +1,130 @@
|
||||
suite: jobs-worker-tests
|
||||
|
||||
templates:
|
||||
- ../templates/llamacloud/configmaps/common.yaml
|
||||
- ../templates/llamacloud/configmaps/buckets.yaml
|
||||
- ../templates/llamacloud/configmaps/extract.yaml
|
||||
- ../templates/llamacloud/configmap.yaml
|
||||
- ../templates/llamacloud/deployment.yaml
|
||||
- ../templates/llamacloud/hpa.yaml
|
||||
- ../templates/llamacloud/service.yaml
|
||||
- ../templates/llamacloud/secret.yaml
|
||||
- ../templates/llamacloud/serviceaccount.yaml
|
||||
|
||||
release:
|
||||
name: test-release
|
||||
namespace: test-namespace
|
||||
|
||||
capabilities:
|
||||
majorVersion: 1
|
||||
minorVersion: 31
|
||||
apiVersions:
|
||||
- apps/v1
|
||||
- monitoring.coreos.com/v1
|
||||
|
||||
chart:
|
||||
appVersion: 0.0.0
|
||||
|
||||
tests:
|
||||
- it: should be a Deployment
|
||||
set:
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
jobsWorker.image: "docker.io/llamaindex/llamacloud-jobs-worker:latest"
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
documentIndex: 2
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Deployment
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].image
|
||||
value: docker.io/llamaindex/llamacloud-jobs-worker:latest
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].env[?(@.name == "UVICORN_PORT")].value
|
||||
value: "8001"
|
||||
|
||||
- it: should create common-config ConfigMap with IS_DEPLOYED
|
||||
templates:
|
||||
- ../templates/llamacloud/configmaps/common.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: ConfigMap
|
||||
- equal:
|
||||
path: .data.IS_DEPLOYED
|
||||
value: "true"
|
||||
|
||||
- it: should create bucket-config ConfigMap with correct bucket names
|
||||
set:
|
||||
config.storageBuckets.parsedDocuments: test-cloud-bucket-name
|
||||
templates:
|
||||
- ../templates/llamacloud/configmaps/buckets.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: ConfigMap
|
||||
- equal:
|
||||
path: .data.S3_DOCUMENT_BUCKET_NAME
|
||||
value: test-cloud-bucket-name
|
||||
- equal:
|
||||
path: .data.S3_ETL_BUCKET_NAME
|
||||
value: llama-platform-etl
|
||||
- equal:
|
||||
path: .data.S3_EXTERNAL_COMPONENTS_BUCKET_NAME
|
||||
value: llama-platform-external-components
|
||||
- equal:
|
||||
path: .data.S3_FILE_PARSING_BUCKET_NAME
|
||||
value: llama-platform-file-parsing
|
||||
- equal:
|
||||
path: .data.S3_RAW_FILE_BUCKET_NAME
|
||||
value: llama-platform-raw-files
|
||||
- equal:
|
||||
path: .data.S3_LLAMA_CLOUD_PARSE_OUTPUT_BUCKET_NAME
|
||||
value: llama-cloud-parse-output
|
||||
- equal:
|
||||
path: .data.S3_FILE_SCREENSHOT_BUCKET_NAME
|
||||
value: llama-platform-file-screenshots
|
||||
- equal:
|
||||
path: .data.S3_LLAMA_EXTRACT_OUTPUT_BUCKET_NAME
|
||||
value: llama-platform-extract-output
|
||||
|
||||
- it: should create extract-config ConfigMap with default LLAMA_EXTRACT settings
|
||||
templates:
|
||||
- ../templates/llamacloud/configmaps/extract.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: ConfigMap
|
||||
- equal:
|
||||
path: .data.LLAMA_EXTRACT_MULTIMODAL_MODEL
|
||||
value: "openai-gpt-4-1"
|
||||
- equal:
|
||||
path: .data.LLAMA_EXTRACT_SCHEMA_GENERATION_MODEL
|
||||
value: "openai-gpt-4-1-mini"
|
||||
- equal:
|
||||
path: .data.LLAMA_EXTRACT_MAX_PAGES
|
||||
value: "500"
|
||||
- equal:
|
||||
path: .data.LLAMA_EXTRACT_MAX_FILE_SIZE_MB
|
||||
value: "100"
|
||||
|
||||
- it: should set custom LLAMA_EXTRACT settings when specified
|
||||
set:
|
||||
config.extraction.multimodalModel: "openai-gpt-4-1"
|
||||
config.extraction.schemaGenerationModel: "openai-gpt-4-1-mini"
|
||||
config.extraction.maxPages: 1000
|
||||
config.extraction.maxFileSizeMb: 200
|
||||
templates:
|
||||
- ../templates/llamacloud/configmaps/extract.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .data.LLAMA_EXTRACT_MULTIMODAL_MODEL
|
||||
value: "openai-gpt-4-1"
|
||||
- equal:
|
||||
path: .data.LLAMA_EXTRACT_SCHEMA_GENERATION_MODEL
|
||||
value: "openai-gpt-4-1-mini"
|
||||
- equal:
|
||||
path: .data.LLAMA_EXTRACT_MAX_PAGES
|
||||
value: "1000"
|
||||
- equal:
|
||||
path: .data.LLAMA_EXTRACT_MAX_FILE_SIZE_MB
|
||||
value: "200"
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
suite: license-key-tests
|
||||
|
||||
templates:
|
||||
- ../templates/llamacloud/secrets/license.yaml
|
||||
|
||||
tests:
|
||||
- it: should create a license key secret
|
||||
set:
|
||||
license.key: test-license-key
|
||||
template: ../templates/llamacloud/secrets/license.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .data.LLAMACLOUD_LICENSE_KEY
|
||||
value: dGVzdC1saWNlbnNlLWtleQ==
|
||||
|
||||
- it: should fail if no license key is provided
|
||||
set:
|
||||
license.key: ""
|
||||
template: ../templates/llamacloud/secrets/license.yaml
|
||||
asserts:
|
||||
- failedTemplate:
|
||||
errorMessage: .Values.license.key cannot be empty. Please provide a valid license key
|
||||
|
||||
- it: should not create a secret if existing secret name is provided
|
||||
set:
|
||||
license.secret: existing-license-secret
|
||||
template: ../templates/llamacloud/secrets/license.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
@@ -0,0 +1,259 @@
|
||||
suite: llamaparse-layout-detection-api-tests
|
||||
|
||||
templates:
|
||||
- ../templates/llamacloud/deployment.yaml
|
||||
- ../templates/llamacloud/hpa.yaml
|
||||
- ../templates/llamacloud/pdb.yaml
|
||||
- ../templates/llamacloud/service.yaml
|
||||
- ../templates/llamacloud/serviceaccount.yaml
|
||||
|
||||
release:
|
||||
name: test-release
|
||||
namespace: test-namespace
|
||||
|
||||
tests:
|
||||
- it: should be a Deployment
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: true
|
||||
llamaParseLayoutDetectionApi:
|
||||
image: docker.io/llamaindex/llamacloud-layout-detection-api:latest
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
documentIndex: 4
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Deployment
|
||||
- equal:
|
||||
path: metadata.name
|
||||
value: llamacloud-layout
|
||||
- equal:
|
||||
path: spec.selector.matchLabels["app.kubernetes.io/name"]
|
||||
value: llamacloud-layout
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].name
|
||||
value: llamacloud-layout
|
||||
- notEqual:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
value: []
|
||||
|
||||
- it: should create a deployment if config.parseLayoutDetection.enabled is true
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: true
|
||||
llamaParseLayoutDetectionApi:
|
||||
image: docker.io/llamaindex/llamacloud-layout-detection-api:latest
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
documentIndex: 4
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].env[?(@.name == "LOG_LEVEL")].value
|
||||
value: INFO
|
||||
- equal:
|
||||
path: .spec.template.spec.serviceAccountName
|
||||
value: llamacloud-layout
|
||||
|
||||
- it: should not create a deployment if config.parseLayoutDetection.enabled is false
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
temporal:
|
||||
deploy: false
|
||||
host: test-temporal
|
||||
port: 7233
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- matchRegex:
|
||||
path: metadata.name
|
||||
pattern: ^(llamacloud|llamacloud-operator|llamacloud-worker|llamacloud-parse|llamacloud-telemetry|llamacloud-temporal-operator|llamacloud-temporal-parse|temporal-jobs-worker)$
|
||||
|
||||
- it: should create a service if config.parseLayoutDetection.enabled is true
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: true
|
||||
llamaParseLayoutDetectionApi:
|
||||
image: docker.io/llamaindex/llamacloud-layout-detection-api:latest
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
template: ../templates/llamacloud/service.yaml
|
||||
documentIndex: 4
|
||||
asserts:
|
||||
- equal:
|
||||
path: metadata.name
|
||||
value: llamacloud-layout
|
||||
|
||||
- it: should not create a HPA if horizontalPodAutoccalerSpec is not set
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: true
|
||||
llamaParseLayoutDetectionApi:
|
||||
image: docker.io/llamaindex/llamacloud-layout-detection-api:latest
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
template: ../templates/llamacloud/hpa.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
- it: should create a HPA if horizontalPodAutoccalerSpec is set
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: true
|
||||
llamaParseLayoutDetectionApi:
|
||||
image: docker.io/llamaindex/llamacloud-layout-detection-api:latest
|
||||
horizontalPodAutoscalerSpec:
|
||||
minReplicas: 2
|
||||
maxReplicas: 10
|
||||
metrics:
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: 80
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
template: ../templates/llamacloud/hpa.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 1
|
||||
- equal:
|
||||
path: metadata.name
|
||||
value: llamacloud-layout
|
||||
- equal:
|
||||
path: spec.minReplicas
|
||||
value: 2
|
||||
- equal:
|
||||
path: spec.maxReplicas
|
||||
value: 10
|
||||
@@ -0,0 +1,261 @@
|
||||
suite: llamaparse-ocr-tests
|
||||
|
||||
templates:
|
||||
- ../templates/llamacloud/deployment.yaml
|
||||
- ../templates/llamacloud/hpa.yaml
|
||||
- ../templates/llamacloud/pdb.yaml
|
||||
- ../templates/llamacloud/service.yaml
|
||||
- ../templates/llamacloud/serviceaccount.yaml
|
||||
|
||||
release:
|
||||
name: test-release
|
||||
namespace: test-namespace
|
||||
|
||||
capabilities:
|
||||
majorVersion: 1
|
||||
minorVersion: 31
|
||||
apiVersions:
|
||||
|
||||
tests:
|
||||
- it: should be a Deployment
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: true
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
documentIndex: 4
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Deployment
|
||||
- equal:
|
||||
path: metadata.name
|
||||
value: llamacloud-ocr
|
||||
- equal:
|
||||
path: spec.selector.matchLabels["app.kubernetes.io/name"]
|
||||
value: llamacloud-ocr
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].name
|
||||
value: llamacloud-ocr
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
secretRef:
|
||||
name: llamacloud-license-key
|
||||
|
||||
- it: should not create a deployment if llamaParseOcr.enabled is false
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
temporal:
|
||||
deploy: false
|
||||
host: test-temporal
|
||||
port: 7233
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 8
|
||||
|
||||
- it: should not create a service if llamaParseOcr.enabled is false
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
temporal:
|
||||
deploy: false
|
||||
host: test-temporal
|
||||
port: 7233
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
template: ../templates/llamacloud/service.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 8
|
||||
|
||||
- it: should not create a HPA if llamaParseOcr has no horizontalPodAutoscalerSpec
|
||||
set:
|
||||
config.parseOcr.enabled: true
|
||||
llamaParseOcr.horizontalPodAutoscalerSpec: null
|
||||
template: ../templates/llamacloud/hpa.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
- it: should not create a PDB if llamaParseOcr has no podDisruptionBudgetSpec
|
||||
set:
|
||||
config.parseOcr.enabled: true
|
||||
llamaParseOcr.podDisruptionBudgetSpec: null
|
||||
template: ../templates/llamacloud/pdb.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
- it: should use CPU image by default (gpu not set)
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: true
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
documentIndex: 4
|
||||
asserts:
|
||||
- matchRegex:
|
||||
path: spec.template.spec.containers[0].image
|
||||
pattern: docker\.io/llamaindex/llamacloud-llamaparse-ocr:.+-cpu$
|
||||
|
||||
- it: should use CPU image when config.parseOcr.gpu is false
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: true
|
||||
gpu: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
llamaParseOcr.image: ""
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
documentIndex: 4
|
||||
asserts:
|
||||
- matchRegex:
|
||||
path: spec.template.spec.containers[0].image
|
||||
pattern: docker\.io/llamaindex/llamacloud-llamaparse-ocr:.+-cpu$
|
||||
|
||||
- it: should use GPU image when config.parseOcr.gpu is true
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: true
|
||||
gpu: true
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
llamaParseOcr.image: ""
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
documentIndex: 4
|
||||
asserts:
|
||||
- matchRegex:
|
||||
path: spec.template.spec.containers[0].image
|
||||
pattern: docker\.io/llamaindex/llamacloud-llamaparse-ocr:[^-]+$
|
||||
@@ -0,0 +1,88 @@
|
||||
suite: llamaparse-tests
|
||||
|
||||
templates:
|
||||
- ../templates/llamacloud/configmaps/buckets.yaml
|
||||
- ../templates/llamacloud/deployment.yaml
|
||||
- ../templates/llamacloud/secret.yaml
|
||||
- ../templates/llamacloud/hpa.yaml
|
||||
- ../templates/llamacloud/pdb.yaml
|
||||
- ../templates/llamacloud/service.yaml
|
||||
- ../templates/llamacloud/serviceaccount.yaml
|
||||
|
||||
release:
|
||||
name: test-release
|
||||
namespace: test-namespace
|
||||
|
||||
capabilities:
|
||||
majorVersion: 1
|
||||
minorVersion: 31
|
||||
apiVersions:
|
||||
- apps/v1
|
||||
|
||||
chart:
|
||||
appVersion: 0.0.0
|
||||
|
||||
tests:
|
||||
- it: should create a Deployment
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
llamaParse:
|
||||
image: docker.io/llamaindex/llamacloud-llamaparse:latest
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
documentIndex: 3
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Deployment
|
||||
- equal:
|
||||
path: metadata.name
|
||||
value: llamacloud-parse
|
||||
- equal:
|
||||
path: spec.selector.matchLabels["app.kubernetes.io/name"]
|
||||
value: llamacloud-parse
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].name
|
||||
value: llamacloud-parse
|
||||
|
||||
- it: should create bucket-config ConfigMap with parse buckets
|
||||
set:
|
||||
config.storageBuckets.parseFileUpload: test-s3-upload-bucket
|
||||
config.storageBuckets.parseFileOutput: test-s3-output-bucket
|
||||
rabbitmq.enabled: false
|
||||
templates:
|
||||
- ../templates/llamacloud/configmaps/buckets.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: ConfigMap
|
||||
- equal:
|
||||
path: .data.CLOUD_PROVIDER
|
||||
value: aws
|
||||
- equal:
|
||||
path: .data.S3_UPLOAD_BUCKET
|
||||
value: test-s3-upload-bucket
|
||||
- equal:
|
||||
path: .data.S3_OUTPUT_BUCKET
|
||||
value: test-s3-output-bucket
|
||||
@@ -0,0 +1,128 @@
|
||||
suite: redis-config-tests
|
||||
|
||||
templates:
|
||||
- ../templates/llamacloud/deployment.yaml
|
||||
|
||||
release:
|
||||
name: test-release
|
||||
namespace: test-namespace
|
||||
|
||||
capabilities:
|
||||
majorVersion: 1
|
||||
minorVersion: 31
|
||||
apiVersions:
|
||||
- apps/v1
|
||||
|
||||
chart:
|
||||
appVersion: 0.0.0
|
||||
|
||||
tests:
|
||||
- it: should reference redis-secret in envFrom for backend
|
||||
set:
|
||||
redis.host: test-redis-host
|
||||
redis.port: "6379"
|
||||
redis.scheme: rediss
|
||||
redis.db: 0
|
||||
redis.password: test-password
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
documentIndex: 0
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
secretRef:
|
||||
name: redis-secret
|
||||
|
||||
- it: should reference redis-secret in envFrom when Redis credentials are provided
|
||||
set:
|
||||
redis.host: test-redis-host
|
||||
redis.port: "6379"
|
||||
redis.scheme: redis
|
||||
redis.username: test-redis-user
|
||||
redis.password: test-redis-password
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
documentIndex: 0
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
secretRef:
|
||||
name: redis-secret
|
||||
|
||||
- it: should use custom redis secret name when provided
|
||||
set:
|
||||
redis.secret: custom-redis-secret
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
documentIndex: 0
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
secretRef:
|
||||
name: custom-redis-secret
|
||||
|
||||
- it: should reference redis-secret in jobs-service deployment
|
||||
set:
|
||||
redis.host: test-redis-host
|
||||
redis.port: "6380"
|
||||
redis.scheme: rediss
|
||||
redis.username: jobs-redis-user
|
||||
redis.password: jobs-redis-password
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
documentIndex: 1
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
secretRef:
|
||||
name: redis-secret
|
||||
|
||||
- it: should reference redis-secret in jobs-worker deployment
|
||||
set:
|
||||
redis.host: worker-redis-host
|
||||
redis.port: "6379"
|
||||
redis.scheme: redis
|
||||
redis.username: worker-redis-user
|
||||
redis.password: worker-redis-password
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
documentIndex: 2
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
secretRef:
|
||||
name: redis-secret
|
||||
|
||||
- it: should reference redis-secret in usage deployment
|
||||
set:
|
||||
redis.host: usage-redis-host
|
||||
redis.port: "6380"
|
||||
redis.scheme: rediss
|
||||
redis.username: usage-redis-user
|
||||
redis.password: usage-redis-password
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
documentIndex: 4
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[0].envFrom
|
||||
content:
|
||||
secretRef:
|
||||
name: redis-secret
|
||||
@@ -0,0 +1,745 @@
|
||||
suite: s3-proxy-tests
|
||||
|
||||
templates:
|
||||
- ../templates/llamacloud/configmaps/s3proxy.yaml
|
||||
- ../templates/llamacloud/configmaps/urls.yaml
|
||||
- ../templates/llamacloud/secrets/s3proxy.yaml
|
||||
- ../templates/llamacloud/deployment.yaml
|
||||
|
||||
release:
|
||||
name: test-release
|
||||
namespace: test-namespace
|
||||
|
||||
capabilities:
|
||||
majorVersion: 1
|
||||
minorVersion: 31
|
||||
apiVersions:
|
||||
- apps/v1
|
||||
- v1
|
||||
|
||||
chart:
|
||||
appVersion: 0.0.0
|
||||
|
||||
tests:
|
||||
# ConfigMap Tests
|
||||
- it: should create s3proxy configmap when provider is gcp
|
||||
set:
|
||||
config.storageBuckets.provider: gcp
|
||||
config.storageBuckets.s3proxy.enabled: true
|
||||
template: ../templates/llamacloud/configmaps/s3proxy.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: ConfigMap
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: s3proxy-config
|
||||
- equal:
|
||||
path: .data.S3PROXY_AUTHORIZATION
|
||||
value: "none"
|
||||
- equal:
|
||||
path: .data.S3PROXY_CORS_ALLOW_ORIGINS
|
||||
value: "*"
|
||||
- equal:
|
||||
path: .data.S3PROXY_ENDPOINT
|
||||
value: "http://0.0.0.0:8080"
|
||||
- equal:
|
||||
path: .data.S3PROXY_IGNORE_UNKNOWN_HEADERS
|
||||
value: "true"
|
||||
|
||||
- it: should create s3proxy configmap when provider is azure
|
||||
set:
|
||||
config.storageBuckets.provider: azure
|
||||
config.storageBuckets.s3proxy.enabled: true
|
||||
template: ../templates/llamacloud/configmaps/s3proxy.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: ConfigMap
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: s3proxy-config
|
||||
|
||||
- it: should not create s3proxy configmap when s3proxy is disabled
|
||||
set:
|
||||
config.storageBuckets.provider: aws
|
||||
config.storageBuckets.s3proxy.enabled: false
|
||||
template: ../templates/llamacloud/configmaps/s3proxy.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
# Secret Tests
|
||||
- it: should create s3proxy secret when provider is gcp
|
||||
set:
|
||||
config.storageBuckets.provider: gcp
|
||||
config.storageBuckets.s3proxy.enabled: true
|
||||
config.storageBuckets.s3proxy.config:
|
||||
JCLOUDS_PROVIDER: google-cloud-storage
|
||||
JCLOUDS_IDENTITY: test-identity
|
||||
JCLOUDS_CREDENTIAL: test-credential
|
||||
template: ../templates/llamacloud/secrets/s3proxy.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Secret
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: s3proxy-secret
|
||||
|
||||
- it: should create s3proxy secret when provider is azure
|
||||
set:
|
||||
config.storageBuckets.provider: azure
|
||||
config.storageBuckets.s3proxy.enabled: true
|
||||
config.storageBuckets.s3proxy.config:
|
||||
JCLOUDS_PROVIDER: azureblob
|
||||
JCLOUDS_IDENTITY: test-identity
|
||||
JCLOUDS_CREDENTIAL: test-credential
|
||||
template: ../templates/llamacloud/secrets/s3proxy.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Secret
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: s3proxy-secret
|
||||
|
||||
- it: should not create s3proxy secret when s3proxy is disabled
|
||||
set:
|
||||
config.storageBuckets.provider: aws
|
||||
config.storageBuckets.s3proxy.enabled: false
|
||||
template: ../templates/llamacloud/secrets/s3proxy.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
# Sidecar Injection Tests - Backend Component
|
||||
- it: should inject s3proxy sidecar into backend when provider is gcp
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
storageBuckets:
|
||||
provider: gcp
|
||||
s3proxy:
|
||||
enabled: true
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
documentIndex: 0
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Deployment
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: llamacloud
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].name
|
||||
value: s3proxy
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].image
|
||||
value: docker.io/andrewgaul/s3proxy:sha-82e50ee
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].ports[0].containerPort
|
||||
value: 8080
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[1].envFrom
|
||||
content:
|
||||
configMapRef:
|
||||
name: s3proxy-config
|
||||
- contains:
|
||||
path: .spec.template.spec.containers[1].envFrom
|
||||
content:
|
||||
secretRef:
|
||||
name: s3proxy-secret
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].volumeMounts[0].name
|
||||
value: s3proxy-tmp
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].volumeMounts[0].mountPath
|
||||
value: /tmp
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].volumeMounts[0].subPath
|
||||
value: tmp-dir
|
||||
|
||||
- it: should inject s3proxy sidecar into backend when provider is azure
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
storageBuckets:
|
||||
provider: azure
|
||||
s3proxy:
|
||||
enabled: true
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
documentIndex: 0
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Deployment
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: llamacloud
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].name
|
||||
value: s3proxy
|
||||
|
||||
- it: should not inject s3proxy sidecar into backend when s3proxy is disabled
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
storageBuckets:
|
||||
provider: aws
|
||||
s3proxy:
|
||||
enabled: false
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
documentIndex: 0
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Deployment
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: llamacloud
|
||||
# Should only have 1 container (the main backend container)
|
||||
- lengthEqual:
|
||||
path: .spec.template.spec.containers
|
||||
count: 1
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].name
|
||||
value: llamacloud
|
||||
|
||||
- it: should create s3proxy-tmp volume when provider is gcp
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
storageBuckets:
|
||||
provider: gcp
|
||||
s3proxy:
|
||||
enabled: true
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
documentIndex: 0
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- contains:
|
||||
path: .spec.template.spec.volumes
|
||||
content:
|
||||
name: s3proxy-tmp
|
||||
emptyDir: {}
|
||||
|
||||
- it: should not create s3proxy-tmp volume when s3proxy is disabled
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
storageBuckets:
|
||||
provider: aws
|
||||
s3proxy:
|
||||
enabled: false
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
documentIndex: 0
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- notContains:
|
||||
path: .spec.template.spec.volumes
|
||||
content:
|
||||
name: s3proxy-tmp
|
||||
emptyDir: {}
|
||||
|
||||
# Sidecar Injection Tests - Jobs Worker Component
|
||||
- it: should inject s3proxy sidecar into jobs-worker when provider is gcp
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
storageBuckets:
|
||||
provider: gcp
|
||||
s3proxy:
|
||||
enabled: true
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
documentIndex: 2
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Deployment
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: llamacloud-worker
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].name
|
||||
value: s3proxy
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].image
|
||||
value: docker.io/andrewgaul/s3proxy:sha-82e50ee
|
||||
|
||||
- it: should not inject s3proxy sidecar into jobs-worker when s3proxy is disabled
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
storageBuckets:
|
||||
provider: aws
|
||||
s3proxy:
|
||||
enabled: false
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
documentIndex: 2
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Deployment
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: llamacloud-worker
|
||||
# Should only have 1 container (the main jobs-worker container)
|
||||
- lengthEqual:
|
||||
path: .spec.template.spec.containers
|
||||
count: 1
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[0].name
|
||||
value: llamacloud-worker
|
||||
|
||||
# Sidecar Injection Tests - LlamaParse Component
|
||||
- it: should inject s3proxy sidecar into llamaparse when provider is gcp
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
storageBuckets:
|
||||
provider: gcp
|
||||
s3proxy:
|
||||
enabled: true
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
documentIndex: 3
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Deployment
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: llamacloud-parse
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].name
|
||||
value: s3proxy
|
||||
|
||||
- it: should not inject s3proxy sidecar into llamaparse when s3proxy is disabled
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
storageBuckets:
|
||||
provider: aws
|
||||
s3proxy:
|
||||
enabled: false
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
documentIndex: 3
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Deployment
|
||||
- equal:
|
||||
path: .metadata.name
|
||||
value: llamacloud-parse
|
||||
# Should only have 1 container (the main llamaparse container)
|
||||
- lengthEqual:
|
||||
path: .spec.template.spec.containers
|
||||
count: 1
|
||||
|
||||
# Sidecar Resource Configuration Tests
|
||||
- it: should use custom s3proxy image when specified
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
storageBuckets:
|
||||
provider: gcp
|
||||
s3proxy:
|
||||
enabled: true
|
||||
image: custom-registry/s3proxy:custom-tag
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
documentIndex: 0
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].image
|
||||
value: custom-registry/s3proxy:custom-tag
|
||||
|
||||
- it: should use custom s3proxy resources when specified
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
storageBuckets:
|
||||
provider: gcp
|
||||
s3proxy:
|
||||
enabled: true
|
||||
resources:
|
||||
requests:
|
||||
cpu: 250m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: "2"
|
||||
memory: 2Gi
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
documentIndex: 0
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].resources.requests.cpu
|
||||
value: 250m
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].resources.requests.memory
|
||||
value: 256Mi
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].resources.limits.cpu
|
||||
value: 2
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].resources.limits.memory
|
||||
value: 2Gi
|
||||
|
||||
- it: should use default s3proxy resources when not specified
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
storageBuckets:
|
||||
provider: gcp
|
||||
s3proxy:
|
||||
enabled: true
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
documentIndex: 0
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].resources.requests.cpu
|
||||
value: 500m
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].resources.requests.memory
|
||||
value: 512Mi
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].resources.limits.cpu
|
||||
value: 1
|
||||
- equal:
|
||||
path: .spec.template.spec.containers[1].resources.limits.memory
|
||||
value: 1Gi
|
||||
|
||||
# S3 Endpoint URL Configuration Test
|
||||
- it: should set S3_ENDPOINT_URL in urls-config configmap when s3proxy is enabled
|
||||
set:
|
||||
config.storageBuckets.provider: gcp
|
||||
config.storageBuckets.s3proxy.enabled: true
|
||||
template: ../templates/llamacloud/configmaps/urls.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: ConfigMap
|
||||
- equal:
|
||||
path: .data.S3_ENDPOINT_URL
|
||||
value: "http://localhost:8080"
|
||||
|
||||
# Multiple Components Test
|
||||
- it: should inject s3proxy sidecar into all components that use S3 when s3proxy is enabled
|
||||
set:
|
||||
config:
|
||||
frontend:
|
||||
enabled: false
|
||||
parseOcr:
|
||||
enabled: false
|
||||
parseLayoutDetection:
|
||||
enabled: false
|
||||
storageBuckets:
|
||||
provider: gcp
|
||||
s3proxy:
|
||||
enabled: true
|
||||
redis:
|
||||
host: test-redis
|
||||
port: "6379"
|
||||
password: test-pass
|
||||
postgresql:
|
||||
host: test-pg
|
||||
port: "5432"
|
||||
username: test-user
|
||||
password: test-pass
|
||||
database: test-db
|
||||
mongodb:
|
||||
host: mongodb
|
||||
username: test-mongo-user
|
||||
password: test-mongo-pass
|
||||
rabbitmq:
|
||||
host: test-rabbit
|
||||
username: test-user
|
||||
password: test-pass
|
||||
templates:
|
||||
- ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
# Backend (index 0)
|
||||
- template: ../templates/llamacloud/deployment.yaml
|
||||
documentIndex: 0
|
||||
equal:
|
||||
path: .spec.template.spec.containers[1].name
|
||||
value: s3proxy
|
||||
# Jobs Service (index 1)
|
||||
- template: ../templates/llamacloud/deployment.yaml
|
||||
documentIndex: 1
|
||||
equal:
|
||||
path: .spec.template.spec.containers[1].name
|
||||
value: s3proxy
|
||||
# Jobs Worker (index 2)
|
||||
- template: ../templates/llamacloud/deployment.yaml
|
||||
documentIndex: 2
|
||||
equal:
|
||||
path: .spec.template.spec.containers[1].name
|
||||
value: s3proxy
|
||||
# LlamaParse (index 3)
|
||||
- template: ../templates/llamacloud/deployment.yaml
|
||||
documentIndex: 3
|
||||
equal:
|
||||
path: .spec.template.spec.containers[1].name
|
||||
value: s3proxy
|
||||
@@ -0,0 +1,194 @@
|
||||
suite: temporal-search-attributes-job-tests
|
||||
templates:
|
||||
- ../templates/llamacloud/deployment.yaml
|
||||
- ../templates/llamacloud/service.yaml
|
||||
- ../templates/llamacloud/job.yaml
|
||||
- ../templates/llamacloud/configmaps/temporal.yaml
|
||||
release:
|
||||
name: llamacloud
|
||||
namespace: default
|
||||
capabilities:
|
||||
majorVersion: 1
|
||||
minorVersion: 28
|
||||
tests:
|
||||
# Test: verify NO temporal search attributes job is created when searchAttributesJob.enabled is false
|
||||
- it: should not create temporal job when searchAttributesJob.enabled is false
|
||||
set:
|
||||
temporal.deploy: false
|
||||
temporal.host: "temporal.example.com"
|
||||
temporal.port: 7233
|
||||
config.temporal.searchAttributesJob.enabled: false
|
||||
template: ../templates/llamacloud/job.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
# Test: verify job IS created when searchAttributesJob.enabled is true with external temporal
|
||||
- it: should create temporal search attributes job with external temporal
|
||||
set:
|
||||
temporal.deploy: false
|
||||
temporal.host: "temporal.example.com"
|
||||
temporal.port: 7233
|
||||
config.temporal.searchAttributesJob.enabled: true
|
||||
config.temporal.searchAttributesJob.image: "temporalio/admin-tools:latest"
|
||||
config.temporal.searchAttributesJob.attributes:
|
||||
- name: "CustomStringAttr"
|
||||
type: "Keyword"
|
||||
template: ../templates/llamacloud/job.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Job
|
||||
- equal:
|
||||
path: metadata.name
|
||||
value: llamacloud-temporal-search-attributes
|
||||
- contains:
|
||||
path: spec.template.spec.containers[0].env
|
||||
content:
|
||||
name: TEMPORAL_CLI_ADDRESS
|
||||
value: "temporal.example.com:7233"
|
||||
|
||||
# Test: verify pre-install hook when using external temporal
|
||||
- it: should use pre-install hook with external temporal
|
||||
set:
|
||||
temporal.deploy: false
|
||||
temporal.host: "temporal.example.com"
|
||||
temporal.port: 7233
|
||||
config.temporal.searchAttributesJob.enabled: true
|
||||
config.temporal.searchAttributesJob.image: "temporalio/admin-tools:latest"
|
||||
config.temporal.searchAttributesJob.attributes:
|
||||
- name: "CustomStringAttr"
|
||||
type: "Keyword"
|
||||
template: ../templates/llamacloud/job.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: metadata.annotations["helm.sh/hook"]
|
||||
value: "pre-install,pre-upgrade"
|
||||
- equal:
|
||||
path: metadata.annotations["helm.sh/hook-weight"]
|
||||
value: "5"
|
||||
|
||||
# Test: verify job uses subchart address when temporal.deploy is true
|
||||
- it: should create temporal search attributes job with subchart temporal
|
||||
set:
|
||||
temporal.deploy: true
|
||||
config.temporal.searchAttributesJob.enabled: true
|
||||
config.temporal.searchAttributesJob.image: "temporalio/admin-tools:latest"
|
||||
config.temporal.searchAttributesJob.attributes:
|
||||
- name: "Project"
|
||||
type: "Keyword"
|
||||
template: ../templates/llamacloud/job.yaml
|
||||
asserts:
|
||||
- isKind:
|
||||
of: Job
|
||||
- equal:
|
||||
path: metadata.name
|
||||
value: llamacloud-temporal-search-attributes
|
||||
- contains:
|
||||
path: spec.template.spec.containers[0].env
|
||||
content:
|
||||
name: TEMPORAL_CLI_ADDRESS
|
||||
value: "llamacloud-temporal-subchart-frontend:7233"
|
||||
|
||||
# Test: verify NO hooks when deploying temporal subchart (job runs as regular resource)
|
||||
- it: should not use hooks with subchart temporal
|
||||
set:
|
||||
temporal.deploy: true
|
||||
config.temporal.searchAttributesJob.enabled: true
|
||||
config.temporal.searchAttributesJob.image: "temporalio/admin-tools:latest"
|
||||
config.temporal.searchAttributesJob.attributes:
|
||||
- name: "Project"
|
||||
type: "Keyword"
|
||||
template: ../templates/llamacloud/job.yaml
|
||||
asserts:
|
||||
- isNull:
|
||||
path: metadata.annotations["helm.sh/hook"]
|
||||
- isNull:
|
||||
path: metadata.annotations["helm.sh/hook-weight"]
|
||||
- isNull:
|
||||
path: metadata.annotations["helm.sh/hook-delete-policy"]
|
||||
|
||||
# Test: verify job has backoffLimit set
|
||||
- it: should have backoffLimit configured
|
||||
set:
|
||||
temporal.deploy: true
|
||||
config.temporal.searchAttributesJob.enabled: true
|
||||
config.temporal.searchAttributesJob.image: "temporalio/admin-tools:latest"
|
||||
config.temporal.searchAttributesJob.attributes:
|
||||
- name: "Project"
|
||||
type: "Keyword"
|
||||
template: ../templates/llamacloud/job.yaml
|
||||
asserts:
|
||||
- equal:
|
||||
path: spec.backoffLimit
|
||||
value: 6
|
||||
|
||||
# Test: verify NO temporal resources are created when temporal.disabled is true
|
||||
- it: should not create temporal job when temporal.disabled is true
|
||||
set:
|
||||
temporal.disabled: true
|
||||
config.temporal.searchAttributesJob.enabled: true
|
||||
config.temporal.searchAttributesJob.image: "temporalio/admin-tools:latest"
|
||||
config.temporal.searchAttributesJob.attributes:
|
||||
- name: "Project"
|
||||
type: "Keyword"
|
||||
template: ../templates/llamacloud/job.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
- it: should not create temporal configmap when temporal.disabled is true
|
||||
set:
|
||||
temporal.disabled: true
|
||||
template: ../templates/llamacloud/configmaps/temporal.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
- it: should not create temporal deployments when temporal.disabled is true
|
||||
set:
|
||||
temporal.disabled: true
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 5
|
||||
|
||||
- it: should not create temporal services when temporal.disabled is true
|
||||
set:
|
||||
temporal.disabled: true
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
template: ../templates/llamacloud/service.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 5
|
||||
|
||||
# Verify that standard deployments are still created with temporal configured
|
||||
- it: should create standard deployments with external temporal
|
||||
set:
|
||||
temporal.deploy: false
|
||||
temporal.host: "temporal.example.com"
|
||||
temporal.port: 7233
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 8
|
||||
|
||||
- it: should create standard services with external temporal
|
||||
set:
|
||||
temporal.deploy: false
|
||||
temporal.host: "temporal.example.com"
|
||||
temporal.port: 7233
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
template: ../templates/llamacloud/service.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 8
|
||||
@@ -0,0 +1,59 @@
|
||||
suite: temporal-helpers-tests
|
||||
templates:
|
||||
- ../templates/llamacloud/deployment.yaml
|
||||
- ../templates/llamacloud/service.yaml
|
||||
release:
|
||||
name: llamacloud
|
||||
namespace: default
|
||||
capabilities:
|
||||
majorVersion: 1
|
||||
minorVersion: 28
|
||||
tests:
|
||||
# Test that standard deployments are created with external temporal
|
||||
- it: should create standard deployments with external temporal
|
||||
set:
|
||||
temporal.deploy: false
|
||||
temporal.host: "temporal.example.com"
|
||||
temporal.port: 7233
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 8
|
||||
|
||||
- it: should create standard deployments with subchart temporal
|
||||
set:
|
||||
temporal.deploy: true
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 8
|
||||
|
||||
- it: should create standard services with external temporal
|
||||
set:
|
||||
temporal.deploy: false
|
||||
temporal.host: "temporal.example.com"
|
||||
temporal.port: 7233
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
template: ../templates/llamacloud/service.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 8
|
||||
|
||||
- it: should create standard services with subchart temporal
|
||||
set:
|
||||
temporal.deploy: true
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
template: ../templates/llamacloud/service.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 8
|
||||
@@ -0,0 +1,37 @@
|
||||
suite: temporal-jobs-service-tests
|
||||
templates:
|
||||
- ../templates/llamacloud/deployment.yaml
|
||||
- ../templates/llamacloud/service.yaml
|
||||
release:
|
||||
name: llamacloud
|
||||
namespace: default
|
||||
capabilities:
|
||||
majorVersion: 1
|
||||
minorVersion: 28
|
||||
tests:
|
||||
# Test deployments created with external temporal
|
||||
- it: should create deployments with external temporal
|
||||
set:
|
||||
temporal.deploy: false
|
||||
temporal.host: "temporal.example.com"
|
||||
temporal.port: 7233
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 8
|
||||
|
||||
- it: should create services with external temporal
|
||||
set:
|
||||
temporal.deploy: false
|
||||
temporal.host: "temporal.example.com"
|
||||
temporal.port: 7233
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
template: ../templates/llamacloud/service.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 8
|
||||
@@ -0,0 +1,37 @@
|
||||
suite: temporal-workers-tests
|
||||
templates:
|
||||
- ../templates/llamacloud/deployment.yaml
|
||||
- ../templates/llamacloud/service.yaml
|
||||
release:
|
||||
name: llamacloud
|
||||
namespace: default
|
||||
capabilities:
|
||||
majorVersion: 1
|
||||
minorVersion: 28
|
||||
tests:
|
||||
# Test deployments with external temporal
|
||||
- it: should create deployments with external temporal
|
||||
set:
|
||||
temporal.deploy: false
|
||||
temporal.host: "temporal.example.com"
|
||||
temporal.port: 7233
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
template: ../templates/llamacloud/deployment.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 8
|
||||
|
||||
- it: should create services with external temporal
|
||||
set:
|
||||
temporal.deploy: false
|
||||
temporal.host: "temporal.example.com"
|
||||
temporal.port: 7233
|
||||
config.frontend.enabled: false
|
||||
config.parseOcr.enabled: false
|
||||
config.parseLayoutDetection.enabled: false
|
||||
template: ../templates/llamacloud/service.yaml
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 8
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user