Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Publish an infrastructure stack developer guide #610

Closed
negz opened this issue Jul 29, 2019 · 0 comments · Fixed by #815
Closed

Publish an infrastructure stack developer guide #610

negz opened this issue Jul 29, 2019 · 0 comments · Fixed by #815
Assignees
Labels
services status/discover discovering key problems to solve
Milestone

Comments

@negz
Copy link
Member

negz commented Jul 29, 2019

Make it easy for new contributors to [a] extend existing infra stacks to add support for additional managed cloud services (Kafka, Spark, Hadoop), and [b] create new infra stacks for additional cloud providers (Alibaba Cloud, Tencent, Digital Ocean).

Part of the 0.3 release

Why? What problem are we solving?

A Stack is a set of CRDs and controllers that extend Crossplane. An infrastructure stack adds support for infrastructure (e.g. databases, VMs, etc), as opposed to adding support for an application (e.g. Wordpress, GitLab). Crossplane's existing managed resource functionality could be broken up into GCP, Azure, and AWS infrastructure stacks.

We hope that breaking Crossplane's infrastructure managed functionality up into stacks will make it easier for the community to write and maintain their own infrastructure stacks. Crossplane will likely provide some guide rails in the form of libraries and interfaces with which to write controllers, but we believe this would be best supplemented by great documentation.

What does it look like when we're done?

  • We have published an end-to-end guide to writing an infrastructure stack to https://crossplane.io/.
  • Our guide assumes familiarity with Kubernetes and Go, but not kubebuilder. It prefers linking to kubebuilder documentation over re-documenting it.
  • Our guide covers at least:
    • Why write an infrastructure stack?
    • Crossplane concepts and terminology including managed resource, resource class, default resource classes, resource claim, external resource, etc.
    • Any patterns any opinions Crossplane recommends on top of the existing kubebuilder documentation, for example fields required by all Crossplane CRDs, and recommended Reconciler scaffolds such as the resource claim, managed resource, and default resource class reconciler libraries.
    • How to build and package infrastructure stacks.

How could this be demonstrated?

  1. Crossplane user reads the blog post describing this new functionality
  2. Click through to the updated user guide
  3. Try out the updated example(s)

For example:
Scenario 1: add new infra controller to existing infra stack in the crossplaneio org (TBD)
e.g.

  • raise issue & get community feedback
  • create CRD
  • create controller
  • submit PR, what we look for in new controller

Scenario 2: create new infra stack for unsupported cloud (TBD)
e.g.

Related

  • Crossplane Glossary & Concepts (see Overall 0.3 docs #625 features as well, should be the same)
  • Enable users to extend existing infra stacks by adding a new controllers & CRDs
    • TBD, @negz
    • controller patterns - docs, how reconcilers are designed
    • stack experience, registry, publishing, contents of infra stack, installed to control plane, upgrades
  • Enable partners to add their own infra stack & CRDs
  • Advanced controller concept, patterns, tech deep dive: incorporate Illya's reconciler patterns
  • Short blog post to blog.crossplane.io about this new functionality! #TBD
@negz negz added the epic label Jul 29, 2019
@negz negz changed the title Publish and infrastructure stack developer guide Publish an infrastructure stack developer guide Jul 29, 2019
@prasek prasek mentioned this issue Jul 31, 2019
1 task
@prasek prasek added this to the v0.3 milestone Jul 31, 2019
@prasek prasek assigned negz and prasek and unassigned prasek Jul 31, 2019
@infinitecompute infinitecompute added the status/discover discovering key problems to solve label Aug 27, 2019
@prasek prasek added the p0 label Sep 12, 2019
@negz negz mentioned this issue Sep 18, 2019
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
services status/discover discovering key problems to solve
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants