Prehistory

At work, the challenge arose, our new application developed on the asp.net core and Angular is seriously deployed on the company's servers. There are no devops engineers and it is not foreseen, therefore, as a senior developer, I will have to master this direction as well. the team is not so big - only 4 people. In general, the problem arose at the planning stage.

Now the company uses two independent galvanically unrelated networks for the Internet and for the internal subnet. The entire infrastructure (1c, etc.) is located in the local network without access from outside. Developers on the contrary sit in the Internet segment.

Thinking about the server infrastructure for publishing and testing the project, I thought about using Docker. (The application itself will use linux as the server platform (nginx for angular, postgresql - db, api on .net core).

A slight squeeze of information.

  • Windows; Visual studio 2017 for API development; Visual studio code for Angular; GitLab on the internal Internet server;
  • The API is written using ASP.NET Core 2; Client on Angular 4; DB - postgresql;
  • Developers are in a separate network from the place of application deployment;
  • Servers with the application will be on the local network without access to the Internet;
  • ProxMox on the local network will be used as the base platform;

The structure turned out in my opinion.

The structure turned out in my opinion

Here are just a few problems (actually questions):

  • Packages NPM update (Yarn is used as a package manager) and NuGet. Adding new packages. It seems that, as for nuget and for Yarn, you can make offline mirrors, but how to keep them relevant? And is it possible to update / add packages using Git? m. Has anyone come across this?
  • Is there any sense at all from the hypervisor and virtual machines? Or is it better in this situation to deploy everything on one physical machine? Is there a plus support for virtual machines (in the future it was planned to combine several servers into a cluster and add replication with redundancy)?
  • Is it possible that I am going in the wrong direction and all my ideas and thoughts are fundamentally wrong? Will it then painfully hurt me when working with all this? :)
  • Where in general can you read about the organization of such a structure from scratch?

Perhaps someone will tell you how best to organize this whole CI / CD process. For me, this is the first experience in this direction and I want to do everything correctly (as far as possible)) because I myself have to work with the whole structure both as a developer and as devops.

  • Perhaps by the way, I chose the wrong technology stack? As an alternative to GitLab CI / CD, I considered TeamCity and Octopus Deploy. Only unfortunately I didn’t understand how to collect docker compose images and upload them to the docker registry using these tools. Also, maybe I’m not thinking about the docker as a silver bullet and it’s not suitable for my case. I'd like to hear the thoughts of smart people about this. - x666ep
  • is there a subscription to tfs or vsts? - Yuri Bezrukov
  • @Yuri Bezrukov, if I remember correctly, we have the tfs distribution kit available by Visual Studio Professional subscription - x666ep
  • If developers have access to the Internet, then it seems to me that it would be reasonable to build it on this subnet. At the output, we get a ready-made image of a docker, which we send to the subnet without the Internet. In any case, something will have to be done: source, npm / nuget packages, builds, or the docker image. For me, the latter is most convenient. In general, TFS is now a very convenient option. In 2017, local npm and nuget galleries also appeared. - B. Vandyshev
  • But you can ask how to solve their problems? and more (a little off topic), why do you write an angular in VS Code? - Anatol

0