diff --git a/.tekton/hwlab-nc01-production-pac.yaml b/.tekton/hwlab-nc01-production-pac.yaml index 628553d5..09769e12 100644 --- a/.tekton/hwlab-nc01-production-pac.yaml +++ b/.tekton/hwlab-nc01-production-pac.yaml @@ -9,7 +9,7 @@ metadata: pipelinesascode.tekton.dev/on-cel-expression: "event == 'push' && target_branch == 'release' && node == 'NC01'" pipelinesascode.tekton.dev/max-keep-runs: "8" unidesk.ai/owning-config-ref: "config/hwlab-node-lanes.yaml#lanes.production.targets.NC01" - unidesk.ai/effective-config-sha256: sha256:a71f183931dc6eb1d70d20cf1db157ba969b59853ed58917142d98dae2477fbf + unidesk.ai/effective-config-sha256: sha256:632f7e46b656465d347ef4cf21023be8e0e6f412b2a38582c3be19a2525fd325 unidesk.ai/source-artifact-renderer: hwlab-runtime-lane unidesk.ai/source-artifact-mode: remote-pipeline-annotation pipelinesascode.tekton.dev/pipeline: ci/pipelines/hwlab-nc01-production-ci-image-publish.yaml diff --git a/ci/pipelines/hwlab-nc01-production-ci-image-publish.yaml b/ci/pipelines/hwlab-nc01-production-ci-image-publish.yaml index 7e12b390..36c373bf 100644 --- a/ci/pipelines/hwlab-nc01-production-ci-image-publish.yaml +++ b/ci/pipelines/hwlab-nc01-production-ci-image-publish.yaml @@ -13,7 +13,7 @@ metadata: hwlab.pikastech.local/download-profile: jd01-node-default hwlab.pikastech.local/network-profile: jd01-node-ci-egress unidesk.ai/owning-config-ref: "config/hwlab-node-lanes.yaml#lanes.production.targets.NC01" - unidesk.ai/effective-config-sha256: sha256:a71f183931dc6eb1d70d20cf1db157ba969b59853ed58917142d98dae2477fbf + unidesk.ai/effective-config-sha256: sha256:632f7e46b656465d347ef4cf21023be8e0e6f412b2a38582c3be19a2525fd325 unidesk.ai/source-artifact-renderer: hwlab-runtime-lane unidesk.ai/source-artifact-mode: remote-pipeline-annotation spec: diff --git a/deploy/deploy.yaml b/deploy/deploy.yaml index 60c0dac6..45fc0ae7 100644 --- a/deploy/deploy.yaml +++ b/deploy/deploy.yaml @@ -998,11 +998,79 @@ lanes: serviceDeclarations: *v03ServiceDeclarations services: - serviceId: hwlab-cloud-api + shutdownDrain: + enabled: true + path: /v1/internal/workbench/drain + sleepSeconds: 3 + timeoutMs: 2500 env: HWLAB_METRICS_NAMESPACE: hwlab-production + HWLAB_CLOUD_DB_URL: secretRef:hwlab-cloud-api-production-db/database-url + HWLAB_CLOUD_DB_SSL_MODE: require + HWLAB_CLOUD_DB_CONTRACT: production-redacted-presence-only + HWLAB_ACCESS_CONTROL_REQUIRED: "1" + HWLAB_SESSION_COOKIE_SAMESITE: None + HWLAB_BOOTSTRAP_ADMIN_ID: usr_production_admin + HWLAB_BOOTSTRAP_ADMIN_USERNAME: admin + HWLAB_BOOTSTRAP_ADMIN_DISPLAY_NAME: HWLAB Production Admin + HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH: secretRef:hwlab-production-bootstrap-admin/password-hash + HWLAB_BOOTSTRAP_ADMIN_API_KEY_ID: key_master_server_admin + HWLAB_BOOTSTRAP_ADMIN_API_KEY: secretRef:hwlab-production-master-server-admin-api-key/api-key + HWLAB_USER_BILLING_URL: http://hwlab-user-billing.hwlab-production.svc.cluster.local:6670 + HWLAB_WORKBENCH_RUNTIME_URL: http://hwlab-workbench-runtime.hwlab-production.svc.cluster.local:6671 + HWLAB_PROJECT_MANAGEMENT_URL: http://hwlab-project-management.hwlab-production.svc.cluster.local:6672 + HWLAB_USER_BILLING_LOGIN_RETRY_ATTEMPTS: "2" + HWLAB_USER_BILLING_LOGIN_RETRY_DELAY_MS: "250" + HWLAB_USER_BILLING_CODE_AGENT_ENABLED: "1" + HWLAB_USER_BILLING_CODE_AGENT_ESTIMATED_CREDITS: "1" + HWLAB_USER_BILLING_CODE_AGENT_USED_CREDITS: "1" + OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces + OTEL_SERVICE_NAME: hwlab-cloud-api - serviceId: hwlab-cloud-web env: HWLAB_CLOUD_WEB_OPENCODE_UPSTREAM_URL: http://opencode-server.hwlab-production.svc.cluster.local:4096 + - serviceId: hwlab-workbench-runtime + env: + HWLAB_WORKBENCH_RUNTIME_DB_URL: secretRef:hwlab-cloud-api-production-db/database-url + HWLAB_WORKBENCH_RUNTIME_PORT: "6671" + OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces + OTEL_SERVICE_NAME: hwlab-workbench-runtime + - serviceId: hwlab-user-billing + env: + HWLAB_USER_BILLING_DB_URL: secretRef:hwlab-cloud-api-production-db/database-url + HWLAB_USER_BILLING_DB_POOL_MAX: "2" + HWLAB_USER_BILLING_MIGRATION_TIMEOUT_SECONDS: "180" + HWLAB_USER_BILLING_BOOTSTRAP_TIMEOUT_SECONDS: "60" + HWLAB_BOOTSTRAP_ADMIN_ID: usr_production_admin + HWLAB_BOOTSTRAP_ADMIN_USERNAME: admin + HWLAB_BOOTSTRAP_ADMIN_DISPLAY_NAME: HWLAB Production Admin + HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH: secretRef:hwlab-production-bootstrap-admin/password-hash + HWLAB_USER_BILLING_STATE_AUTHORITY: nc01-postgres + HWLAB_USER_BILLING_EXTERNAL_DB_LABEL: nc01-external-postgres + HWLAB_USER_BILLING_PORT: "6670" + HWLAB_USER_BILLING_REGISTRATION_ENABLED: "1" + HWLAB_USER_BILLING_INITIAL_CREDITS: "0" + HWLAB_USER_BILLING_CREDIT_PER_1K_TOKENS: "1" + HWLAB_USER_BILLING_MIGRATE_ON_START: "1" + HWLAB_USER_BILLING_REDIS_URL: redis://hwlab-user-billing-redis.hwlab-production.svc.cluster.local:6379/0 + OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces + OTEL_SERVICE_NAME: hwlab-user-billing + - serviceId: hwlab-project-management + replicas: 1 + env: + HWLAB_PROJECT_MANAGEMENT_DB_URL: secretRef:hwlab-cloud-api-production-db/database-url + HWLAB_PROJECT_MANAGEMENT_DB_CONNECT_TIMEOUT_MS: "5000" + HWLAB_PROJECT_MANAGEMENT_PORT: "6672" + HWLAB_PROJECT_MANAGEMENT_SOURCE_ROOT: /workspace/hwlab-boot/repo + HWLAB_PROJECT_MANAGEMENT_SOURCE_ID: hwlab-production-mdtodo + HWLAB_PROJECT_MANAGEMENT_SOURCE_NAME: HWLAB Production MDTODO + HWLAB_PROJECT_MANAGEMENT_PROJECT_ID: project_hwlab_production + HWLAB_PROJECT_MANAGEMENT_MDTODO_TASK_DEFAULT_LIMIT: "200" + HWLAB_PROJECT_MANAGEMENT_MDTODO_TASK_MAX_LIMIT: "500" + HWLAB_PROJECT_MANAGEMENT_HWPOD_NODE_OPS_URL: http://hwlab-cloud-api.hwlab-production.svc.cluster.local:6667/v1/hwpod-node-ops + HWLAB_PROJECT_MANAGEMENT_HWPOD_NODE_OPS_API_KEY: secretRef:hwlab-production-master-server-admin-api-key/api-key + OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces + OTEL_SERVICE_NAME: hwlab-project-management envRecipe: *v03EnvRecipe bootConfig: *v03BootConfig services: