chapter four

4 Multi-Cloud infrastructure

 

This chapter covers:

  • Define and manage the infrastructure required by your applications
  • The challenges of managing your own application infrastructure components
  • The Kubernetes way to deal with infrastructure (Crossplane)

In the previous chapters, we installed a walking skeleton, we understood how to build each separate component using Service Pipelines and how to deploy them into different environments using Environment pipelines. We are now faced with a big challenge: dealing with infrastructure, meaning creating environments where our applications will run. It is normal and expected that these applications require other components to be there to work correctly, such as Databases, Message Brokers, Identity Management solutions, Email Servers, etc. While there are several tools out there focused on how to automate the installation or provisioning of these components for On-Premises setups and in different cloud providers, in this chapter, we will focus on just one that does it in a Kubernetes way. This chapter is divided into three main sections:

  • The challenges of dealing with infrastructure
  • How to deal with infrastructure leveraging Kubernetes constructs
  • How to provision infrastructure for our walking skeleton using Crossplane.io

After covering these sections we will talk about building platforms on top of Kubernetes, a challenge that sooner or later will come knocking on your door.

4.1 The challenges of managing with Infrastructure in Kubernetes

4.1.1 Managing your own Application Infrastructure

4.1.2 Different approaches to install and monitor Application Infrastructure components

4.2 Defining Infrastructure in a declarative way using Crossplane

4.2.1 Crossplane Providers

4.2.2 Crossplane Compositions

4.2.3 Crossplane Components and Requirements

4.2.4 Crossplane Behaviours

4.2.5 Crossplane Configuration Packages

4.3 Real Infrastructure for our walking skeleton

4.3.1 Provisioning our Application Infrastructure

4.3.2 Connecting our services with the new provisioned infrastructure

4.4 Building Cloud-Native platforms on top of Kubernetes

4.4.1 Creating our own Crossplane Configuration Package

4.4.2 Building and distributing our Configuration Package

4.4.3 Extending Crossplane with our custom Providers

4.5 Summary