Skip to content

Commit

Permalink
Merge pull request #115 from vmware-tanzu/docs-oss-template
Browse files Browse the repository at this point in the history
Adding new Hugo Template and Updating Docs
  • Loading branch information
emmjohnson authored Sep 21, 2021
2 parents 19542ea + 41fbfdf commit 84241e2
Show file tree
Hide file tree
Showing 156 changed files with 4,329 additions and 147 deletions.
17 changes: 17 additions & 0 deletions site/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Website for [Template]

##### Prerequisites

* [Hugo](https://github.com/gohugoio/hugo)
* macOS: `brew install hugo`
* Windows: `choco install hugo-extended -confirm`

#### Build

```bash
hugo server --disableFastRender
```

#### Serve

Serve site at http://localhost:1313
6 changes: 6 additions & 0 deletions site/archetypes/default.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

39 changes: 0 additions & 39 deletions site/config.toml

This file was deleted.

69 changes: 69 additions & 0 deletions site/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# Copyright 2021 VMware
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

baseURL: "https://template.dev/"
languageCode: "en-us"
title: "Cartographer"
theme: "template"
outputs:
home: [ "HTML", "REDIRECTS" ]
pygmentsCodefences: true
pygmentsStyle: "pygments"
markup:
highlight:
anchorLineNos: false
codeFences: true
guessSyntax: false
hl_Lines: ""
lineAnchors: ""
lineNoStart: 1
lineNos: false
lineNumbersInTable: true
noClasses: true
style: native
tabWidth: 4
menu:
docs:
- name: Overview
url: /docs/
# weight: 100
# - name: Architecture
# url: /docs/architecture/
# name: Demo
# url: /docs/demo/
# - name: Scope
# url: /docs/scope/
# - name: Update Images
# url: /docs/contributing/
params:
twitter_url: "https://twitter.com/"
github_url: "https://github.com/vmware-tanzu/cartographer"
slack_url: "https://slack.com/"
github_base_url: "https://github.com/vmware-tanzu/cartographer"
use_advanced_docs: true
docs_right_sidebar: true
docs_search: false
docs_search_index_name: index_name
docs_search_api_key: api_key
docs_versioning: true
docs_latest: v0.0.6
docs_versions:
- v0.0.6
mediaTypes:
"text/netlify":
delimiter: ""
outputFormats:
REDIRECTS:
mediaType: "text/netlify"
baseName: "_redirects"
58 changes: 58 additions & 0 deletions site/content/community/_index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<!--
Copyright 2021 VMware
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

---
title: "Community"
layout: section
---

<div class="hero subpage-hero">
<div class="wrapper">
<h1>Community</h1>
</div>
</div>
<div class="wrapper subpage">
<h2>Donec ac odio tempor orci dapibus?</h2>
<div class="grid three">
<div class="col">
<div class="icon">
<img src="/img/github-image.svg" />
</div>
<div class="content">
<h3><a href="https://github.com/">Fringilla urna</a></h3>
<p>Egestas erat imperdiet sed euismod nisi porta. Risus in hendrerit gravida rutrum.</p>
</div>
</div>
<div class="col">
<div class="icon">
<img src="/img/slack.svg" />
</div>
<div class="content">
<h3><a href="https://slack.com/">At tempor commodo ullam</a></h3>
<p>Aliquam vestibulum morbi blandit cursus risus at ultrices</p>
</div>
</div>
<div class="col">
<div class="icon">
<img src="/img/calendar.svg" />
</div>
<div class="content">
<h3><a href="#">Et malesuada fames ac</a></h3>
<p>Nisi porta lorem mollis aliquam ut porttitor leo. Integer vitae justo eget</p>
</div>
</div>
</div>
</div>
3 changes: 3 additions & 0 deletions site/content/contributors/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---
headless: true
---
6 changes: 6 additions & 0 deletions site/content/contributors/john-doe.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
first_name: John
last_name: Doe
image: https://via.placeholder.com/80x80.png?text=JD1
---
John is a great developer
6 changes: 6 additions & 0 deletions site/content/contributors/john-doe2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
first_name: John
last_name: Doe 2
image: https://via.placeholder.com/80x80.png?text=JD2
---
John is a great developer
6 changes: 6 additions & 0 deletions site/content/contributors/john-doe3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
first_name: John
last_name: Doe 3
image: https://via.placeholder.com/80x80.png?text=JD3
---
John is a great developer
6 changes: 6 additions & 0 deletions site/content/contributors/john-doe4.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
first_name: John
last_name: Doe 4
image: https://via.placeholder.com/80x80.png?text=JD4
---
John is a great developer
6 changes: 6 additions & 0 deletions site/content/contributors/john-doe5.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
first_name: John
last_name: Doe
image: https://via.placeholder.com/80x80.png?text=JD5
---
John is a great developer
39 changes: 39 additions & 0 deletions site/content/docs/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
version: v0.0.6
cascade:
layout: docs
---

## TLDR

Cartographer is a Kubernetes native Supply Chain Choreographer. It allows App Operators to create pre-approved paths to production by integrating k8s resources with the elements of their existing toolchains (e.g. Jenkins).

Each pre-approved supply chain creates a paved road to production; orchestrating supply chain components - test, build, scan, and deploy - allowing developers to be able to focus on delivering value to their users while also providing App Operators with the peace of mind that all code in production has passed through all of the steps of an approved workflow.

## Cartographer Design and Philosophy

Cartographer is a Kubernetes (K8s) native supply chain choreographer. In other words, Cartographer allows users to define all of the steps that an application must go through before reaching a production environment. Users can codify their paths to production using two abstractions:

* Supply Chain ([Spec Reference](reference.md/#clustersupplychain))
<!-- * Deliverable ([Spec Reference](reference.md)) -->

The supply chain allows users to define the steps that an application must pass through in order to create an image. The deliverable portion of a Cartographer workflow allows the user to define the steps that the built image must pass through. By combining supply chains with delivery, the entire path to production can be specified and thereby choreographed by Cartographer.

The supply chain and delivery are not bound to a single cluster. Cartographer embraces a gitOps approach for image promotion across clusters - a gitOps repo is used to track the Kubernetes configuration that corresponds to a given application. The delivery portion will watch that same gitOps repository and initiate the second half of the path to prod whenever a new configuration is pushed to the repository.

Both the supply chain and delivery consist of components that are specified via Templates. Each template acts as a wrapper for existing Kubernetes resources and allows them to be used with Cartographer. There are currently four different types of templates that can be use in a Cartographer supply chain or deliverable:

* Source Template ([Spec Reference](reference.md/#clustersourcetemplate))
* Image Template ([Spec Reference](reference.md/#clusterimagetemplate))
* Opinion Template ([Spec Reference](reference.md/#clusterconfigtemplate))
* Cluster Config Template ([Spec Reference](reference.md/#clustertemplate))

Contrary to many other Kubernetes native workflow tools that already exist in the market, Cartographer does not “run” any of the objects themselves. Instead, it monitors the execution of each component and templates the following component in the supply chain or delivery after a given component has completed execution and updated its status.

The supply chain and delivery may also be extended to include integrations to existing CI and CD pipelines by using the Pipeline Service (which is part of Cartographer Core). The Pipeline Service acts as a wrapper for existing CI and CD tooling (with support for Tekton and Jenkins, and with supporting more providers in the future) and provides a declarative way for pipelines to be run inside of Cartographer.

While the supply chain and delivery are both operator facing, Cartographer also provides an abstraction for developers called workloads ([Spec Reference](reference.md/#workload)). Workloads allow developers to specify application specifications such as the location of their repository, environment variables and service claims.

By design, supply chains can be reused by many workloads. This allows an operator to specify the steps in the path to production a single time, and for developers to specify their applications independently but for each to use the same path to production. The intent is that developers are able to focus on providing value for their users and can reach production quickly and easily, while providing peace of mind for app operators, who are ensured that each application has passed through the steps of the path to production that they’ve defined.

![Cartographer High Level Diagram](img/ownership-flow.png)
2 changes: 1 addition & 1 deletion site/content/docs/examples.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

Check out the [examples directory] on our repository.

[examples directory]: https://github.com/vmware-tanzu/cartographer/tree/v0.0.3/examples
[examples directory]: ../../../examples
File renamed without changes
95 changes: 1 addition & 94 deletions site/content/docs/install.md
Original file line number Diff line number Diff line change
@@ -1,96 +1,3 @@
# Installing Cartographer

## Pre-requisites

- Running kubernetes cluster (v1.18+)
- [cert-manager]: necessary for setting up certificates for the controller's [admission webhook]


## Steps

0. Clone the repository

```bash
kubectl apply -f https://github.com/vmware-tanzu/cartographer/releases/download/v0.0.3/release.yaml
```

1. Create the `cartographer-system` namespace

```bash
kubectl create namespace cartographer-system
```

2. Submit the Kubernetes objects that will extend Kubernetes and run the
controller inside the cluster

you can do so either via plain `kubectl`

```bash
kubectl apply -f ./releases/release.yaml
```

or, better, with `kapp`:

```shell
$ kapp deploy -a cartographer -f ./releases/release.yaml

Target cluster 'https://127.0.0.1:53218' (nodes: kind-control-plane)

Changes

Namespace Name Kind Conds. Age Op Op st. Wait to Rs Ri
(cluster) clusterimagetemplates.carto.run CustomResourceDefinition - - create - reconcile - -
^ clustertemplates.carto.run CustomResourceDefinition - - create - reconcile - -
^ clusterconfigtemplates.carto.run CustomResourceDefinition - - create - reconcile - -
^ clustersourcetemplates.carto.run CustomResourceDefinition - - create - reconcile - -
^ clustersupplychains.carto.run CustomResourceDefinition - - create - reconcile - -
^ deliverables.carto.run CustomResourceDefinition - - create - reconcile - -
^ cartographer-cluster-admin ClusterRoleBinding - - create - reconcile - -
^ workloads.carto.run CustomResourceDefinition - - create - reconcile - -
cartographer-system cartographer-controller Deployment - - create - reconcile - -
^ cartographer-controller ServiceAccount - - create - reconcile - -

Op: 10 create, 0 delete, 0 update, 0 noop
Wait to: 10 reconcile, 0 delete, 0 noop

Continue? [yN]: y

11:01:49AM: ---- applying 9 changes [0/10 done] ----
...
11:01:58AM: ok: reconcile deployment/cartographer-controller (apps/v1) namespace: cartographer-system
11:01:58AM: ---- applying complete [10/10 done] ----
11:01:58AM: ---- waiting complete [10/10 done] ----

Succeeded
```

Remember: to properly install `cartographer` you must have already have
[cert-manager] installed. Below you'll find a suggestion of how you can do it,
but make sure you check their documentation:

```bash
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.2.0/cert-manager.yaml

# or, better with kapp
#
kapp deploy -a cert-manager \
-f https://github.com/jetstack/cert-manager/releases/download/v1.2.0/cert-manager.yaml
```


## Uninstalling

With plain `kubectl`:

```bash
kubectl delete -f ./releases/release.yaml
```

with `kapp`:

```bash
kapp delete -a cartographer
```

[cert-manager]: https://github.com/jetstack/cert-manager
[admission webhook]: https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/
Check out [Cartographer on GitHub](https://github.com/vmware-tanzu/cartographer) for information regarding installation.
Loading

0 comments on commit 84241e2

Please sign in to comment.