dotnet-architecture / eShopOnContainers

Cross-platform .NET sample microservices and container based application that runs on Linux Windows and macOS. Powered by .NET 7, Docker Containers and Azure Kubernetes Services. Supports Visual Studio, VS for Mac and CLI based environments with Docker CLI, dotnet CLI, VS Code or any other code editor. Moved to https://github.com/dotnet/eShop.

Home Page:https://dot.net/architecture

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

How to deploy all Microservices Docker images to Azure Container Registry using Azure Devops Pipeline

menuconz opened this issue · comments

I want to deploy all Microservices Docker images to Azure Container Registry (ACR) or Azure Kubernetes Service (AKS) using Azure Devops Pipeline.

All the services should be able to talk to each other on production environment. Also Db's should be accessible from services in Production environment.

Is there any proper documentation to achieve this task?

I am able to deploy all Microservices Docker images into Azure Container Registry (ACR) using Azure Devops Pipeline and deploying all the services into Azure Kubernetes Services (AKS)

Now, Envoy is unable to call the other services. I am deploying the Envoy into AKS but unable to call the services through Envoy.

Do we need a specific type for this service?
Do we need any specific setting in Envoy.yaml?

Dockerfile to build and start Envoy

FROM envoyproxy/envoy:v1.11.1
COPY "ApiGateways/Envoy/config/webshopping/envoy.yaml" "/etc/envoy.yaml"
CMD /usr/local/bin/envoy -c /etc/envoy.yaml
EXPOSE 80

Envoy.yaml file code

`admin:
access_log_path: "/dev/null"
address:
socket_address:
address: 0.0.0.0
port_value: 8001
static_resources:
listeners:

  • address:
    socket_address:
    address: 0.0.0.0
    port_value: 80
    filter_chains:

    • filters:
      • name: envoy.http_connection_manager
        config:
        codec_type: auto
        stat_prefix: ingress_http
        route_config:
        name: mypharmas_eshop_backend_route
        virtual_hosts:
        - name: mypharmas_eshop_backend
        domains:
        - "*"
        routes:
        - name: "c-short"
        match:
        prefix: "/c/"
        route:
        auto_host_rewrite: true
        prefix_rewrite: "/catalog-api/"
        cluster: catalog
        - name: "c-long"
        match:
        prefix: "/catalog-api/"
        route:
        auto_host_rewrite: true
        cluster: catalog

          - name: "i-short"
            match:
              prefix: "/i/"
            route:
              auto_host_rewrite: true
              prefix_rewrite: "/identity-api/"
              cluster: identity
          - name: "i-long"
            match:
              prefix: "/identity-api/"
            route:
              auto_host_rewrite: true
              cluster: identity
        
        
          - name: "o-short"
            match:
              prefix: "/o/"
            route:
              auto_host_rewrite: true
              prefix_rewrite: "/ordering-api/"
              cluster: ordering
          - name: "o-long"
            match:
              prefix: "/ordering-api/"
            route:
              auto_host_rewrite: true
              cluster: ordering
          - name: "b-short"
            match:
              prefix: "/b/"
            route:
              auto_host_rewrite: true
              prefix_rewrite: "/basket-api/"
              cluster: basket
          - name: "b-long"
            match:
              prefix: "/basket-api/"
            route:
              auto_host_rewrite: true
              cluster: basket
          - name: "agg"
            match:
              prefix: "/"
            route:
              auto_host_rewrite: true
              prefix_rewrite: "/"
              cluster: shoppingagg
        

        http_filters:

        • name: envoy.router
          access_log:
        • name: envoy.file_access_log
          filter:
          not_health_check_filter: {}
          config:
          json_format:
          time: "%START_TIME%"
          protocol: "%PROTOCOL%"
          duration: "%DURATION%"
          request_method: "%REQ(:METHOD)%"
          request_host: "%REQ(HOST)%"
          path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%"
          response_flags: "%RESPONSE_FLAGS%"
          route_name: "%ROUTE_NAME%"
          upstream_host: "%UPSTREAM_HOST%"
          upstream_cluster: "%UPSTREAM_CLUSTER%"
          upstream_local_address: "%UPSTREAM_LOCAL_ADDRESS%"
          path: "/tmp/access.log"
          clusters:
  • name: shoppingagg
    connect_timeout: 1.25s
    type: strict_dns
    lb_policy: round_robin
    hosts:

    • socket_address:
      address: webshoppingagg
      port_value: 80
  • name: catalog
    connect_timeout: 1.25s
    type: strict_dns
    lb_policy: round_robin
    hosts:

    • socket_address:
      address: catalog-api
      port_value: 80
  • name: identity
    connect_timeout: 1.25s
    type: strict_dns
    lb_policy: round_robin
    hosts:

    • socket_address:
      address: identity-api
      port_value: 80
  • name: basket
    connect_timeout: 5.25s
    type: strict_dns
    lb_policy: round_robin
    hosts:

    • socket_address:
      address: basket-api
      port_value: 80
  • name: ordering
    connect_timeout: 1.25s
    type: strict_dns
    lb_policy: round_robin
    hosts:

    • socket_address:
      address: ordering-api
      port_value: 80
      `