diff --git a/conf/docker/.env.setup b/conf/docker/.env.setup index a78d536..3a40c7e 100644 --- a/conf/docker/.env.setup +++ b/conf/docker/.env.setup @@ -176,81 +176,81 @@ MC_APPLICATION_MANAGER_PROXY_PORT=18084 MC_APPLICATION_MANAGER_PUBLIC_HOST=https://${MC_IAM_MANAGER_PUBLIC_DOMAIN}:${MC_APPLICATION_MANAGER_PROXY_PORT} # MC-COST-OPTIMIZER -CO_COST_DB_NAME=cost -CO_SLACK_DB_NAME=slack_test -CO_MAIL_DB_NAME=mailing - -CO_MYSQL_ROOT_PASSWORD=0000 -CO_MYSQL_USER=mcmpcostopti -CO_MYSQL_PASSWORD=0000 -CO_OPENBAO_ENABLED=true -CO_OPENBAO_ADDRESS=http://mc-infra-manager-openbao:${MC_INFRA_MANAGER_OPENBAO_PORT} -CO_OPENBAO_TOKEN=${MC_INFRA_MANAGER_OPENBAO_VAULT_TOKEN} - -CO_COST_DB_URL_NEW=jdbc:mysql://mc-cost-optimizer-db:3306/${CO_COST_DB_NAME}?autoReconnect=true&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true -CO_COST_DB_URL=jdbc:mariadb://mc-cost-optimizer-db:3306/${CO_COST_DB_NAME}?autoReconnect=true&allowMultiQueries=true&useSSL=false&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&characterEncoding=UTF-8 -CO_SLACK_DB_URL=jdbc:mariadb://mc-cost-optimizer-db:3306/${CO_SLACK_DB_NAME}?autoReconnect=true&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8 -CO_MAIL_DB_URL=jdbc:mariadb://mc-cost-optimizer-db:3306/${CO_MAIL_DB_NAME}?autoReconnect=true&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8 - -CO_COST_ASSET_COLLECTOR_URL=http://mc-cost-optimizer-asset-collector:8091 -CO_COST_COLLECTOR_URL=http://mc-cost-optimizer-cost-collector:8081 -CO_COST_PROCESSOR_URL=http://mc-cost-optimizer-cost-processor:8082 - -CO_COST_GCP_COLLECTOR_URL=http://mc-cost-optimizer-cost-gcp-collector:8095 -CO_GCP_PROJECT_ID=gcp-projectid -CO_GCP_CLIENT_EMAIL=gcp-clientemail -CO_GCP_PRIVATE_KEY_ID=gcp-privatekeyid -CO_GCP_PRIVATE_KEY=gcp-privatekey -CO_GCP_BQ_DATASET=gcp-datasetname -CO_GCP_BQ_TABLE=gcp-bigguerytable -CO_GCP_BATCH_CRON_SCHEDULE=0 0 8 * * ? +MC_COST_OPTIMIZER_COST_DB_NAME=cost +MC_COST_OPTIMIZER_SLACK_DB_NAME=slack_test +MC_COST_OPTIMIZER_MAIL_DB_NAME=mailing + +MC_COST_OPTIMIZER_MYSQL_ROOT_PASSWORD=0000 +MC_COST_OPTIMIZER_MYSQL_USER=mcmpcostopti +MC_COST_OPTIMIZER_MYSQL_PASSWORD=0000 +MC_COST_OPTIMIZER_OPENBAO_ENABLED=true +MC_COST_OPTIMIZER_OPENBAO_ADDRESS=http://mc-infra-manager-openbao:${MC_INFRA_MANAGER_OPENBAO_PORT} +MC_COST_OPTIMIZER_OPENBAO_TOKEN=${MC_INFRA_MANAGER_OPENBAO_VAULT_TOKEN} + +MC_COST_OPTIMIZER_COST_DB_URL_NEW=jdbc:mysql://mc-cost-optimizer-db:3306/${MC_COST_OPTIMIZER_COST_DB_NAME}?autoReconnect=true&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true +MC_COST_OPTIMIZER_COST_DB_URL=jdbc:mariadb://mc-cost-optimizer-db:3306/${MC_COST_OPTIMIZER_COST_DB_NAME}?autoReconnect=true&allowMultiQueries=true&useSSL=false&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&characterEncoding=UTF-8 +MC_COST_OPTIMIZER_SLACK_DB_URL=jdbc:mariadb://mc-cost-optimizer-db:3306/${MC_COST_OPTIMIZER_SLACK_DB_NAME}?autoReconnect=true&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8 +MC_COST_OPTIMIZER_MAIL_DB_URL=jdbc:mariadb://mc-cost-optimizer-db:3306/${MC_COST_OPTIMIZER_MAIL_DB_NAME}?autoReconnect=true&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8 + +MC_COST_OPTIMIZER_COST_ASSET_COLLECTOR_URL=http://mc-cost-optimizer-asset-collector:8091 +MC_COST_OPTIMIZER_COST_COLLECTOR_URL=http://mc-cost-optimizer-cost-collector:8081 +MC_COST_OPTIMIZER_COST_PROCESSOR_URL=http://mc-cost-optimizer-cost-processor:8082 + +MC_COST_OPTIMIZER_COST_GCP_COLLECTOR_URL=http://mc-cost-optimizer-cost-gcp-collector:8095 +MC_COST_OPTIMIZER_GCP_PROJECT_ID=gcp-projectid +MC_COST_OPTIMIZER_GCP_CLIENT_EMAIL=gcp-clientemail +MC_COST_OPTIMIZER_GCP_PRIVATE_KEY_ID=gcp-privatekeyid +MC_COST_OPTIMIZER_GCP_PRIVATE_KEY=gcp-privatekey +MC_COST_OPTIMIZER_GCP_BQ_DATASET=gcp-datasetname +MC_COST_OPTIMIZER_GCP_BQ_TABLE=gcp-bigguerytable +MC_COST_OPTIMIZER_GCP_BATCH_CRON_SCHEDULE=0 0 8 * * ? ## Cost Collector -CO_COST_COLLECT_UNUSED_CRON_SCHEDULE=0 30 0,6 * * ? -CO_COST_COLLECT_CUR_CRON_SCHEDULE=0 0 0,6 * * ? -CO_AWS_CUR_EXPORT_NAME=mcmp-costopti -CO_AWS_CUR_EXPORT_PATH_PREFIX=mcmp-costopti -CO_AWS_ACCESS_KEY_ID=aws-accesskey -CO_AWS_SECRET_ACCESS_KEY=aws-secretaccesskey +MC_COST_OPTIMIZER_COST_COLLECT_UNUSED_CRON_SCHEDULE=0 30 0,6 * * ? +MC_COST_OPTIMIZER_COST_COLLECT_CUR_CRON_SCHEDULE=0 0 0,6 * * ? +MC_COST_OPTIMIZER_AWS_CUR_EXPORT_NAME=mcmp-costopti +MC_COST_OPTIMIZER_AWS_CUR_EXPORT_PATH_PREFIX=mcmp-costopti +MC_COST_OPTIMIZER_AWS_ACCESS_KEY_ID=aws-accesskey +MC_COST_OPTIMIZER_AWS_SECRET_ACCESS_KEY=aws-secretaccesskey ## Cost Processor -CO_COST_PROCESS_UNUSED_CRON_SCHEDULE=0 45 * * * ? -CO_COST_PROCESS_ABNORMAL_CRON_SCHEDULE=0 0 1,7 * * ? -CO_COST_SELECTOR_URL=http://mc-cost-optimizer-cost-selector:8083 -CO_ALARM_URL=http://mc-cost-optimizer-alarm-service:9000 +MC_COST_OPTIMIZER_COST_PROCESS_UNUSED_CRON_SCHEDULE=0 45 * * * ? +MC_COST_OPTIMIZER_COST_PROCESS_ABNORMAL_CRON_SCHEDULE=0 0 1,7 * * ? +MC_COST_OPTIMIZER_COST_SELECTOR_URL=http://mc-cost-optimizer-cost-selector:8083 +MC_COST_OPTIMIZER_ALARM_URL=http://mc-cost-optimizer-alarm-service:9000 ## Asset Controller -CO_API_URL=http://mc-cost-optimizer-be:9090 -CO_ASSET_MONITORING_SERVER=http://mc-observability-manager:18080 -CO_ASSET_COLLECT_BATCH_CRON_SCHEDULE=0 10 * * * ? +MC_COST_OPTIMIZER_API_URL=http://mc-cost-optimizer-be:9090 +MC_COST_OPTIMIZER_ASSET_MONITORING_SERVER=http://mc-observability-manager:18080 +MC_COST_OPTIMIZER_ASSET_COLLECT_BATCH_CRON_SCHEDULE=0 10 * * * ? ## Cost-Azure-Collector -CO_COST_AZURE_COLLECTOR_URL=http://mc-cost-optimizer-cost-azure-collector:8093 -CO_AZURE_TENANT_ID=azure-tenantid -CO_AZURE_CLIENT_ID=azure-clientid -CO_AZURE_CLIENT_SECRET=azure-clientsecret -CO_AZURE_SUBSCRIPTION_ID=azure-subscriptionid -CO_AZURE_SERVICE_BATCH_CRON_SCHEDULE=0 0 0 * * ? -CO_AZURE_VM_BATCH_CRON_SCHEDULE=0 10 0 * * ? -CO_AZURE_VM_RIGHTSIZER_SCHEDULE=0 20 0 * * ? +MC_COST_OPTIMIZER_COST_AZURE_COLLECTOR_URL=http://mc-cost-optimizer-cost-azure-collector:8093 +MC_COST_OPTIMIZER_AZURE_TENANT_ID=azure-tenantid +MC_COST_OPTIMIZER_AZURE_CLIENT_ID=azure-clientid +MC_COST_OPTIMIZER_AZURE_CLIENT_SECRET=azure-clientsecret +MC_COST_OPTIMIZER_AZURE_SUBSCRIPTION_ID=azure-subscriptionid +MC_COST_OPTIMIZER_AZURE_SERVICE_BATCH_CRON_SCHEDULE=0 0 0 * * ? +MC_COST_OPTIMIZER_AZURE_VM_BATCH_CRON_SCHEDULE=0 10 0 * * ? +MC_COST_OPTIMIZER_AZURE_VM_RIGHTSIZER_SCHEDULE=0 20 0 * * ? ## Cost-NCP-Collector -CO_COST_NCP_COLLECTOR_URL=http://mc-cost-optimizer-cost-ncp-collector:8094 -CO_NCP_IAM_ACCESS_KEY=ncp-iamaccesskey -CO_NCP_IAM_SECRET_KEY=ncp-iamsecretkey -CO_NCP_SERVICE_BATCH_CRON_SCHEDULE=0 0 0 * * ? -CO_NCP_VM_BATCH_CRON_SCHEDULE=0 10 0 * * ? -CO_NCP_VM_RIGHTSIZER_SCHEDULE=0 20 0 * * ? +MC_COST_OPTIMIZER_COST_NCP_COLLECTOR_URL=http://mc-cost-optimizer-cost-ncp-collector:8094 +MC_COST_OPTIMIZER_NCP_IAM_ACCESS_KEY=ncp-iamaccesskey +MC_COST_OPTIMIZER_NCP_IAM_SECRET_KEY=ncp-iamsecretkey +MC_COST_OPTIMIZER_NCP_SERVICE_BATCH_CRON_SCHEDULE=0 0 0 * * ? +MC_COST_OPTIMIZER_NCP_VM_BATCH_CRON_SCHEDULE=0 10 0 * * ? +MC_COST_OPTIMIZER_NCP_VM_RIGHTSIZER_SCHEDULE=0 20 0 * * ? ## Cost-ML-Scorer (rightsizing score API, reads cost.asset_compute_metric) -CO_ML_SCORER_URL=http://mc-cost-optimizer-ml-scorer:8096 -CO_ML_SCORER_WINDOW_DAYS=30 -CO_LLM_KEY_MASTER= +MC_COST_OPTIMIZER_ML_SCORER_URL=http://mc-cost-optimizer-ml-scorer:8096 +MC_COST_OPTIMIZER_ML_SCORER_WINDOW_DAYS=30 +MC_COST_OPTIMIZER_LLM_KEY_MASTER= #Tumblebug -CO_TBB_URL=http://mc-infra-manager:1323/tumblebug -CO_TBB_USERNAME=default -CO_TBB_PW=default +MC_COST_OPTIMIZER_TBB_URL=http://mc-infra-manager:1323/tumblebug +MC_COST_OPTIMIZER_TBB_USERNAME=default +MC_COST_OPTIMIZER_TBB_PW=default # MC-APPLICATION-MANAGER MC_APPLICATION_MANAGER_POSTGRES_DB=appmgr diff --git a/conf/docker/conf/mc-cost-optimizer/init/01_init_cost_db_ddl.sql b/conf/docker/conf/mc-cost-optimizer/init/01_init_cost_db_ddl.sql index e3e6b2a..7d54bbd 100644 --- a/conf/docker/conf/mc-cost-optimizer/init/01_init_cost_db_ddl.sql +++ b/conf/docker/conf/mc-cost-optimizer/init/01_init_cost_db_ddl.sql @@ -430,3 +430,15 @@ CREATE TABLE IF NOT EXISTS `provider_keys` ( PRIMARY KEY (`id`), UNIQUE KEY `uq_ns_provider` (`ns_id`, `provider`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci COMMENT='LLM 프로바이더 API 키 (AES-256-GCM 암호화 저장)'; + +-- cost.recommendation_history definition (LLM 추천 이력 - source DDL엔 있으나 deploy 복사본에서 누락되어 추가) +CREATE TABLE IF NOT EXISTS `recommendation_history` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `ns_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL, + `instance_id` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL, + `recommendation` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci DEFAULT NULL, + `response_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci, + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `idx_ns` (`ns_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; diff --git a/conf/docker/docker-compose.yaml b/conf/docker/docker-compose.yaml index e4d26fa..3403cdd 100644 --- a/conf/docker/docker-compose.yaml +++ b/conf/docker/docker-compose.yaml @@ -399,7 +399,7 @@ services: mc-cost-optimizer-fe: restart: unless-stopped container_name: mc-cost-optimizer-fe - image: cloudbaristaorg/mc-costopti-ui:0.5.5 + image: cloudbaristaorg/mc-costopti-ui:0.5.6 networks: - mc-cost-optimizer-network - mc-observability-network @@ -416,7 +416,7 @@ services: mc-cost-optimizer-be: restart: on-failure container_name: mc-cost-optimizer-be - image: cloudbaristaorg/mc-costopti-api:0.5.5 + image: cloudbaristaorg/mc-costopti-api:0.5.6 networks: - mc-cost-optimizer-network - mc-observability-network @@ -430,16 +430,16 @@ services: spring.datasource.hikari.cost.optimize.jdbc-url: ${MC_COST_OPTIMIZER_COST_DB_URL_NEW} spring.datasource.hikari.cost.optimize.username: ${MC_COST_OPTIMIZER_MYSQL_USER} spring.datasource.hikari.cost.optimize.password: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} - tumblebug.url: ${CO_TBB_URL} - tumblebug.username: ${CO_TBB_USERNAME:-default} - tumblebug.password: ${CO_TBB_PW:-default} + tumblebug.url: ${MC_COST_OPTIMIZER_TBB_URL} + tumblebug.username: ${MC_COST_OPTIMIZER_TBB_USERNAME:-default} + tumblebug.password: ${MC_COST_OPTIMIZER_TBB_PW:-default} costopti.alarmservice.url: ${MC_COST_OPTIMIZER_ALARM_URL} costopti.assetcollector.url: ${MC_COST_OPTIMIZER_COST_ASSET_COLLECTOR_URL} costopti.costcollector.url: ${MC_COST_OPTIMIZER_COST_COLLECTOR_URL} costopti.costprocessor.url: ${MC_COST_OPTIMIZER_COST_PROCESSOR_URL} costopti.costselector.url: ${MC_COST_OPTIMIZER_COST_SELECTOR_URL} - ml.rightsize.base-url: ${CO_ML_SCORER_URL} - llm.key.master: ${CO_LLM_KEY_MASTER} + ml.rightsize.base-url: ${MC_COST_OPTIMIZER_ML_SCORER_URL} + llm.key.master: ${MC_COST_OPTIMIZER_LLM_KEY_MASTER} healthcheck: test: [ "CMD", "/app/tool/mcc", "rest", "get", "http://localhost:9090/api/costopti/be/readyz" ] <<: *default-health-check @@ -447,7 +447,7 @@ services: mc-cost-optimizer-cost-collector: restart: on-failure container_name: mc-cost-optimizer-cost-collector - image: cloudbaristaorg/mc-costopti-costcollector:0.5.5 + image: cloudbaristaorg/mc-costopti-costcollector:0.5.6 networks: - mc-cost-optimizer-network - mc-observability-network @@ -466,9 +466,9 @@ services: spring.datasource.hikari.batch.username: ${MC_COST_OPTIMIZER_MYSQL_USER} spring.datasource.hikari.batch.password: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} - OPENBAO_ENABLED: ${CO_OPENBAO_ENABLED} - OPENBAO_ADDRESS: ${CO_OPENBAO_ADDRESS} - OPENBAO_TOKEN: ${CO_OPENBAO_TOKEN} + OPENBAO_ENABLED: ${MC_COST_OPTIMIZER_OPENBAO_ENABLED} + OPENBAO_ADDRESS: ${MC_COST_OPTIMIZER_OPENBAO_ADDRESS} + OPENBAO_TOKEN: ${MC_COST_OPTIMIZER_OPENBAO_TOKEN} unusedBatchCronSchedule: ${MC_COST_OPTIMIZER_COST_COLLECT_UNUSED_CRON_SCHEDULE} curBatchCronSchedule: ${MC_COST_OPTIMIZER_COST_COLLECT_CUR_CRON_SCHEDULE} @@ -480,7 +480,7 @@ services: mc-cost-optimizer-cost-processor: restart: on-failure container_name: mc-cost-optimizer-cost-processor - image: cloudbaristaorg/mc-costopti-costprocessor:0.5.5 + image: cloudbaristaorg/mc-costopti-costprocessor:0.5.6 networks: - mc-cost-optimizer-network - mc-observability-network @@ -506,7 +506,7 @@ services: mc-cost-optimizer-cost-selector: restart: on-failure container_name: mc-cost-optimizer-cost-selector - image: cloudbaristaorg/mc-costopti-costselector:0.5.5 + image: cloudbaristaorg/mc-costopti-costselector:0.5.6 networks: - mc-cost-optimizer-network - mc-observability-network @@ -525,14 +525,14 @@ services: spring.datasource.hikari.cost.optimize.username: ${MC_COST_OPTIMIZER_MYSQL_USER} spring.datasource.hikari.cost.optimize.password: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} opti.alarm.url: ${MC_COST_OPTIMIZER_ALARM_URL} - tumblebug.url: ${CO_TBB_URL} - tumblebug.username: ${CO_TBB_USERNAME} - tumblebug.password: ${CO_TBB_PW} + tumblebug.url: ${MC_COST_OPTIMIZER_TBB_URL} + tumblebug.username: ${MC_COST_OPTIMIZER_TBB_USERNAME} + tumblebug.password: ${MC_COST_OPTIMIZER_TBB_PW} mc-cost-optimizer-alarm-service: restart: on-failure container_name: mc-cost-optimizer-alarm-service - image: cloudbaristaorg/mc-costopti-alarm:0.5.5 + image: cloudbaristaorg/mc-costopti-alarm:0.5.6 networks: - mc-cost-optimizer-network - mc-observability-network @@ -556,7 +556,7 @@ services: mc-cost-optimizer-asset-collector: restart: on-failure container_name: mc-cost-optimizer-asset-collector - image: cloudbaristaorg/mc-costopti-assetcollector:0.5.5 + image: cloudbaristaorg/mc-costopti-assetcollector:0.5.6 networks: - mc-cost-optimizer-network - mc-observability-network @@ -581,7 +581,7 @@ services: mc-cost-optimizer-cost-azure-collector: restart: on-failure container_name: mc-cost-optimizer-cost-azure-collector - image: cloudbaristaorg/mc-costopti-azure-collector:0.5.5 + image: cloudbaristaorg/mc-costopti-azure-collector:0.5.6 networks: - mc-cost-optimizer-network - mc-observability-network @@ -600,9 +600,9 @@ services: SPRING_DATASOURCE_USERNAME: ${MC_COST_OPTIMIZER_MYSQL_USER} SPRING_DATASOURCE_PASSWORD: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} - OPENBAO_ENABLED: ${CO_OPENBAO_ENABLED} - OPENBAO_ADDRESS: ${CO_OPENBAO_ADDRESS} - OPENBAO_TOKEN: ${CO_OPENBAO_TOKEN} + OPENBAO_ENABLED: ${MC_COST_OPTIMIZER_OPENBAO_ENABLED} + OPENBAO_ADDRESS: ${MC_COST_OPTIMIZER_OPENBAO_ADDRESS} + OPENBAO_TOKEN: ${MC_COST_OPTIMIZER_OPENBAO_TOKEN} AZURE_CREDENTIAL_TENANT_ID: ${MC_COST_OPTIMIZER_AZURE_TENANT_ID} AZURE_CREDENTIAL_CLIENT_ID: ${MC_COST_OPTIMIZER_AZURE_CLIENT_ID} @@ -621,7 +621,7 @@ services: mc-cost-optimizer-gcp-collector: restart: on-failure container_name: mc-cost-optimizer-gcp-collector - image: cloudbaristaorg/mc-costopti-gcpcollector:0.5.5 + image: cloudbaristaorg/mc-costopti-gcpcollector:0.5.6 networks: - mc-cost-optimizer-network - mc-observability-network @@ -629,7 +629,7 @@ services: - mc-web-console-network ports: - target: 8095 - published: ${CO_GCP_COLLECTOR_PORT} + published: ${MC_COST_OPTIMIZER_GCP_COLLECTOR_PORT} protocol: tcp depends_on: - mc-cost-optimizer-db @@ -641,27 +641,27 @@ services: spring.datasource.username: ${MC_COST_OPTIMIZER_MYSQL_USER} spring.datasource.password: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} - gcp.project-id: ${CO_GCP_PROJECT_ID} - gcp.client-email: ${CO_GCP_CLIENT_EMAIL} - gcp.private-key: ${CO_GCP_PRIVATE_KEY} - gcp.private-key-id: ${CO_GCP_PRIVATE_KEY_ID} - gcp.dataset: ${CO_GCP_BQ_DATASET} - gcp.table: ${CO_GCP_BQ_TABLE} - gcpBillingCronSchedule: ${CO_GCP_BATCH_CRON_SCHEDULE} + gcp.project-id: ${MC_COST_OPTIMIZER_GCP_PROJECT_ID} + gcp.client-email: ${MC_COST_OPTIMIZER_GCP_CLIENT_EMAIL} + gcp.private-key: ${MC_COST_OPTIMIZER_GCP_PRIVATE_KEY} + gcp.private-key-id: ${MC_COST_OPTIMIZER_GCP_PRIVATE_KEY_ID} + gcp.dataset: ${MC_COST_OPTIMIZER_GCP_BQ_DATASET} + gcp.table: ${MC_COST_OPTIMIZER_GCP_BQ_TABLE} + gcpBillingCronSchedule: ${MC_COST_OPTIMIZER_GCP_BATCH_CRON_SCHEDULE} costopti.alarmservice.url: ${MC_COST_OPTIMIZER_ALARM_URL} - OPENBAO_ENABLED: ${CO_OPENBAO_ENABLED} - OPENBAO_ADDRESS: ${CO_OPENBAO_ADDRESS} - OPENBAO_TOKEN: ${CO_OPENBAO_TOKEN} + OPENBAO_ENABLED: ${MC_COST_OPTIMIZER_OPENBAO_ENABLED} + OPENBAO_ADDRESS: ${MC_COST_OPTIMIZER_OPENBAO_ADDRESS} + OPENBAO_TOKEN: ${MC_COST_OPTIMIZER_OPENBAO_TOKEN} - tumblebug.url: ${CO_TBB_URL} - tumblebug.username: ${CO_TBB_USERNAME} - tumblebug.password: ${CO_TBB_PW} + tumblebug.url: ${MC_COST_OPTIMIZER_TBB_URL} + tumblebug.username: ${MC_COST_OPTIMIZER_TBB_USERNAME} + tumblebug.password: ${MC_COST_OPTIMIZER_TBB_PW} mc-cost-optimizer-cost-ncp-collector: restart: on-failure container_name: mc-cost-optimizer-cost-ncp-collector - image: cloudbaristaorg/mc-costopti-ncp-collector:0.5.5 + image: cloudbaristaorg/mc-costopti-ncp-collector:0.5.6 networks: - mc-cost-optimizer-network - mc-observability-network @@ -680,9 +680,9 @@ services: SPRING_DATASOURCE_USERNAME: ${MC_COST_OPTIMIZER_MYSQL_USER} SPRING_DATASOURCE_PASSWORD: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} - OPENBAO_ENABLED: ${CO_OPENBAO_ENABLED} - OPENBAO_ADDRESS: ${CO_OPENBAO_ADDRESS} - OPENBAO_TOKEN: ${CO_OPENBAO_TOKEN} + OPENBAO_ENABLED: ${MC_COST_OPTIMIZER_OPENBAO_ENABLED} + OPENBAO_ADDRESS: ${MC_COST_OPTIMIZER_OPENBAO_ADDRESS} + OPENBAO_TOKEN: ${MC_COST_OPTIMIZER_OPENBAO_TOKEN} NCP_CREDENTIAL_IAM_ACCESS_KEY: ${MC_COST_OPTIMIZER_NCP_IAM_ACCESS_KEY} NCP_CREDENTIAL_IAM_SECRET_KEY: ${MC_COST_OPTIMIZER_NCP_IAM_SECRET_KEY} @@ -702,7 +702,7 @@ services: mc-cost-optimizer-azure-vm-rightsizer: restart: on-failure container_name: mc-cost-optimizer-azure-vm-rightsizer - image: cloudbaristaorg/mc-costopti-azure-vm-rightsizer:0.5.5 + image: cloudbaristaorg/mc-costopti-azure-vm-rightsizer:0.5.6 networks: - mc-cost-optimizer-network - mc-observability-network @@ -721,9 +721,9 @@ services: SPRING_DATASOURCE_USERNAME: ${MC_COST_OPTIMIZER_MYSQL_USER} SPRING_DATASOURCE_PASSWORD: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} - OPENBAO_ENABLED: ${CO_OPENBAO_ENABLED} - OPENBAO_ADDRESS: ${CO_OPENBAO_ADDRESS} - OPENBAO_TOKEN: ${CO_OPENBAO_TOKEN} + OPENBAO_ENABLED: ${MC_COST_OPTIMIZER_OPENBAO_ENABLED} + OPENBAO_ADDRESS: ${MC_COST_OPTIMIZER_OPENBAO_ADDRESS} + OPENBAO_TOKEN: ${MC_COST_OPTIMIZER_OPENBAO_TOKEN} AZURE_CREDENTIAL_TENANT_ID: ${MC_COST_OPTIMIZER_AZURE_TENANT_ID} AZURE_CREDENTIAL_CLIENT_ID: ${MC_COST_OPTIMIZER_AZURE_CLIENT_ID} @@ -742,7 +742,7 @@ services: mc-cost-optimizer-ncp-vm-rightsizer: restart: on-failure container_name: mc-cost-optimizer-ncp-vm-rightsizer - image: cloudbaristaorg/mc-costopti-ncp-vm-rightsizer:0.5.5 + image: cloudbaristaorg/mc-costopti-ncp-vm-rightsizer:0.5.6 networks: - mc-cost-optimizer-network - mc-observability-network @@ -761,9 +761,9 @@ services: SPRING_DATASOURCE_USERNAME: ${MC_COST_OPTIMIZER_MYSQL_USER} SPRING_DATASOURCE_PASSWORD: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} - OPENBAO_ENABLED: ${CO_OPENBAO_ENABLED} - OPENBAO_ADDRESS: ${CO_OPENBAO_ADDRESS} - OPENBAO_TOKEN: ${CO_OPENBAO_TOKEN} + OPENBAO_ENABLED: ${MC_COST_OPTIMIZER_OPENBAO_ENABLED} + OPENBAO_ADDRESS: ${MC_COST_OPTIMIZER_OPENBAO_ADDRESS} + OPENBAO_TOKEN: ${MC_COST_OPTIMIZER_OPENBAO_TOKEN} NCP_CREDENTIAL_IAM_ACCESS_KEY: ${MC_COST_OPTIMIZER_NCP_IAM_ACCESS_KEY} NCP_CREDENTIAL_IAM_SECRET_KEY: ${MC_COST_OPTIMIZER_NCP_IAM_SECRET_KEY} @@ -775,14 +775,14 @@ services: COSTOPTI_COSTCOLLECTOR_URL: ${MC_COST_OPTIMIZER_COST_COLLECTOR_URL} COSTOPTI_COSTPROCESSOR_URL: ${MC_COST_OPTIMIZER_COST_PROCESSOR_URL} COSTOPTI_COSTSELECTOR_URL: ${MC_COST_OPTIMIZER_COST_SELECTOR_URL} - tumblebug.url: ${CO_TBB_URL} - tumblebug.username: ${CO_TBB_USERNAME} - tumblebug.password: ${CO_TBB_PW} + tumblebug.url: ${MC_COST_OPTIMIZER_TBB_URL} + tumblebug.username: ${MC_COST_OPTIMIZER_TBB_USERNAME} + tumblebug.password: ${MC_COST_OPTIMIZER_TBB_PW} mc-cost-optimizer-ml-scorer: restart: on-failure container_name: mc-cost-optimizer-ml-scorer - image: cloudbaristaorg/mc-costopti-ml-scorer:0.5.5 + image: cloudbaristaorg/mc-costopti-ml-scorer:0.5.6 networks: - mc-cost-optimizer-network - mc-observability-network @@ -790,7 +790,7 @@ services: - mc-web-console-network ports: - target: 8096 - published: ${CO_ML_SCORER_PORT} + published: ${MC_COST_OPTIMIZER_ML_SCORER_PORT} protocol: tcp depends_on: - mc-cost-optimizer-db @@ -801,7 +801,7 @@ services: COST_DB_USERNM: ${MC_COST_OPTIMIZER_MYSQL_USER} COST_DB_PW: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} SERVER_PORT: 8096 - WINDOW_DAYS: ${CO_ML_SCORER_WINDOW_DAYS:-30} + WINDOW_DAYS: ${MC_COST_OPTIMIZER_ML_SCORER_WINDOW_DAYS:-30} healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8096/health')"] <<: *default-health-check