Skip to content
This repository has been archived by the owner on Jul 12, 2022. It is now read-only.

Commit

Permalink
Document version 1.0.x
Browse files Browse the repository at this point in the history
Signed-off-by: Felipe Brunelli de Andrade <[email protected]>
  • Loading branch information
Felipe Brunelli de Andrade committed Jun 28, 2021
1 parent 3100666 commit 728900b
Show file tree
Hide file tree
Showing 95 changed files with 1,771 additions and 901 deletions.
6 changes: 3 additions & 3 deletions content/en/FAQ/About Charles.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
---
title: About Charles
weight: 87
weight: 91
---

---

## What is Charles?

CharlesCD is an open-source tool that makes more agile, safe and continuous deploy, which allows development teams to validate their hypothesis with specific groups of users, simultaneously.
CharlesCD is an open-source tool that makes more agile, safe, and continuous deployment, which allows development teams to validate their hypothesis with specific groups of users, simultaneously.

## What is circle deploy?

The circle deploy is the pioneering concept created by Charles. Thanks to it, it's possible to deploy the same application with different segmentations of users at the same time.

## What is the main difference on Charles?
## What is the main difference in Charles?

Unlike other ways of deployment, Charles allows developers to perform simultaneous segmentation and agroupment of users with circles.

Expand Down
4 changes: 2 additions & 2 deletions content/en/FAQ/Circle deploy vs Other deploys.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Circle deploy vs Other deploys
weight: 89
weight: 93
description: >-
In this section, you will find an explanation about the difference between
circle deploy and other deployments methods.
Expand Down Expand Up @@ -36,7 +36,7 @@ However, this technique doesn't have any strategy for choosing the users during

With Charles, the circle deployment logic follows a pattern similar to parallel change. That means that, in the platform, you can also start opening the access to a release to a reduced number of users and go gradually expanding as soon as the system passes into tests.

The main difference of Charles is that, if you find any error or you have a hypothesis already validated, the reverse is easily done: you can take users off the circle or make a deployment of another version with that group or even bring a version of your application to [**open sea**](../../key-concepts#open-sea)**,** that is, to all the clients not in a Charle's circle.
The main difference of Charles is that, if you find any error or you have a hypothesis already validated, the reverse is easily done: you can take users off the circle or make deployment of another version with that group or even bring a version of your application to [**open sea**](../../key-concepts#open-sea)**,** that is, to all the clients not in a Charle's circle.

![Process of Canary Release](//deploy_em_circulos_x_canary_releases%20%282%29.png)

Expand Down
6 changes: 3 additions & 3 deletions content/en/FAQ/Community.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
title: Community
weight: 91
weight: 95
description: >-
In this section, you will find the main information about how to contribute
with our community.
In this section, you will find the main information about how to contribute to
our community.
---

---
Expand Down
346 changes: 0 additions & 346 deletions content/en/FAQ/Zupitcharlescd.md

This file was deleted.

2 changes: 1 addition & 1 deletion content/en/FAQ/_index.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
---
title: FAQ
weight: 88
weight: 92
---
4 changes: 4 additions & 0 deletions content/en/Forum.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
title: Forum
weight: 99
---
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
title: Configuring your module to propagate the circle's Id
weight: 39
description: >-
This section describes how to use lib to propagate header "X-Circle-ID"
through libraries to make sure the user access correct circles
In this section, you will find how to use lib to propagate header
"X-Circle-ID" through libraries to make sure the user access correct circles.
---

---
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: How to configure Chart template
weight: 37
description: 'In this section, you will find how to configure chart template.'
---

---
Expand Down
12 changes: 12 additions & 0 deletions content/en/Get Started/Creating your first module/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,20 @@ See the image on how to create modules:
For more information about Helm Repository, [**check out How to configure Chart Template section**](how-to-configure-chart-template).
{{% /alert %}}

### How do I get my module identifier?

As soon as your module is created, it already has a unique identifier. To obtain this information, select the desired module and, in the menu on the left, click Copy ID:

![](//copy-module-id.gif)

## What are components?

{{% alert color="info" %}}
Components are abstractions of the applications. If in your repository there are many applications, every component will match one of them.
{{% /alert %}}

### How to obtain the component identifier?

After selecting the module, copy the component id using the option on the three points of the card:

![](//copy-component-id.gif)
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Circle Matcher
weight: 26
description: 'In this section, you will find information about the circle matcher.'
---

---
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Deploy environment
weight: 24
description: 'In this section, you will find information about the deployment environment.'
---

---
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Docker registry
weight: 22
description: 'In this section, you will find information about docker registry.'
---

---
Expand Down
8 changes: 5 additions & 3 deletions content/en/Get Started/Defining a Workspace/Webhooks.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,15 @@ It is necessary to subscribe to use webhooks on Charles. Follow the steps below
2. Fill the fields:
* **Description:** add the webhook description;
* **Webhook URL:** put the service URL;
* **Secret:** add the application key;
* **Secret \(Optional\):** add the application key;
3. Choose the event: **deploy**, **undeploy,** or **both**.

After that, a card will appear with the success or fail status of the last message sent, see the image below:

![](//image%20%286%29.png)

The event's information is sent in the **content** property. Your exposed service needs to accept this property in the request body.

### **Webhook payload object common properties**

Each event payload contains unique properties. You can find them in the individual event type sections. See below the common properties:
Expand All @@ -39,7 +41,7 @@ Each event payload contains unique properties. You can find them in the individu

## Events

The observable events are the **beginning** and **ending** of **deploy** and **undeploy**.
The observable events are the **beginning** and **end** of **deploy** and **undeploy**.

### Deploy

Expand Down Expand Up @@ -182,7 +184,7 @@ When the event is triggered, an HTTP POST payload is sent to the subscribed webh

### Undeploy

When you register a webhook to receive information about **undeploy** events of a specific workspace, when a undeploy automatically starts and ends, you will receive a notification with details of the event.
When you register a webhook to receive information about **undeploy** events of a specific workspace or when an undeployment automatically starts and ends, you will receive a notification with details of the event.

When the event is triggered, an HTTP POST payload is sent to the subscribed webhook URL, see below:

Expand Down
1 change: 1 addition & 0 deletions content/en/Get Started/Defining a Workspace/_index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Defining a Workspace
weight: 20
description: 'In this section, you will find how to define your workspace.'
---

---
Expand Down
1 change: 1 addition & 0 deletions content/en/Get Started/First Deploy.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: First Deploy
weight: 42
description: 'In this section, you will find how to make your first deployment.'
---

---
Expand Down
59 changes: 26 additions & 33 deletions content/en/Get Started/Installing Charles/Installing via Helm.md
Original file line number Diff line number Diff line change
@@ -1,60 +1,53 @@
---
title: Installing via Helm
weight: 6
description: 'In this section, you will find how to install Charles with Helm.'
---

---

{{% alert color="info" %}}
Before proceeding, make sure that all the [**requirements**](.././#requirements) are properly installed.
{{% alert color="warning" %}}
Before proceeding, make sure all the [**requirements**](.././#requirements) are properly installed.
{{% /alert %}}

This installation is recommended for those who already have an infrastructure to deal with a more complex environment or who have some limitations of security/scalability, which demands **more complete install customization** of CharlesCD.

### Requisites

To run the process, you must have the following programs:

* [**Kubectl**](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
* [**Helm** ](https://helm.sh/docs/intro/install/)
## How to install?

### How does it work?
This installation stands out because of the customization. To do this, you have access to a helm template with all the available fields to change, including the database and the consumed resources.

This installation is recommended if you want specific customization. To make this happen, there is a helm template with all the available fields to be altered, including the database and consumed resources. You will find the documentation with the[ **editable fields here**](https://github.com/ZupIT/charlescd/tree/master/install/helm-chart).
Check out the [**documentation of the editable fields**](https://github.com/ZupIT/charlescd/tree/master/install/helm-chart)

{{% alert color="warning" %}}
The passwords used by Charles are stored in the [**values.yaml**](https://github.com/ZupIT/charlescd/blob/master/install/helm-chart/values.yaml) file. The main passwords to customized are:

* butler.database.password
* moove, database.password
* villager.database.password
* circlematcher.redis.password
* keycloak.keycloak.extraEnv.DB\_PASSWORD
* postgresql.postgresqlPassword
* redis.password
* compass.database.password
* hermes.database.password
* rabbitmq.auth.password
{{% alert color="info" %}}
The passwords used by Charles are stored in the [**values.yaml**](https://github.com/ZupIT/charlescd/blob/main/install/helm-chart/values.yaml) file. The main passwords to customized are:

* CharlesApplications.butler.database.password
* CharlesApplications.moove.database.password
* CharlesApplications.villager.database.password
* CharlesApplications.circlematcher.redis.password
* CharlesApplications.keycloak.keycloak.extraEnv.DB\_PASSWORD
* CharlesApplications.postgresql.postgresqlPassword
* CharlesApplications.redis.password
* CharlesApplications.compass.database.password
* CharlesApplications.hermes.database.password
* CharlesApplications.rabbitmq.auth.password
* CharlesApplications.gate.database.password
* CharlesApplications.compass.moove.database.password

For more details, access the link mentioned before about editable fields.
{{% /alert %}}

To complete the installation with helm charts, just run the command below after you customized the fields:
To install with helm charts, run the command below inside the **/charlescd/install/helm-chart** folder after you have customized the fields:

```text
// customize everything you need in the file values.yaml before you execute the following command
helm install charlescd <repo-folder> -n <namespace>
heml install --create-namespace -n <namespace> charlescd . -f values.yaml
```

{{% alert color="warning" %}}
It's important to remember that, in case of no customization at all, the final result is the same as in case \#1 in which, for standard, we install the PostgreSQL, Redis, Keycloak, and CharlesCD.
It's important to remember that, in case of no customization at all, by default Charles installs PostgreSQL, Redis, Keycloak, and RabbitMQ.

So, you must not forget to customize the fields in case you want something manageable.
So, don't forget to customize the fields if you want something more manageable.
{{% /alert %}}



### Change default passwords
### Change the default passwords

After installing CharlesCD, remember to change some **default passwords,** check out below:

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Your first Charles' access
weight: 8
description: 'In this section, you will find out more about your first Charles'' access.'
---

---
Expand Down
20 changes: 8 additions & 12 deletions content/en/Get Started/Installing Charles/_index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Installing Charles
weight: 4
description: 'In this section, you will find how to install Charles.'
---

---
Expand All @@ -10,26 +11,21 @@ weight: 4
CharlesCD's installation considers these **components**:

1. **Charles' architecture** specific modules;
2. **Keycloak**, used for authentication and authorization;
3. A **PostgreSQL database** for backend modules \(`moove`, `circle-matcher`, `butler,` `villager` and `charlescd-compass`\) and Keycloak;
4. A **Redis**, to be used by `charlescd-circle-matcher`
5. By default, a module called `octopipe` is added to the installation. This is a native platform created by our team to make installation easier, without previous configurations. However, you can disable it in the installation files.
2. **Keycloak**, used for the project's authentication and authorization. However, if you already have an Identity Manager \(IDM\) and you want to use it, you have just to configure it during Charles' installation, [**check out how to enable it in the** **IDM section**](../../../../reference/identity-manager);
3. A **PostgreSQL database** for backend modules \(`charlescd-moove`, `charlescd-butler` ,`charlescd-villager`, `charlescd-gate` e `charlescd-compass`\) and Keycloak;
4. A **Redis:** To be used by `charlescd-circle-matcher`
5. By default, a module called **`octopipe`** is already in Charles' installation. This is a native platform created by our team to make installation easier, without previous configurations. However, you can disable it in the installation files.
6. A **RabbitMQ** for `charlescd-hermes`' use.
7. **Ingress:** It is used to expose the HTTP and HTTPS routes outside the cluster to services inside the cluster. When you install Charles, it already has a default ingress, however, if you want to use your own, see how to enable it in the [**Installing via Helm section**](../../optional-configuration/configuring-your-ingress).

## Requirements

To install Charles will be necessary an environment with the following requisites:

* [**Kubernetes**](https://kubernetes.io/docs/setup/).
* [**Helm**](https://helm.sh/docs/intro/install/)
* [**Istio**](https://istio.io/archive/) \(version&gt;= 1.7 and [**enabled sidecar injection**](https://istio.io/latest/docs/setup/additional-setup/sidecar-injection/#automatic-sidecar-injection) on the deploy namespace of your application\).
* [**Prometheus**](https://prometheus.io/docs/prometheus/latest/getting_started/)**,** in case you want to use [**metrics**](../../reference/metrics/)
* [**Ingress**](https://github.com/kubernetes/ingress-nginx)
* [**RabbitMQ**](https://www.rabbitmq.com/#getstarted), in case you want to use [**webhooks**]().

{{% alert color="warning" %}}
**What is Ingress?** It is an engine that exposes HTTP and HTTPS routes from outside the cluster to services within the cluster. You can find out more about it [**here**](https://kubernetes.io/docs/concepts/services-networking/ingress/#what-is-ingress).

When you install Charles it comes with a default ingress, however, if you want to use your own, follow [**the steps to enable it**. ](.././#ingress)
{{% /alert %}}

## Resources

Expand Down
Loading

0 comments on commit 728900b

Please sign in to comment.