davidstauffer / upbound

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Crossplane configuration for "EKS as a Service"

This repository contains the definition for a Crossplane configuration that bundles a set of API definitions. This configuration is a starting point for new users who are creating their first control plane in Upbound.

When this configuration is installed on a control plane, the control plane will have APIs to provision fully configured Amazon Elastic Kubernetes Service (EKS) clusters with secure networking, composed using cloud service primitives from the Upbound Official AWS Provider. App deployments can securely connect to the infrastructure they need using secrets distributed directly to the app namespace.

What's Inside

A custom API in Crossplane is defined by:

  • a CompositeResourceDefinition (XRD). This defines the schema or shape of the API.
  • A Composition(s). Compositions implement the schema by composing a set of Crossplane managed resources together.

For this configuration, the EKS API is defined by:

  • a KubernetesCluster type
  • the KubernetesCluster is composed of an XNetwork and XEKS types.
  • the XNetwork is composed of a the following resources: a VPC, InternetGateway, 4 Subnets, a RouteTable, Routes, 5 RouteTableAssociations, a SecurityGroup, and 2 security group role.
  • the XEKS is composed of the following resources: Cluster, a NodeGroup, an OpenIDConnectProvider, 2 Roles, 4 RolePolicyAttachments, and ClusterAuth.

This repository also contains an example claim. You can apply this file on your control plane to invoke the EKS API and cause a cluster to be created.

Next Steps

This repository is a starting point. You should be feel encouraged to:

  1. create new API definitions in this same repo
  2. tweak the existing API definition for EKS to your needs

Upbound will automatically detect the commits you make in your repo and build the configuration package for you. To learn more about how to build APIs for your managed control planes in Upbound, read the guide on Upbound's docs.

About