diff --git a/.github/workflows/manual-develoment.yml b/.github/workflows/manual-develoment.yml deleted file mode 100644 index 37d8b85..0000000 --- a/.github/workflows/manual-develoment.yml +++ /dev/null @@ -1,119 +0,0 @@ -name: Manual AKS Deployment - -on: - workflow_dispatch: - inputs: - environment: - description: 'Environment to deploy to' - required: true - default: 'preprod' - type: choice - options: - - preprod - - prod - - feature/* - image_tag: - description: 'Docker image tag to deploy' - required: true - type: string - - -env: - REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }}/am-document-processor - HELM_CHART_PATH: ./helm/am-document-processor - -jobs: - deploy: - name: Deploy to AKS - runs-on: ubuntu-latest - permissions: - contents: read - id-token: write - - steps: - # Checkout repository - # Checkout repository at the specified ref - - name: Checkout repository - uses: actions/checkout@v4 - - # Set environment-specific variables - - name: Set environment variables - id: set-vars - run: | - # Set environment-specific variables - if [[ "${{ github.event.inputs.environment }}" == "prod" ]]; then - echo "RESOURCE_GROUP=am-investing" >> $GITHUB_ENV - echo "CLUSTER_NAME=am-np-west" >> $GITHUB_ENV - echo "NAMESPACE=dev" >> $GITHUB_ENV - echo "Deploying to PRODUCTION environment" - elif [[ "${{ github.event.inputs.environment }}" == "feature" ]]; then - echo "RESOURCE_GROUP=am-investing" >> $GITHUB_ENV - echo "CLUSTER_NAME=am-np-west" >> $GITHUB_ENV - echo "NAMESPACE=dev" >> $GITHUB_ENV - echo "Deploying to FEATURE environment" - else - echo "RESOURCE_GROUP=am-investing" >> $GITHUB_ENV - echo "CLUSTER_NAME=am-np-west" >> $GITHUB_ENV - echo "NAMESPACE=dev" >> $GITHUB_ENV - echo "Deploying to PRE-PRODUCTION environment" - fi - - # Set image tag from input - echo "IMAGE_TAG=${{ github.event.inputs.image_tag }}" >> $GITHUB_ENV - - # Login to Azure - - name: Login to Azure - uses: azure/login@v1 - with: - creds: ${{ secrets.AZURE_CREDENTIALS }} - - # Set AKS context - - name: Set AKS context - uses: azure/aks-set-context@v3 - with: - resource-group: ${{ env.RESOURCE_GROUP }} - cluster-name: ${{ env.CLUSTER_NAME }} - - # Setup Helm - - name: Setup Helm - uses: azure/setup-helm@v3 - with: - version: 'v3.12.3' - - # Deploy to AKS using Helm - - name: Deploy to AKS - run: | - # Create namespace if it doesn't exist - kubectl create namespace ${{ env.NAMESPACE }} --dry-run=client -o yaml | kubectl apply -f - - - echo "Deploying image: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}" - echo "Environment: ${{ github.event.inputs.environment }}" - echo "Resource Group: ${{ env.RESOURCE_GROUP }}" - echo "Cluster: ${{ env.CLUSTER_NAME }}" - echo "Namespace: ${{ env.NAMESPACE }}" - - # Set values file based on environment - if [[ "${{ github.event.inputs.environment }}" == "feature" ]]; then - # For feature branches, use preprod values as base - VALUES_FILE="${{ env.HELM_CHART_PATH }}/values/preprod.yaml" - else - # For standard environments, use the corresponding values file - VALUES_FILE="${{ env.HELM_CHART_PATH }}/values/${{ github.event.inputs.environment }}.yaml" - fi - - # Deploy using Helm with the appropriate values file - helm upgrade --install am-document-processor ${{ env.HELM_CHART_PATH }} \ - --namespace ${{ env.NAMESPACE }} \ - -f $VALUES_FILE \ - --set image.repository=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} \ - --set image.tag=${{ env.IMAGE_TAG }} \ - --set deployment.version="${{ env.IMAGE_TAG }}" \ - --wait --timeout 5m - - # Verify deployment - - name: Verify deployment - run: | - kubectl rollout status deployment/am-document-processor -n ${{ env.NAMESPACE }} - echo "Deployment to ${{ github.event.inputs.environment }} completed successfully!" - echo "Deployment to ${{ github.event.inputs.environment }} completed successfully!" diff --git a/helm/am-document-processor/templates/deployment.yaml b/helm/am-document-processor/templates/deployment.yaml index e9a64ce..6b36c63 100644 --- a/helm/am-document-processor/templates/deployment.yaml +++ b/helm/am-document-processor/templates/deployment.yaml @@ -29,8 +29,20 @@ spec: vault.hashicorp.com/agent-inject-secret-kafka: "kv/preprod/kafka" vault.hashicorp.com/agent-inject-template-kafka: | {{`{{- with secret "kv/preprod/kafka" -}} - export KAFKA_BOOTSTRAP_SERVERS="{{ .Data.data.bootstrapServers }}" - export KAFKA_CONSUMER_GROUP_ID="{{ .Data.data.consumerGroupId }}" + KAFKA_BOOTSTRAP_SERVERS="{{ .Data.data.kafkabootstrapserver }}" + KAFKA_SECURITY_PROTOCOL="{{ .Data.data.securityprotocol }}" + KAFKA_SASL_MECHANISM="{{ .Data.data.sslmechanism }}" + KAFKA_SASL_JAAS_CONFIG="{{ .Data.data.sasljaasconfig }}" + KAFKA_ZOOKEEPER_CONNECT="{{ .Data.data.zookeeperconnect }}" + KAFKA_CONSUMER_GROUP_ID="{{ .Data.data.consumerGroupId }}" + KAFKA_CONSUMER_AUTO_OFFSET_RESET="{{ .Data.data.autooffsetreset }}" + {{- end -}}`}} + + vault.hashicorp.com/agent-inject-secret-mongodb: "kv/preprod/database/mongo" + vault.hashicorp.com/agent-inject-template-mongodb: | + {{`{{- with secret "kv/preprod/database/mongo" -}} + MONGODB_DATABASE="{{ .Data.data.portfoliodatabase }}" + MONGODB_URI= {{ .Data.data.uri }}/{{ .Data.data.portfoliodatabase }}?authSource={{ .Data.data.authsource }} {{- end -}}`}} {{- with .Values.podAnnotations }} {{- toYaml . | nindent 8 }} diff --git a/pom.xml b/pom.xml index 3868c01..9ea3fb0 100644 --- a/pom.xml +++ b/pom.xml @@ -32,9 +32,9 @@ 3.4.1 - 1.2.8-SNAPSHOT - 1.2.8-SNAPSHOT - 1.2.8-SNAPSHOT + 1.2.9-SNAPSHOT + 1.2.9-SNAPSHOT + 1.2.9-SNAPSHOT 12.8.1.jre11 @@ -120,11 +120,11 @@ org.springframework.boot spring-boot-starter-data-mongodb - + org.postgresql postgresql diff --git a/src/main/java/org/am/mypotrfolio/DocumentProcessingApplication.java b/src/main/java/org/am/mypotrfolio/DocumentProcessingApplication.java index 24c6b2d..a3a5805 100644 --- a/src/main/java/org/am/mypotrfolio/DocumentProcessingApplication.java +++ b/src/main/java/org/am/mypotrfolio/DocumentProcessingApplication.java @@ -5,6 +5,7 @@ import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScans; +import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; import lombok.extern.slf4j.Slf4j; @@ -16,6 +17,7 @@ @ComponentScan("org.am.mypotrfolio.service.mapper"), @ComponentScan("com.am.common.amcommondata.mapper") }) +@EnableMongoRepositories(basePackages = "com.am.common.amcommondata.repository") public class DocumentProcessingApplication { public static void main(String[] args) { diff --git a/src/main/java/org/am/mypotrfolio/config/MongoConfig.java b/src/main/java/org/am/mypotrfolio/config/MongoConfig.java deleted file mode 100644 index 0f06cf3..0000000 --- a/src/main/java/org/am/mypotrfolio/config/MongoConfig.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.am.mypotrfolio.config; - -import org.am.mypotrfolio.config.properties.PersistenceProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; -import org.springframework.lang.NonNull; - -import com.mongodb.client.MongoClient; -import com.mongodb.client.MongoClients; - -import lombok.RequiredArgsConstructor; - -@Configuration -@EnableMongoRepositories(basePackages = "com.am.common.amcommondata.repository.*") -@RequiredArgsConstructor -public class MongoConfig extends AbstractMongoClientConfiguration { - - private final PersistenceProperties persistenceProperties; - - @Override - @NonNull - protected String getDatabaseName() { - return persistenceProperties.getMongodb().getDatabase(); - } - - @Override - @Bean - @NonNull - public MongoClient mongoClient() { - return MongoClients.create(persistenceProperties.getMongodb().getUri()); - } - - @Bean - public MongoTemplate mongoTemplate() { - return new MongoTemplate(mongoClient(), getDatabaseName()); - } -} \ No newline at end of file diff --git a/src/main/java/org/am/mypotrfolio/config/properties/PersistenceProperties.java b/src/main/java/org/am/mypotrfolio/config/properties/PersistenceProperties.java deleted file mode 100644 index 04dd96d..0000000 --- a/src/main/java/org/am/mypotrfolio/config/properties/PersistenceProperties.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.am.mypotrfolio.config.properties; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -import lombok.Data; - -@Data -@Configuration -@ConfigurationProperties(prefix = "app.persistence") -public class PersistenceProperties { - private MongoProperties mongodb; - - @Data - public static class MongoProperties { - private String uri; - private String database; - } -} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 2f035bb..d431599 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,3 +1,9 @@ +# Kafka Configuration +KAFKA_BOOTSTRAP_SERVERS: kafka.dev.svc.cluster.local:9092 +KAFKA_SECURITY_PROTOCOL: SASL_PLAINTEXT +KAFKA_SASL_MECHANISM: PLAIN +KAFKA_SASL_JAAS_CONFIG: org.apache.kafka.common.security.plain.PlainLoginModule required username="kafkaUser" password="kafkaPassword123!"; + server: port: 8080 spring: @@ -24,26 +30,24 @@ spring: hibernate: format_sql: true kafka: - bootstrap-servers: kafka.dev.svc.cluster.local:9092 + bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS} properties: - security.protocol: SASL_PLAINTEXT - sasl.mechanism: PLAIN - sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="kafkaUser" password="kafkaPassword123!"; + security.protocol: ${KAFKA_SECURITY_PROTOCOL} + sasl.mechanism: ${KAFKA_SASL_MECHANISM} + sasl.jaas.config: ${KAFKA_SASL_JAAS_CONFIG} consumer: group-id: document-processor auto-offset-reset: earliest data: mongodb: + uri: mongodb://ssd2658:ssd2658@mongodb.dev.svc.cluster.local:27017/portfolio?authSource=admin + database: portfolio auto-index-creation: true app: kafka: portfolio-topic: am-portfolio trade-topic: am-trade - persistence: - mongodb: - uri: mongodb://admin:password@mongodb.dev.svc.cluster.local:27017/nse_security?authSource=admin - database: nse_security logging: level: @@ -53,4 +57,35 @@ logging: org.hibernate: INFO org.hibernate.SQL: INFO '[org.hibernate.type.descriptor.sql.BasicBinder]': TRACE - '[org.springframework.data.mongodb.core.MongoTemplate]': DEBUG \ No newline at end of file + '[org.springframework.data.mongodb.core.MongoTemplate]': DEBUG + + + +# Management/Actuator Configuration +management: + endpoints: + web: + exposure: + include: health,info,metrics,prometheus + endpoint: + health: + probes: + enabled: true + show-details: always + validate-group-membership: false + group: + readiness: + include: diskSpace,mongodb,redis,kafka + liveness: + include: diskSpace,mongodb,redis,kafka + health: + livenessstate: + enabled: true + readinessstate: + enabled: true + mongo: + enabled: true + redis: + enabled: true + kafka: + enabled: true \ No newline at end of file