|
| 1 | +--- |
| 2 | +title: Getting Started with Cloud Posse |
| 3 | +description: >- |
| 4 | + This page will help you get started with Cloud Posse. You'll be up and running |
| 5 | + in a jiffy! |
| 6 | +--- |
| 7 | + |
| 8 | +# Geodesic |
| 9 | + |
| 10 | +Start with getting familiar with the [geodesic design]({{< relref "geodesic/design.md" >}}). |
| 11 | + |
| 12 | +Create [geodesic modules](/geodesic/module/) anywhere you want to logically organize infrastructure as code. |
| 13 | + |
| 14 | +Get intimately familiar with docker inheritance and [multi-stage docker builds]({{< relref "tools/docker/best-practices.md#multi-stage-builds" >}}). We use this pattern extensively. |
| 15 | + |
| 16 | +Check out our [terraform-root-modules](https://github.com/cloudposse/terraform-root-modules) for reference architectures to easily provision infrastructure |
| 17 | + |
| 18 | +# Local Development |
| 19 | + |
| 20 | +1. Get your [local environment](/local-dev-environments/) setup |
| 21 | +2. Make sure you're familiar with [`make`](/tools/make/) and [`Makefiles`]({{< relref "tools/make/makefile-examples.md" >}}) because we use them extensively for "executable documentation". |
| 22 | +3. Review Docker compose |
| 23 | +4. Docker composition monorepo strategy |
| 24 | + |
| 25 | +# Tools |
| 26 | + |
| 27 | +Tons of tools/clis are used as part of our solution. We distribute these tools in a couple of different ways. |
| 28 | + |
| 29 | +* Geodesic bundles most of these tools as part of the geodesic base image |
| 30 | +* Our [packages repo]({{< relref "tools/packages.md" >}}) provides an embeddable `Makefile` system for installing packages in other contexts (e.g. [`build-harness`]({{< relref "release-engineering/build-harness.md" >}})). This can also be used for local ("native") development contexts. |
| 31 | + |
| 32 | +Here are some of the most important tools to be aware of: |
| 33 | + |
| 34 | +- [`make`](/tools/make/) |
| 35 | +- [`chamber`]({{< relref "tools/chamber.md" >}}) |
| 36 | +- [`terraform`]({{< relref "terraform/_index.md" >}}) |
| 37 | +- [`gomplate`]({{< relref "tools/gomplate.md" >}}) |
| 38 | +- [`aws-vault`]({{< relref "tools/aws-vault.md" >}}) |
| 39 | + |
| 40 | +If using kubernetes, then also review these tools: |
| 41 | + |
| 42 | +- [`kops`]({{< relref "tools/kops.md" >}}) |
| 43 | +- [`helm`]({{< relref "tools/helm.md" >}}) |
| 44 | +- [`helmfile`]({{< relref "tools/helmfile.md" >}}) |
| 45 | + |
| 46 | +# Kubernetes |
| 47 | + |
| 48 | +Kubernetes is a massive part of our solutions. Our Kubernetes documentation is geared towards leveraging [`kops`]({{< relref "tools/kops.md" >}}) by way of our `geodesic` strategy. |
| 49 | + |
| 50 | +## Helm |
| 51 | + |
| 52 | +Helm is central to how we deploy all services on kubernetes. |
| 53 | + |
| 54 | +* [helm]({{< relref "tools/helm.md" >}}) is essentially the package manager for Kubernetes (like `npm` for Node, `gem` for Ruby, and `rpm` for RHEL) |
| 55 | +* [helm charts](/helm-charts/) are how kubernetes resources are templatized using Go templates |
| 56 | +* [helm charts quickstart]({{< relref "helm-charts/quickstart.md" >}}) is our "cheatsheet" for getting started with Helm Charts. |
| 57 | +* [helm registries](/kubernetes-platform-services/chart-registry/) are used to store helm charts, which are essentially tarball artifacts. |
| 58 | +* [chartmuseum]({{< relref "kubernetes-platform-services/chart-registry/chartmuseum.md">}}) is deployed as the chart repository |
| 59 | +* [helmfiles]({{< relref "tools/helmfile.md">}}) are used to define a distribution of helm charts. So if you want to install prometheus, grafana, nginx-ingress, kube-lego, etc, we use a `helmfile.yaml` to define how that's done. |
| 60 | +* [chamber]({{< relref "tools/chamber.md">}}) is used to manage secrets and provide them when provisioning with `helmfile`. It's also a big part of our overall story on [secrets management](/secrets-management/) |
| 61 | +* [rollbacks]({{< relref "faq/how-to-perform-rollbacks.md" >}}) |
| 62 | + |
| 63 | + |
| 64 | +## CI/CD with Codefresh |
| 65 | + |
| 66 | +Learn how [codefresh]({{< relref "release-engineering/codefresh-kubernetes-integration.md" >}}) is integrated with kubernetes. Codefresh runs docker containers for each build step. We provide a dockerized [build-harness]({{< relref "release-engineering/build-harness.md">}}) to distribute common build tools that we use as part of the build steps in the `codefresh.yml`. |
| 67 | + |
| 68 | +* We use some terraform modules to provision resources for codefresh like a chamber user |
| 69 | +* Deploy [apps with secrets]({{< relref "secrets-management/cicd.md" >}}) |
| 70 | + |
| 71 | +## Backing Services (*Coming Soon*) |
| 72 | + |
| 73 | +Checkout our docs on [kubernetes backing services]({{< relref "kubernetes-backing-services/_index.md" >}}). |
| 74 | + |
| 75 | +## Platform Services (*Coming Soon*) |
| 76 | + |
| 77 | +Checkout our docs on [kubernetes platform services]({{< relref "kubernetes-platform-services/_index.md" >}}). |
| 78 | + |
| 79 | +## Optimization |
| 80 | + |
| 81 | +Inevitably, at some point comes the time when you will need to optimize for performance. We've documented some of the best ways to get started. |
| 82 | + |
| 83 | +First, make sure you're familiar with kubernetes [resource management]({{< relref "kubernetes/resource-management.md" >}}). |
| 84 | + |
| 85 | +* [Scale Cluster Horizontally]({{< relref "kubernetes-optimization/scale-cluster-horizontally.md" >}}) - Scale Kubernetes cluster horizontally by adding nodes |
| 86 | +* [Scale Cluster Vertically]({{< relref "kubernetes-optimization/scale-cluster-vertically.md" >}}) - Scale Kubernetes cluster vertically by using different types of EC2 instances |
| 87 | +* [Scale Pods Horizontally]({{< relref "kubernetes-optimization/scale-pods-horizontally.md" >}}) - Scale Kubernetes pods horizontally by increasing the replica count |
| 88 | +* [Scale Pods Vertically]({{< relref "kubernetes-optimization/scale-pods-vertically.md" >}}) - Scale Kubernetes pods vertically by increasing CPU and Memory limits |
| 89 | +* [Scale Nginx Ingress Horizontally]({{< relref "kubernetes-optimization/scale-nginx-ingress-horizontally.md" >}}) - Scale Nginx Ingress pods horizontally by increasing the replica count |
| 90 | +* [Scale Nginx Ingress Vertically]({{< relref "kubernetes-optimization/scale-nginx-ingress-vertically.md" >}}) - Scale Nginx Ingress vertically by increasing CPU and Memory limits |
| 91 | +* [Tune Nginx]({{< relref "kubernetes-optimization/tune-nginx.md" >}}) - Tune Nginx parameters (timeouts, worker processes, logs, http) |
| 92 | +* [Optimize databases]({{< relref "kubernetes-optimization/optimize-database-indexes.md" >}}) - Optimize database queries and indexes |
| 93 | + |
| 94 | +# Terraform |
| 95 | + |
| 96 | +Study up on our [Best Practices]({{< relref "terraform/best-practices.md" >}}) for working with terraform. Get started quickly provisioning infrastructure by referencing our [terraform-root-modules](/terraform-modules/root/). |
| 97 | + |
| 98 | +## Terraform Modules |
| 99 | + |
| 100 | +We provide a staggering number of Terraform modules in our GitHub. This number is growing every week and we're also [accepting module contributions]({{< relref "documentation/our-github.md#contributing" >}}). |
| 101 | + |
| 102 | +Our modules are broken down in to specific areas of concern: |
| 103 | + |
| 104 | +- [Backups](/terraform-modules/backups/) |
| 105 | +- [CI/CD](/terraform-modules/cicd/) |
| 106 | +- [CDN](/terraform-modules/cdn/) |
| 107 | +- [Kubernetes (kops)](/terraform-modules/kops-kubernetes/) |
| 108 | +- [Logging](/terraform-modules/logging/) |
| 109 | +- [Monitoring](/terraform-modules/monitoring/) |
| 110 | +- [Networking](/terraform-modules/networking/) |
| 111 | +- [Platform](/terraform-modules/platform/) |
| 112 | +- [Security](/terraform-modules/security/) |
| 113 | + |
| 114 | +Before writing your own modules, review our [Best Practices]({{< relref "terraform-modules/best-practices.md" >}}) for working with Terraform modules. |
| 115 | + |
| 116 | +# Monitoring (*Coming Soon*) |
| 117 | + |
| 118 | +In the meantime, review some of our docs on [monitoring and alerting](/monitoring-and-alerting/). |
| 119 | + |
| 120 | +If running on kubernetes, review our ["backing services" documentation for monitoring]({{< relref "kubernetes-backing-services/monitoring/_index.md" >}}) |
| 121 | + |
| 122 | +# Load Testing |
| 123 | + |
| 124 | +After you've gotten familiar with how monitoring is working, you'll want to run some load tests to ensure everything meets expectations. We provide some of our "best practices", workflows, scripts and scenarios for load and performance testing of websites and applications |
| 125 | +(in particular those deployed on Kubernetes clusters). |
| 126 | + |
| 127 | +Our strategy for load and performance testing breaks down like this: |
| 128 | + |
| 129 | +1. [Review Load Testing Tools]({{< relref "load-testing/load-testing-tools.md" >}}) - how we select and setup our load testing tools |
| 130 | +2. [Example Testing Scenarios]({{< relref "load-testing/load-testing-scenarios.md" >}}) - how we implement load testing scenarios |
| 131 | +3. [Run Tests and Analyze Results]({{< relref "load-testing/perform-testing-and-analyze-results.md" >}}) - how we do load testing and analyze the results |
| 132 | +4. [Optimization and Tuning Procedures]({{< relref "load-testing/optimization-and-tuning-procedures.md" >}}) - optimization and tuning steps that we usually perform after running load tests |
| 133 | + |
| 134 | + |
| 135 | +# Secrets (*Coming Soon*) |
| 136 | + |
| 137 | +Have a look at our docs on [secrets management](/secrets-management/). |
| 138 | + |
| 139 | + |
| 140 | + |
| 141 | +# Contributing Back |
| 142 | + |
| 143 | +Everything we provide on our [GitHub](https://github.com/cloudposse/) wouldn't have been possible if it weren't for our [phenomenal customers](https://cloudposse.com/) and the support of the [community](https://cloudposse.com/slack/) contributing bug-fixes, [filing issues](https://github.com/search?q=org%3Acloudposse+type%3Aissue) and submitting a steady stream of [Pull Requests](https://github.com/search?q=org%3Acloudposse+type%3Apr). |
| 144 | + |
| 145 | +We welcome any Terraform module submissions, Helm charts, and generally any other useful tools that others could benefit from. Our only requirement is that they be licensed under `APACHE2`. |
| 146 | + |
| 147 | +Drop us a line at [hello@cloudposse.com](mailto:hello@cloudposse.com) to get in touch with us about contributing. |
| 148 | + |
| 149 | +# Getting Help |
| 150 | + |
| 151 | +Check out our [FAQ](/faq/) which is also fully indexed by our Algolia search available on the [homepage](/). |
| 152 | + |
| 153 | +Review our [glossary](/glossary/) if there are any terms that are confusing. |
| 154 | + |
| 155 | +File issues anywhere you find the documentation lacking by going to our [docs repo](https://github.com/cloudposse/docs). |
| 156 | + |
| 157 | +Join our [Slack Community](https://cloudposse.com/slack/) and speak directly with the maintainers |
| 158 | + |
| 159 | +We provide "white glove" DevOps support. [Get in touch]({{< relref "documentation/contact-us.md" >}}) with us today! |
| 160 | + |
| 161 | +[Schedule Time](https://calendly.com/cloudposse/) with us. |
0 commit comments