You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This directory contains a number of markdown-formatted "man" pages. These will be available inside of the container.
15
+
16
+
## USAGE
17
+
18
+
### Build
19
+
20
+
To rebuild the man pages, run `docs update`
21
+
22
+
### List
23
+
24
+
To list all available man pages, run `help`. Then for more information on any topic, run `help` and pass the command as an argument.
25
+
26
+
### Search
27
+
28
+
To search for help, run `help "topic"` where `"topic"` is what you want more information on.
29
+
30
+
## CONTRIBUTING
31
+
32
+
All documentation for `geodesic` belongs in the `docs/` folder. Use markdown appropriate formatting and styles.
33
+
34
+
## LAYOUT
35
+
36
+
In order to be consistent with UNIX Man pages, all section titles should be *UPPERCASE* and begin with a single `##`.
37
+
Subsections should be properly capitalized and use `###`. Avoid going more than (2) sections deep.
38
+
39
+
Use standard section names.
40
+
41
+
### Here are some examples.
42
+
43
+
-`## NAME` The name of the command or function, followed by a one-line description of what it does.
44
+
-`## SYNOPSIS` In the case of a command, a formal description of how to run it and what command line options it takes. For program functions, a list of the parameters the function takes and which header file contains its declaration.
45
+
-`## DESCRIPTION` A textual description of the functioning of the command or function.
46
+
-`## EXAMPLES` Some examples of common usage.
47
+
-`## SEE ALSO` A list of related commands or functions.
48
+
-`## OPTIONS` A list of supported options for the command
49
+
-`## SYNTAX` An explation of the command's syntax
50
+
-`## ENVIRONMENT` A list of supported environment variables
51
+
-`## RETURN VALUES` A breakdown of the expected return values or exit codes
52
+
-`## STANDARDS` Some of the "best practices"
53
+
-`## SECURITY CONSIDERATIONS` Recommended settings for safer operation
54
+
-`## BUGS` Some known issues
55
+
-`## HISTORY` Background on command to give readers more context
Copy file name to clipboardexpand all lines: docs/about.md
+14-3
Original file line number
Diff line number
Diff line change
@@ -1,12 +1,23 @@
1
-
## Features
1
+
---
2
+
title: ABOUT(1) | Geodesic
3
+
author:
4
+
- Erik Osterman
5
+
date: May 2019
6
+
---
7
+
8
+
## NAME
9
+
10
+
about - About the Geodesic Cloud Automation Shell
11
+
12
+
## FEATURES
2
13
3
14
***Secure** - TLS/PKI, OAuth2, MFA Everywhere, remote access VPN, [ultra secure bastion/jumphost](https://github.com/cloudposse/bastion) with audit capabilities and slack notifications, [IAM assumed roles](https://github.com/99designs/aws-vault/), automatic key rotation, encryption at rest, and VPCs
4
15
***Repeatable** - 100% Infrastructure-as-Code with change automation and support for scriptable admin tasks in any language, including Terraform
5
16
***Extensible** - A framework where everything can be extended to work the way you want to
6
17
***Comprehensive** - our [helm charts library](https://github.com/cloudposse/charts) are designed to tightly integrate your cloud-platform with Github Teams and Slack Notifications and CI/CD systems like TravisCI, CircleCI or Jenkins
7
18
***OpenSource** - Permissive [APACHE 2.0](LICENSE) license means no lock-in and no on-going license fees
8
19
9
-
## Technologies
20
+
## TECHNOLOGIES
10
21
11
22
At its core, Geodesic is a framework for provisioning cloud infrastructure and the applications that sit on top of it. We leverage as many existing tools as possible to facilitate cloud fabrication and administration. We're like the connective tissue that sits between all of the components of a modern cloud.
12
23
@@ -27,6 +38,6 @@ At its core, Geodesic is a framework for provisioning cloud infrastructure and t
Copy file name to clipboardexpand all lines: docs/design.md
+21-11
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,15 @@
1
-
# Design
1
+
---
2
+
title: DESIGN(1) | Geodesic
3
+
author:
4
+
- Erik Osterman
5
+
date: May 2019
6
+
---
2
7
3
-
## An Opinionated Framework
8
+
## NAME
9
+
10
+
design - Geodesic Design
11
+
12
+
### An Opinionated Framework
4
13
5
14
We designed this shell as the last layer of abstraction. It stitches all the tools together like `make`, `aws-cli`, `kops`, `helm`, `kubectl`, and `terraform`. As time progresses,
6
15
there will undoubtably be even more that come into play. For this reason, we chose to use a combination of `bash` and `make` which together are ideally suited to combine the
@@ -18,7 +27,7 @@ Since we use `make` under-the-hood, you can add all your ENVs at the end of the
18
27
For the default environment variables, checkout `/etc/profile.d/defaults.sh`. We believe using ENVs this way is both consistent
19
28
with the "cloud" (12-factor) way of doing things, as well as a clear way of communicating what values are being passed without using a complicated convention. Additionally, you can set & forget these ENVs in your shell.
20
29
21
-
## Layout Inside the Shell
30
+
## LAYOUT
22
31
23
32
We leverage as many semantics of the linux shell as we can to make the experience as frictionless as possible.
24
33
@@ -27,23 +36,24 @@ We leverage as many semantics of the linux shell as we can to make the experienc
27
36
*`/etc/bash_completion.d` is where all bash completion scripts are kept and sourced when the shell starts.
28
37
*`/usr/local/bin` has some helper scripts
29
38
*`/etc/motd` is the current "Message of the Day"
30
-
*`/mnt/local` is where we house the local state (like your temporary AWS credentials)
31
-
*`/mnt/remote` is where we mount the S3 bucket for cluster state; these files are never written to disk and only kept in memory for security
39
+
*`/localhost` is where we house the local state (like your temporary AWS credentials). This is mounted to your `HOME` directory.
32
40
*`/conf` is where all configurations belong. For example, stick your terraform module invocations in this directory. When using `terraform`, the directory names are mapped directly to a bucket prefix for terraform state which include subdirectories (e.g. `/conf/us-west-2/vpc` will map to a state folder prefix of `us-west-2/vpc`).
33
41
34
-
## Extending the Shell
42
+
## EXTENDING
35
43
36
44
Geodesic was written to be easily extended. There are a couple ways to do it.
37
45
38
46
You can easily extend the Geodesic shell by creating your own repo with a `Dockerfile`. We suggest you have it inherit `FROM geodeisc:latest` (or pin it to a [build number](https://travis-ci.org/cloudposse/geodesic) for stability). If you want to add or modify core functionality, this is the recommended way to do it.
39
47
40
-
In side your container, you can replace any of our code with your own to make it behave exactly as you wish. You could even create one dedicated shell per cluster with
41
-
logic tailored specifically for that cluster.
48
+
In side your container, you can replace any of our code with your own to make it behave exactly as you wish. You could even create one dedicated shell per cluster with logic tailored specifically for that cluster.
49
+
50
+
### Here are some other tips.
51
+
52
+
1. Many of our `Makefiles` do an `-include Makefile.*`, which means, we'll include other `Makefiles` in that directory. To add additional functionality, simply drop-in your `Makefile.something` in that directory.
42
53
43
-
Here are some other tips. Most of our modules do an `-include Makefile.*`, which means, we'll include other `Makefiles` in that directory. To add additional functionality,
44
-
simply drop-in your `Makefile.something` in that module directory.
54
+
2. Want to add additional aliases or affect the shell? Drop your script in `/etc/profile.d` and it will be loaded automatically when the shell starts.
45
55
46
-
Want to add additional aliases or affect the shell? Drop your script in `/etc/profile.d` and it will be loaded automatically when the shell starts.
56
+
3. Need to set some environment variables? Use an `.envrc` in the corresponding directory
47
57
48
58
As you can see, you can easily change almost any aspect of how the shell works simply by extending it.
Copy file name to clipboardexpand all lines: docs/kops.md
+21-29
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,15 @@
1
-
# Kubernetes Operations (kops)
1
+
---
2
+
title: KOPS(1) | Geodesic
3
+
author:
4
+
- Erik Osterman
5
+
date: May 2019
6
+
---
7
+
8
+
## NAME
9
+
10
+
kops - Kubernetes Operations (kops)
11
+
12
+
## SYNOPSIS
2
13
3
14
Kops is one of the easiest ways to get a production grade Kubernetes cluster up and running. The `kops` command line tool (cli) is like `kubectl` for clusters. It handles all the standard CRUD operations necessary to manage the complete life cycle of a cluster.
4
15
@@ -7,7 +18,8 @@ current practice is to define one cluster per Geodesic contianer, with all clust
7
18
in the `/conf` folder. We are planning to publish guidelines for how to manage multiple clusters per container,
8
19
but that is still a work in progress that will introduce some new patterns.
9
20
10
-
### USAGE
21
+
## DESCRIPTION
22
+
11
23
- This document describes how to set up a single `kops` cluster in a single Geodesic container.
12
24
- The described usage pattern corresponds to [Geodesic](https://github.com/cloudposse/geodesic) version 0.95.1,
13
25
[Reference Architecture](https://github.com/cloudposse/reference-architectures) version 0.7.0, and
@@ -18,27 +30,7 @@ of its publication. Also, because it is only updated manually (rather than gener
18
30
be times when one part of this document intends to reference one version of a resource while another part references
19
31
a different version. Please keep these facts in mind when you are using this document to help you set up your own cluster.
-**Automated Provisioning** of Kubernetes clusters in [AWS](https://github.com/kubernetes/kops/blob/master/docs/aws.md) and [GCE](https://github.com/kubernetes/kops/blob/master/docs/tutorial/gce.md)
44
36
-**Highly Available (HA)** Kubernetes masters and nodes by using auto-scaling groups
@@ -50,7 +42,7 @@ a different version. Please keep these facts in mind when you are using this doc
50
42
-**Supports Multiple CNIs** providers [out of the box](https://github.com/kubernetes/kops/blob/master/docs/networking.md).
51
43
-**Lifecycle Hooks** make it easy to add containers and files to nodes via a [cluster manifest](https://github.com/kubernetes/kops/blob/master/docs/cluster_spec.md)
52
44
53
-
## Overview
45
+
## OVERVIEW
54
46
55
47
The process of provisioning a new `kops` cluster takes (3) steps. Here's what it looks like:
56
48
@@ -68,7 +60,7 @@ The process of provisioning a new `kops` cluster takes (3) steps. Here's what it
68
60
- Validate the cluster is healthy.
69
61
70
62
71
-
## Configuration Settings Overview
63
+
###Configuration Settings Overview
72
64
73
65
We use 2 different mechanisms for storing configuration parameters.
74
66
@@ -114,7 +106,7 @@ Normally `direnv` only reads the `.envrc` file, but CloudPosse adds a `use envrc
114
106
causes `direenv` to read all the files in the directory that have `.envrc` extensions. This allows parameters
115
107
to be set automatically by `direnv` without requiring that the settings be put in a hidden file.
116
108
117
-
##### `/conf/.direnv`
109
+
##### `/conf/.envrc`
118
110
119
111
In the `/conf` directory itself, we put a file named `.envrc` which contains just this one line:
120
112
```
@@ -196,7 +188,7 @@ SSM with the value from `kops.envrc`. This is why you should not set a parameter
196
188
197
189
</details>
198
190
199
-
## Create the cluster
191
+
###Create the cluster
200
192
201
193
The following describes how to create a cluster, treating the setting of parameters in various places as
202
194
steps in the creation process.
@@ -551,10 +543,10 @@ To upgrade the cluster or change settings (_e.g_. number of nodes, instance type
551
543
8. Run `kops rolling-update cluster` to view a plan of changes
552
544
9. Run `kops rolling-update cluster --yes --force` to force a rolling update (replace EC2 instances)
In mathematics, a geodesic line is the shortest distance between two points on a sphere. It's also a solid structure composed of geometric shapes such as hexagons.
6
17
18
+
## DESCRIPTION
19
+
7
20
We like to think of geodesic as the shortest path to a rock-solid cloud infrastructure. The geodesic logo is a hexagon with a cube suspended at its center. The cube represents this geodesic container, which is central to everything and at the same time is what ties everything together.
8
21
9
22
But look a little closer and you’ll notice there’s much more to it. It's also an isometric shape of a cube with a missing piece. This represents its pluggable design, which lets anyone extend it to suit their vision.
0 commit comments