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

Cluster must haves #9

Closed
danielepolencic opened this issue Nov 15, 2019 · 4 comments
Closed

Cluster must haves #9

danielepolencic opened this issue Nov 15, 2019 · 4 comments

Comments

@danielepolencic
Copy link
Contributor

danielepolencic commented Nov 15, 2019

@ipedrazas has just presented at Cloud Native Wales and he has a "must-have" list which looks quite interesting.

image

image

We might need to borrow a few items.

Slides

@weibeld
Copy link
Collaborator

weibeld commented Nov 16, 2019

We're actually already covering many of them in our TODO, but I added those that were missing.

Here are some questions that I still have about some of the items:

  • Upgrade story: what does it mean?
  • Shared storage: what kind of storage?
  • Docker registry/Helm registry: self-hosting in the cluster?
  • Service to dependencies <- own the DNS: running your own DNS servers?

weibeld added a commit that referenced this issue Nov 16, 2019
@ipedrazas
Copy link

Let see if I can bring some light to these questions :) Usually, I describe them a bit in my talks, so, I understand that in isolation are a bit less useful.

  • Upgrade story: Define how you're going to upgrade your clusters and define the risks. This can be something from "using the upgrade functionality in GKE" to "rolling out a new bare-metal cluster and moving the workloads to it". The importance here is to define what do you do, how do you do it and what can go wrong (and what do you do to minimise disruption).

  • shared storage, or Storage: what kind of storage your cluster offers (ephemeral, block storage, S3-like) and what are the limitations of it. It's not enough with defining this PVC or that PV, the key here is to put on the table the rules that manage storage so everybody consuming these APIs understands the risks and the operability of the storage.

  • Docker registry: This part was a bit more of calling out a dependency. People need to understand the limitations (and advantages) of using docker hub, or quay or artifactory or... etc. There are different strategies to deal with different use cases. It's ok putting Docker registry: quay but you have to understand what would happen if for any reason quay is not available.

  • Service to Dependencies: this is an anti-pattern that I've been using for years now. An application that has dependencies (a database, for example) does not consume a service deployed by another app/team, it creates its own service to that dependency. This guarantees that the application controls the DNS to that dependency. Service can be of any kubernetes service type. That's not the important bit, the important part is to explicitly define all the objects, and resources that define an application.

@danielepolencic
Copy link
Contributor Author

Thanks for this Ivan!

@weibeld
Copy link
Collaborator

weibeld commented Nov 16, 2019

@ipedrazas thanks a lot for the clarifications!

@weibeld weibeld closed this as completed Nov 20, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants