공개 API REST .Net 5 Google Cloud Run 사용 안 함 Github e Google Cloud Build

Crie um novo projetoASP.NET Core Web API


Nomeie o projeto e coloque-o dentro da pasta raiz do repositório do Github.



.net 버전을 선택하십시오.

Aqui vale uma observação, a versão que você usar do .net vai influenciar como o arquivo dockerfile deverá ser configurado, se quiser escolher outra versão, fique à vontade, mas será necessário adaptar o dockerfile.





실행 옵션 선택webapi.



Execute o projeto, faça um GET no /weatherforecast apenas para validar que está tudo funcionando.



Program.cs가 필요하지 않은 적응형 Vamos

Program.cs



필요한 변경 사항으로서의 외관Program.cs para ficar como o do código abaixo:

using System;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

namespace webapi
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args)
        {
            var port = Environment.GetEnvironmentVariable("PORT") ?? "8080";
            var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Development";

            if (environment == "Development")
            {
                return Host.CreateDefaultBuilder(args)
                    .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
            }
            else
            {
                var url = new[]
                {
                    string.Concat("http://0.0.0.0:", port)
                };
                return Host.CreateDefaultBuilder(args)
                    .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>().UseUrls(url); });
            }
        }
    }
}


다른 코드는 중요하지 않습니다. No codigo é importante notar o bloco do other, nele estamos dizendo que quando o ambiente não for "Development"aplicação deverá subir usando o IP 0.0.0.0 , isso é necessário para que a aplicação fique visível fora do do container quado publicarmos no Cloud Run .

도커파일



Crie o Dockerfile na raiz do repositório. Verifique seu projeto também está na raiz do repositório, se não tiver, mude para a raiz.



다음은 dockerfile과 código abaixo를 연결하는 것입니다.

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env
WORKDIR /app

COPY . ./
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
COPY --from=build-env /app/out .

ENV ASPNETCORE_ENVIRONMENT Production

ENTRYPOINT ["dotnet", "webapi.dll"]


Importante alterar a última linha, o nome do arquivo .dll deve ser exatamente igual à DLL principal do seu projeto.
Se seu projeto tiver uma estrutura de pastas diferente do meu, talvez precise alterar outros pontos do dockerfile.



Salve tudo e faça commit.

GCP가 없는 Cloud Run



Se desejar, crie um projeto novo.



Pesquise por cloud run na barra de pesquisa no meio da barra do topo. Abra 또는 Cloud Run 제품. Crie um novo serviço.



새로운 프로젝트를 시작하려면 Cloud Build API를 사용하는 것이 가장 정확합니다.



셀레시오네Continuously deploy new revisions from a source repository 에 클리크엠Setup With Cluod Build


Importante: eu já tinha minha conta do Github conectada ao GCP, portanto, não consegui tirar prints dessa etapa, mas se for a primeira vez sua, você terá que vincular a sua conta do Github com o GCP.



Selecione o projeto que você quer publicar.



이전에는 Dockerfile을 선택하고 표시했습니다. No campo Branch deixe o valor padrão ^main$ para que o Cloud Build seja acionado apenas quando houver commit na branch main do seu repositório, se quiser outra branch, fique à vontade.



Preencha o Service name , eu deixei o valor padrão. Escolha uma região, para exemplo deixei a padrão.

Na opção de Autoscaling deixei a quantidade mínima de instâncias como zero, isso aumenta o tempo de resposta a um request, mas reduz custos, que no meu caso é mais importante. Se você quiser reduzir o tempo de resposta da sua aplicação deixe pelo menos 1 no mínimo e faça ajustes de acordo com a sua volumetria.

Assim como o mínimo, deixei o máximo em 1 instância, porque novamente o mais importante para mim não é performance e sim custo. Se quiser melhorar a performance avalie aumentar o limite máximo de instâncias, mas lembre-se que isso gerará custos.



Por último, é preciso select as configurações de Ingress e Authentication, para fins educativos deixei aberto para Allow all traffic e Allow unauthenticated invocations . Parações em produção thinke buscar mais informações para restringir o tráfego e as requisições sem autenticação.



선택 사항: Abra o menuContainer, Connections, Security e faça ajustes no seu container em relação à memória, timeout, requests maximos por container.

Para o deploy automático essas configurações são unrelevantes e você poderá alterá-las no futuro.

Crie seu serviço e aguarde.



Quando estiver concluído se tudo deu certo ficará como o da imagem abaixo.



URL이 공개된 GCP에서 이전 이미지로 액세스할 수 없는 쿼드로에서 엔드포인트가 없는 API 액세스 권한이 있습니다/weatherforecast.

URL: https://democsharpgcpcloudrun-lwy2plkqfa-uc.a.run.app/weatherforecast



결론



Cloud Run에서 처음으로 커밋할 수 있는 주요 저장소는 Github에서 공개할 수 있습니다.

O Cloud Run tem um recurso chamado Revisões, com ele é possível fazer rollback caso uma nova versão quebre algum aspecto da sua API.

Além de permitir que você gerencie o tráfego entre duas ou mais versões, podendo fazer deploy canário. Infelizmente, até o momento não consegui configurar um deploy canário automático, se você souber como faz, coloca nos comentário, por favor.

Obrigado por ter ficado até o fim.

좋은 웹페이지 즐겨찾기