Site de comércio eletrônico da OpenElemetria: Deplantação DevOps com Terraform, CI/CD, Kubernetes e AWS

Table of Contents Project Overview Prerequisites Phase 1: Local Development Setup Phase 2: AWS Account Setup Phase 3: Infrastructure as Code with Terraform Phase 4: Container Orchestration with Kubernetes Phase 5: Domain Setup with Route53 Phase 6: Monitoring and Observability Troubleshooting Project Overview This project demonstrates a complete DevOps implementation using the OpenTelemetry Astronomy Shop, a microservice-based e-commerce application. The project showcases: Multi-language microservices architecture (Go, Java, Python, C#, TypeScript, Ruby, PHP, Rust, Elixir) Complete DevOps pipeline from local development to production deployment Infrastructure as Code using Terraform Container orchestration with Kubernetes on AWS EKS Observability with OpenTelemetry, Jaeger, and Grafana Cloud-native deployment on AWS Architecture Overview O aplicativo consiste em 14+ microsserviços: Frontend: TypeScript/Next.JS Interface da Web Catálogo de produtos: GO Gerenciamento de serviços Serviço de carrinho de informações: C# Manuseio de serviço Operações de carrinho de compras Serviço de pagamento: Node.js Serviço de serviço Service Service Service Service Service Service Service Service Service Service Service Service SERVIÇO PRODUTO DO SERVIÇO PRODUTO DO PRODUTO DO SERVIÇO NOTUÇÃO Serviço de moeda: Serviço C ++ para conversão de moeda Serviço de cotação: Serviço PHP Gerating Quotes Gerador de carga: Serviço Python Simulando o tráfego do usuário Serviço de sinalizador de recursos: Fornecimento Pré-requisitos da funcionalidade do sinalizador de recursos: Certifique-se de que você tem o seguinte Fools. Interface da linha de comando AWS KUBECTL: Kubernetes Ferramenta de linha de linha de comando Terraforma: Infraestrutura como ferramenta de código (versão 1.0+) Editor de texto: vs Código com extensões recomendadas: Terraform YAML Docker Kubernetes Sistema Sistema Sistema RAM: Minimum 8 GB, Recomendado 16 GB armazenamento: Acesso de espaço ou pelo menos 20 GBOM SPACEFE CLONE O REPOSITION DE REPOSITION OCLONE O repositório de demonstração Opentelemetria para a sua máquina local: clone git Opentelemetry-Demo Etapa 1.2: Entenda o projeto do projeto segue esta estrutura: Opentelemetria-Demo/ ├— ├─ Stc/ │ ├ ├vio contábil/. checkout/ # vá serviços de checkout│ ├── moeda/ # c ++ serviço de moeda ├── email/ # serviço de email ruby ├── frontend/ # tipatcript frontend│ ├── pagamento/ # node.js Serviço de pagamento ├ ├— Serviço de produto… manifestos├── docker-compose.yml # configuração local de desenvolvimento└── readme.md Etapa 1.3: Execute o aplicativo Localmente a pilha de aplicativos usando o docker compor: ` # Inicie todos os serviços com imagens pré-construídas 1. Em vez de preencher o built para puxar o premagers-build para uso de imagens de uso do built. Pontos de extremidade Uma vez que os contêineres estão em execução: Web Store: Sinalizadores UI: Gerador: Etapa 1.5: Compreendendo o docker compor arquitetura Docker Compose Setup Inclui: Serviços: Contabilidade: Imagem: $ {image_name}: $ {Demo_version} -AccorrenctionEnvir:- Kafka_Addr-OTEL_EXTER_EXTERS} KafkaFrontend: Image: $ {image_name}: $ {Demo_version} -Frontendports:- “8080: 8080” Ambiente:- Frontend_addr- ad_service_addr- Cart_service_addrkey Componentes: Serviços: cada um dos runos de MicrosSermum em seus próprios storages em seus próprios storages. Variáveis: Gerenciamento de configuração Fase 2: Configuração da conta da AWS Etapa 2.1: Crie a AWS AccountStep 2.2: Crie o usuário do IAM para segurança, crie um usuário do IAM em vez de usar a conta raiz: navegue para o serviço IAM no AWS Consolecreate User (Username: Username: Administrator-UserAccess Type: Programatic Acesso + AWS Management Console Acesso de Anexe Policies Policies Credenciais: Acesso Chave IdSecret KeysAve o arquivo CSV Etapa 2.3: Configure o AWS Cliinstall e configure a AWS CLI: AWS Configure a AWS Access ID: [Your Access Key]Chave de acesso secreto da AWS: [Your Secret Key]Nome da região padrão: Formato de saída US-WEST-2DeFault: JSON AWS STS GET-CALler-Identity Saída esperada: {“UserID”: “AIDACKCEVSQ6C2Example”, “Conta”: “123456789772”, “ARN”: “ARN: AWS: IAM :: 1234577772”, Em param um par de chaves para acesso EC2: AWS EC2 Create-ke-ke-ke-key-Name devOps-key-Key-‘keymaterial’-texto de saída> DevOps-key.PEM CHMOD 400 DevOps-key.PEM Fase 3: Infraestrutura como Código com Terraformstep 3.1: Entendendo o Projeto Terranell: main.tf # Configuração principal├ – Variáveis.tf # Variáveis de entrada ├── Outputs.TF # Valores de saída├─— Back -end/ # Configuração do estado remoto│ ├── Main.tf│ └─— saída. EKS/ # EKS Módulo├── Main.tf├── Variables.tf└─— Saída.TF Etapa 3.2: Configure o Terraform backendcreate o balde S3 e a tabela DynamoDB para o estado remoto: Cd Eks-Install/ Backendterraform Interterra Planterrafform Aplicar 3.3: Configure TerraformupDato = StringDefault = “US-WEST-2”} variável “cluster_name” {description = “EKS Cluster Name” type = stringDefault = “Opentelemetry-Demo-cluster”} variável “vpc_cidr” {description = “Cidr Block para VPC” Type = StringDefault = “10.0.0.0.0.0.16” zonas “type = list (string) default = [“us-west-2a”, “us-west-2b”, “us-west-2c”]} variável “private_subnet_cidrs” {description = “blocos cidr para sub -redes privadas” type = list (string) default = [“10.0.1.0/24”, “10.0.2.0/24”, “10.0.3.0/24”]} variável “public_subnet_cidrs” {description = “Blocos Cidr para sub -redes públicas” TIPO = LIST (string) padrão = [“10.0.101.0/24”, “10.0.102.0/24”, “10.0.103.0/24”]} Etapa 3.4: Implante EKS InfrastructureCd ..TerRaform InitterRaform ValdateTeRaform Plan -Out = TfPlanterraform Aplicação TFPlanthis Cria: VPC com sub -redes públicas e privadas MiniMTENT Gateway e Gatewayseks de Gatewayseks de Gateways e Gateways e Gateways e Gateways e Gatewayseks Gateways e Gateways e Gateways Trexos e Tampas de Receburas de Securidade e Securidade Dernta e Receitos de Securidade Derrasta EKS-ReGion US-West-2 Update-kubeconfig-Nome Opentelemetry-Demo-clusterkubectl Get Sodeskubectl Cluster-Info Saída Esperada: Funções de Status do Nome Idade Versionip-10-0-1-123.us-West-2.compute.Internal Ready 5m V1.28.0iP-10-2-4-46..compute.internal 5m V1.28.28.28.0IP-10-2-4-46..compute.internal 5m V1.28.28. v1.28.0IP-10-0-3-789.US-WEST-2.COMPUTE.INTERNAL PRONTO 5M V1.28.0 FASE 4: Orquestração de contêineres com Kubernesstep 4.1: Compreendendo o Kubernetes IMPLOMENTMENTMEMENTMETMETMETMENTEMENTO DE PREVENÇÃO: APIVERS: APPS/V1KINDS: IMPLOMENTMETMETMETMET Manifest Manifest Manifest Manifest Manifest: opentelemetry-demo-frontendspec:replicas: 1selector:matchLabels:app.kubernetes.io/name: opentelemetry-demo-frontendtemplate:metadata:labels:app.kubernetes.io/name: opentelemetry-demo-frontendspec:serviceAccountName: opentelemetry-democontainers:- Nome: FrontendImage: ghcr.io/open-telemetry/demo:latest-frontendports:- containerport: 8080env:-nome: frontend_addrvalue: “: 8080”-nome: ad_service_addrvalue: “opetelemetry-demo-adSetice: 8080” “2 “2 “2 “2080” 2080 “, nomes: nomesning: nomern somet: skinesking: skinesking: skinesking: skinesing: skinesing: skinesing: skinesing. Opentelemetril -Demokubectl Aplicar -f kubernetes/serviceAccount.yaml -n opentelemetria -Demokubectl Aplicar -f kubernetes/complete -deplay.yaml -Npentelemetria -Demokubectl Get -NENENENT -Demetr -setes opentelemetry-demo Step 4.3: Set Up Ingress ControllerInstall AWS Load Balancer Controller:kubectl apply -k “github.com/aws/eks-charts/stable/aws-load-balancer-controller//crds?ref=master” aws iam create-policy \–policy-name AWSLoadBalancerControllerIAMPolicy \–policy-document Arquivo: //iam_policy.json ekSctl Crie ImsServiceAccount \-cluster = Opentelemetry-Demo-cluster \-namespace = Kube-System \-Nome = AWS-Cargo-Balancer-Controller \-Role-Name = AmazonOneks \-Anexe-policy-ANN = ARN: AWS: IAM :: Your-Contant-Id: Policy/AwsloadBalancerControllerIampolicy \-Aprovar a Etapa 4.4: Configure o aplicativo IngressCreate A IngressMetTada: Networking.k8s.io/v1kind: IngressMetadATATATATATA: NETWORKING.K8S.IO/V1Kind: IngressMetATATATATA: Opentelemetril-Demoannotações: alb.ingress.kubernetes.io/scheme: internet-bacingalb.ingress.kubernetes.io/target-type: IPSpec: IngressClassName: Albrules: host: your-dom.com HTTP: Paths: Pathty: Pathty: Prefix: prefix: prefix: prefix: seu domain.com HTTP: Paths: Pathty: Pathty: opentelemetry-demo-frontendproxy port: number: 8080 Apply the ingress:kubectl apply -f ingress.yaml Step 4.5: Verify Deploymentkubectl get all -n opentelemetry-demokubectl get ingress -n opentelemetry-demokubectl logs -l app.kubernetes.io/name=opentelemetry-demo-frontend -n Opentelemetria-democorreção Fase 5: Configuração do domínio com rota53Step 5.1: Registrar domínio (opcional) Opções: Registre-se na rota aws 53 Use um domainuse existente o nome do Balancero de carga do nome do nome do nome do nome do nome do nome do nome do nome do nome 5.2. A zona hospedada Update Your Domain Registrar para usar os servidores da rota53 Etapa 5.4: Crie DNS Recordskubectl Get Ingresse Opentelemetria-Demo-ingress -n Opentelemetry-Demo -o JsonPath = “{. Status.loadBalancer.ingressão[0].HostName} “AWS ROOTE53 Mudança-resgate-recordes \-Host-Zone-Id ZXXXXXXXXXXXXX \-Arquivo Change-Batch: //dns-record.json exemplo dns-record.json: {” alterações: “: [{“Action”: “CREATE”,”ResourceRecordSet”: {“Name”: “opentelemetry-demo.your-domain.com”,”Type”: “CNAME”,”TTL”: 300,”ResourceRecords”: [{“Value”: “k8s-opentel-opentel-xxxxxxxxx-yyyyyyyyyy.us-west-2.elb.amazonaws.com”}]}}]} Solução de problemas de problemas e soluções de resolução 1: eks nós não prontos kubectl descreva nó node_name Edição 2: pods no estado pendente Opentelemetril-Demo-ingresso -n Opentelemetria—Democomeação 4: Terraform ISSUESTERRAFORMAFORMAFORMAFORMAFORMAFORMA AWS_INSTANCE.Exemplo I-1234567890ABCDEF0 Debugging CommandSkubectl Get All –All-NamesKECTIMATIMASTIMESTESTESTETSTYSTYSTYSTYSKUBECTL GET –All-NameSKECTIMATIMATIMATIMAT-BY = .METRATSKUGETL Pod_name -n Opentelemetry -Demokubectl Exec -it Pod_Name -n Opetelemetry -Demo – /bin /Bashkubectl Os principais modos de nodeskubectl principais -Noteselemetria -Democlição Conclusão Este projeto demonstra uma implementação completa do DevOps usando as modernas tecnologias nativas em nuvem. Implantei um aplicativo de microsserviços complexos configurar localmente a infraestrutura AWS usando contêineres orquestrados de Terraform com Kubernetes em EKs implementados de monitoramento e observabilidade configurados com DNS e o balanceamento de carga dessas habilidades são diretamente aplicáveis com cenários de cd-devim e fortalecerá o desempenho da entrevista. HPA e cluster AutocalingOptimize Custos com solicitações/limites de recursos e spot Instancesset Up Desastres Procedimentos de recuperação de desastres Esta documentação serve como um guia completo para a construção e implantação da loja de astronomia Opentelemetria usando práticas modernas de DevOps. Para perguntas ou melhorias, consulte a documentação oficial da OpenElemetria e os guias de práticas recomendadas da AWS.

Fonte

Publicar comentário

Você pode ter perdido