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

Cheat Sheet #20

Open
osterman opened this issue May 8, 2018 · 11 comments
Open

Cheat Sheet #20

osterman opened this issue May 8, 2018 · 11 comments
Assignees
Labels
customer documentation question Further information is requested

Comments

@osterman
Copy link
Member

osterman commented May 8, 2018

what

  • Document a cheat sheet for things like where we are storing secrets and how to change them, how to scale up and down or tweak auto-scaling, where our dashboards are, what the various repos you created are for

(requested by @Nuru from PopChest)

@Nuru
Copy link
Sponsor Contributor

Nuru commented May 8, 2018

What software are we using for devops and what licenses are they licensed under? This list will be required for a future buyer for sure and possibly for future investors. If there is anything licensed under AGPL, how can we replace it with something with a more favorable license?

How would we bring up a new cluster in another region? What existing files/repos would we clone or modify?

@osterman
Copy link
Member Author

osterman commented May 8, 2018

As far as I know, nothing is AGPL. I know this is a toxic license. We try to use mostly APACHE2 or MIT licensed software. Everything Cloud Posse develops is APACHE2, with one exception wp-quip is GNU (due to wordpress requirements).

This is a good question though. We should make sure to call out the software licensing on all tools in the solution.

@osterman osterman self-assigned this May 8, 2018
@osterman osterman added this to Ready to Implement in Open Source Community Support via automation May 8, 2018
@Nuru
Copy link
Sponsor Contributor

Nuru commented May 9, 2018

While all the questions below should also have generic answers in the generic documentation (e.g. add a metric by adding some piece of info to some configuration file), the cheat sheet should have the specifics (e.g. name and location of configuration file to change, and if it is not in GitHub, how to change it and maintain version history, and how to deploy changes).

How do we manage access control to devops related systems (both in staging and in production):

  • Ability to view metrics/graphs/reports
  • Ability to add/remove servers or otherwise modify AWS resource provisioning
  • Ability to view or change secrets?
  • How do we audit access and changes to secrets?
  • How do we add custom metrics to graphs?
  • How do we add resource scaling triggers based on custom metrics?

@osterman
Copy link
Member Author

osterman commented May 9, 2018

@goruha can you add some notes, links, references in this issue to unblock @Nuru. I'll refine them in the documentation, but we can start it here. Specifically, address this question first as it relates to grafana: #20 (comment)

@osterman osterman added the question Further information is requested label May 9, 2018
@osterman
Copy link
Member Author

osterman commented May 9, 2018

Ability to view or change secrets

@Nuru we need to upgrade the clusters ASAP to use our current "best practice" that we've already rolled out with Joany and PeerStreet. Namely, we've switched to using AWS Parameter Store with KMS encryption. This is all automated using chamber by Segment.io. The way it works at PopChest is using "env files" stored in an encrypted S3 bucket. I don't think it makes sense to document this as it should simply be replaced.

The benefits with chamber are that you can easily view all the parameters in the AWS web console, provided you have permissions.

@osterman
Copy link
Member Author

osterman commented May 9, 2018

Ability to add/remove servers or otherwise modify AWS resource provisioning

I'll take a stab at this one today.

@Nuru
Copy link
Sponsor Contributor

Nuru commented May 10, 2018

@osterman I'm in favor of using AWS Parameter Store and KMS, and it is fine to switch to that before/instead of documenting the env files (except please note where the env files are/were so we can track whatever secrets were in them should we later discover the files were disclosed) as long as this does not break local/dev/CI environments.

I'm a little wary about using chamber because it does not have a long history of widespread support and adoption (by my definition of those terms), but as long as it is just a convenience and we can manage without it, it is OK to use it if you like.

@osterman
Copy link
Member Author

osterman commented May 10, 2018

@Nuru thanks for taking time to explain your position on this. Let me just expand on why we've chosen to back `chamber.

I'm in favor of using AWS Parameter Store and KMS

Great! My gripe with using the envfiles is that it was a snowflake implementation (as are all envfile implementations I've seen). The challenge is how to keep those files secure as a system of record. Mozilla has a project called sops, but it's gnarly by comparison to chamber to implement. Then there's multiple extensions to git which will help encrypt those files using precommit hooks. All in all, didn't like the solutions.

Chamber is a convenience utility. And like you say, it's possible to manage the secrets themselves using the AWS Web Console directly. My experience with AWS is that they make great APIs and rather poor command line tools. That's why there's a rich ecosystem of tools that support it.

Segment.io as a company has raised $108M and been around since 2011. Our philosophy is to cherry pick the best tools from the community to facilitate integration. Most of the tools are by startups because they are the earliest adopters. Segment.io's Chamber meets the cloudposse criteria for this.

image

There are 600+ stars on the repo. It has an MIT license and regular releases for the past year.

Unfortunately, as with the entire kubernetes ecosystem, it is moving very rapidly. The criteria for widespread support needs to be adjusted relative to the maturity of the community. I have not been able to find any more mature tools that expose secrets stored in AWS SSM (or their new Secrets offering) as environment variables.

Alternatives to consider would be HashiCorp's Vault. This is a tool with widespread support and in use by many major financial institutions. HashiCorp Vault coupled with envconsul would also satisfy our current use-case, but Vault would need to be deployed as a separate cluster at an additional cost and management overhead.

@Nuru
Copy link
Sponsor Contributor

Nuru commented May 10, 2018

@osterman The examples above were not meant to be a bullet list of specific documentation requirements as much as a set of examples meant to be broadly covered by the cheat sheet. The cheat sheet can say

  • Grafana documentation is <here>
  • Where the documentation refers to <this logical file or URL>, use <this actual explicit file or URL> for PopChest staging and use <this actual explicit file or URL> for PopChest production.

and that might be all we need. To you it is probably obvious where everything is but to people with no experience with any of the DevOps tools you installed (which is, I think, our entire team), it is not even clear where to start.

@osterman osterman moved this from Ready to Implement to In Progress in Open Source Community Support May 10, 2018
@osterman
Copy link
Member Author

osterman commented May 12, 2018

The cheat sheet can say . ... and that might be all we need.

Cool, yes, we'll start with just documenting a roadmap of links with light descriptions of how the pieces fit together. I'll be writing up a few more docs this weekend.

We've also officially relaunched the documentation portal now on Hugo (https://docs.cloudposse.com) with more or less equivalent functionality, but the added benefit of tight github integration for issues.

@osterman
Copy link
Member Author

osterman commented Jun 4, 2018

This PR will serve as the "cheat sheet" (#108). It's more of a getting started guide, but tries to cover all pertinent pages in paragraph form with links out to all the pages. The goal is to communicate how all the pieces fit together.

@osterman osterman added this to Backlog in Support Jul 13, 2018
@osterman osterman moved this from In Progress to Completed in Open Source Community Support Aug 27, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
customer documentation question Further information is requested
Projects
Support
  
Backlog
Development

No branches or pull requests

2 participants