diff --git a/content/en/FAQ/About Charles.md b/content/en/FAQ/About Charles.md index 6efb74d1..3c0fb88a 100644 --- a/content/en/FAQ/About Charles.md +++ b/content/en/FAQ/About Charles.md @@ -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. diff --git a/content/en/FAQ/Circle deploy vs Other deploys.md b/content/en/FAQ/Circle deploy vs Other deploys.md index e5749667..24f5844e 100644 --- a/content/en/FAQ/Circle deploy vs Other deploys.md +++ b/content/en/FAQ/Circle deploy vs Other deploys.md @@ -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. @@ -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) diff --git a/content/en/FAQ/Community.md b/content/en/FAQ/Community.md index c21ffb8b..e89ba4f5 100644 --- a/content/en/FAQ/Community.md +++ b/content/en/FAQ/Community.md @@ -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. --- --- diff --git a/content/en/FAQ/Zupitcharlescd.md b/content/en/FAQ/Zupitcharlescd.md deleted file mode 100644 index 8208d723..00000000 --- a/content/en/FAQ/Zupitcharlescd.md +++ /dev/null @@ -1,346 +0,0 @@ ---- -title: Zupitcharlescd -weight: 93 ---- - -# ZupIT/charlescd - -## Changelog - -### 0.3.10 \(01/10/2020\) - -* [\#545](https://github.com/ZupIT/charlescd/pull/545) Workflow prod oidc -* [\#553](https://github.com/ZupIT/charlescd/pull/553) change npm to yarn in prodrelease -* [\#550](https://github.com/ZupIT/charlescd/pull/550) Matcher s3 sync -* [\#552](https://github.com/ZupIT/charlescd/pull/552) wrong react-select version change required props -* [\#534](https://github.com/ZupIT/charlescd/pull/534) Add dockerhub support -* [\#551](https://github.com/ZupIT/charlescd/pull/551) Matcher s3 sync keycloak login -* [\#519](https://github.com/ZupIT/charlescd/pull/519) Fixing filter when adding user groups at workspace -* [\#492](https://github.com/ZupIT/charlescd/pull/492) Filter within the metrics group -* [\#544](https://github.com/ZupIT/charlescd/pull/544) fix nginx error in single file installation -* [\#543](https://github.com/ZupIT/charlescd/pull/543) CharleCD code of conduct -* [\#541](https://github.com/ZupIT/charlescd/pull/541) CI Update of charts and changelog - -### 0.3.9 \(25/09/2020\) - -* [\#540](https://github.com/ZupIT/charlescd/pull/540) Issues -* [\#538](https://github.com/ZupIT/charlescd/pull/538) CI Update of charts and changelog - -### 0.3.8 \(25/09/2020\) - -* [\#537](https://github.com/ZupIT/charlescd/pull/537) Rename compass docker-repository name -* [\#536](https://github.com/ZupIT/charlescd/pull/536) Fix Create Workspace -* [\#533](https://github.com/ZupIT/charlescd/pull/533) CI Update of charts and changelog - -### 0.3.7 \(25/09/2020\) - -* [\#535](https://github.com/ZupIT/charlescd/pull/535) Revert "Building villager native" -* [\#477](https://github.com/ZupIT/charlescd/pull/477) Support to Google Cloud Registry -* [\#531](https://github.com/ZupIT/charlescd/pull/531) Adding files for installation with new idm integration -* [\#529](https://github.com/ZupIT/charlescd/pull/529) CI Update of charts and changelog -* [\#532](https://github.com/ZupIT/charlescd/pull/532) Revert "Revert "\[DevCraft\] IDM and microfrontend feature"" -* [\#530](https://github.com/ZupIT/charlescd/pull/530) Revert "\[DevCraft\] IDM and microfrontend feature" -* [\#507](https://github.com/ZupIT/charlescd/pull/507) \[DevCraft\] IDM and microfrontend feature -* [\#466](https://github.com/ZupIT/charlescd/pull/466) Charlescd adapter to work with devcraft -* [\#527](https://github.com/ZupIT/charlescd/pull/527) CI Update of charts and changelog -* [\#524](https://github.com/ZupIT/charlescd/pull/524) Add gcr support -* [\#526](https://github.com/ZupIT/charlescd/pull/526) Fixing variables at workflows. -* [\#525](https://github.com/ZupIT/charlescd/pull/525) Fix cd configuration eks form names -* [\#435](https://github.com/ZupIT/charlescd/pull/435) Building villager native -* [\#455](https://github.com/ZupIT/charlescd/pull/455) Upgrade Quarkus 1.2.1 to 1.7.1 and fix Test for new version of Quarkus -* [\#516](https://github.com/ZupIT/charlescd/pull/516) Issue workspace switch -* [\#522](https://github.com/ZupIT/charlescd/pull/522) Revert "Support to Google Cloud Registry" -* [\#481](https://github.com/ZupIT/charlescd/pull/481) Bump node-fetch from 2.6.0 to 2.6.1 in /ui -* [\#506](https://github.com/ZupIT/charlescd/pull/506) Feature change login process -* [\#497](https://github.com/ZupIT/charlescd/pull/497) Using database permissions on moove filter -* [\#487](https://github.com/ZupIT/charlescd/pull/487) Remove proxy -* [\#480](https://github.com/ZupIT/charlescd/pull/480) Bump node-fetch from 2.6.0 to 2.6.1 in /butler -* [\#510](https://github.com/ZupIT/charlescd/pull/510) CI Update of charts and changelog -* [\#512](https://github.com/ZupIT/charlescd/pull/512) fix-villager-swagger-path -* [\#503](https://github.com/ZupIT/charlescd/pull/503) fix users load workspace - -### 0.3.6 \(21/09/2020\) - -* [\#511](https://github.com/ZupIT/charlescd/pull/511) Fix import csv bug - -### 0.3.5 \(19/09/2020\) - -* [\#509](https://github.com/ZupIT/charlescd/pull/509) Change Octopipe to not update deployed resources -* [\#508](https://github.com/ZupIT/charlescd/pull/508) Updating java version of moove dev release -* [\#495](https://github.com/ZupIT/charlescd/pull/495) CI Update of charts and changelog -* [\#442](https://github.com/ZupIT/charlescd/pull/442) Fix multiple registry auth bug - -### 0.3.4 \(16/09/2020\) - -* [\#502](https://github.com/ZupIT/charlescd/pull/502) Update application-k8s.properties -* [\#501](https://github.com/ZupIT/charlescd/pull/501) Fix chart error -* [\#500](https://github.com/ZupIT/charlescd/pull/500) Update Nginx Chart.yaml -* [\#499](https://github.com/ZupIT/charlescd/pull/499) Compass copyright -* [\#452](https://github.com/ZupIT/charlescd/pull/452) Removing authorization from keycloak -* [\#496](https://github.com/ZupIT/charlescd/pull/496) Fix compass installation -* [\#491](https://github.com/ZupIT/charlescd/pull/491) lock Casl version -* [\#494](https://github.com/ZupIT/charlescd/pull/494) fix compass chart -* [\#414](https://github.com/ZupIT/charlescd/pull/414) Fixing workspace permissions. -* [\#486](https://github.com/ZupIT/charlescd/pull/486) Notification transaction -* [\#488](https://github.com/ZupIT/charlescd/pull/488) Fix compass job -* [\#485](https://github.com/ZupIT/charlescd/pull/485) Adding compass chart -* [\#483](https://github.com/ZupIT/charlescd/pull/483) Transaction on create deployment use-case -* [\#463](https://github.com/ZupIT/charlescd/pull/463) CI Update of charts and changelog -* [\#473](https://github.com/ZupIT/charlescd/pull/473) Fix average time -* [\#476](https://github.com/ZupIT/charlescd/pull/476) Change on click expand for a redirect to that circle -* [\#474](https://github.com/ZupIT/charlescd/pull/474) fix hardcoded sandbox namespace -* [\#472](https://github.com/ZupIT/charlescd/pull/472) fix one deployment issues -* [\#470](https://github.com/ZupIT/charlescd/pull/470) Update link to documentation -* [\#428](https://github.com/ZupIT/charlescd/pull/428) Adding filter to UserGroup findAll -* [\#438](https://github.com/ZupIT/charlescd/pull/438) Circle segments validation on PATCH -* [\#348](https://github.com/ZupIT/charlescd/pull/348) Reset password - Root View -* [\#423](https://github.com/ZupIT/charlescd/pull/423) Segmentation view - Hide logical operator and vertical line -* [\#418](https://github.com/ZupIT/charlescd/pull/418) Create metrics groups -* [\#468](https://github.com/ZupIT/charlescd/pull/468) V2 one deployment circle -* [\#467](https://github.com/ZupIT/charlescd/pull/467) Removing comments on nginx-conf.yaml - -### 0.3.4-rc.3 \(04/09/2020\) - -* [\#462](https://github.com/ZupIT/charlescd/pull/462) Refinement UI -* [\#460](https://github.com/ZupIT/charlescd/pull/460) Butler stabilization version concat validation -* [\#459](https://github.com/ZupIT/charlescd/pull/459) validate componentName + imageTag cannot be greater than 63 -* [\#456](https://github.com/ZupIT/charlescd/pull/456) Fix spinnaker tests, return hostValue and gatewayName on executions index -* [\#454](https://github.com/ZupIT/charlescd/pull/454) Add component name v2 -* [\#453](https://github.com/ZupIT/charlescd/pull/453) Index pagination by 0, validate query string params -* [\#407](https://github.com/ZupIT/charlescd/pull/407) remove module controller -* [\#393](https://github.com/ZupIT/charlescd/pull/393) add label circleId -* [\#451](https://github.com/ZupIT/charlescd/pull/451) Fix ingress options v2 -* [\#450](https://github.com/ZupIT/charlescd/pull/450) Add page indication on paginated response -* [\#443](https://github.com/ZupIT/charlescd/pull/443) Codecov upgrade 1.0.7 to 1.0.13 -* [\#441](https://github.com/ZupIT/charlescd/pull/441) Butler stabilization execution list -* [\#437](https://github.com/ZupIT/charlescd/pull/437) Add circle label on deployment -* [\#439](https://github.com/ZupIT/charlescd/pull/439) Add new ingress options butler v2 -* [\#434](https://github.com/ZupIT/charlescd/pull/434) use pgcrypto to generate uuid -* [\#429](https://github.com/ZupIT/charlescd/pull/429) No rollback when pod is shared -* [\#347](https://github.com/ZupIT/charlescd/pull/347) Change user password -* [\#433](https://github.com/ZupIT/charlescd/pull/433) create pg extension in case the database cant run uuid\_generate\_v4 -* [\#432](https://github.com/ZupIT/charlescd/pull/432) dont run cleanup query if no expired executions are found -* [\#427](https://github.com/ZupIT/charlescd/pull/427) Butler stabilization fix undeployment callback -* [\#431](https://github.com/ZupIT/charlescd/pull/431) dont log entire objects on deploy -* [\#405](https://github.com/ZupIT/charlescd/pull/405) Hotfix: user can not edit profile picture. -* [\#375](https://github.com/ZupIT/charlescd/pull/375) Validating if email is already registered. -* [\#420](https://github.com/ZupIT/charlescd/pull/420) Update execution status and notify moove on undeployment -* [\#417](https://github.com/ZupIT/charlescd/pull/417) CI Update of charts and changelog -* [\#415](https://github.com/ZupIT/charlescd/pull/415) alter migrations and entities -* [\#419](https://github.com/ZupIT/charlescd/pull/419) Fix repeated drules v2 -* [\#416](https://github.com/ZupIT/charlescd/pull/416) Fix incomingCircleId for callbacks -* [\#398](https://github.com/ZupIT/charlescd/pull/398) Hotfix: moove was allowing post and delete requests without token - -### 0.3.4-rc.2 \(21/08/2020\) - -* [\#387](https://github.com/ZupIT/charlescd/pull/387) Add link that opens Charles Documentation -* [\#408](https://github.com/ZupIT/charlescd/pull/408) Set components running to false on cleanup -* [\#406](https://github.com/ZupIT/charlescd/pull/406) fix butler callback url -* [\#404](https://github.com/ZupIT/charlescd/pull/404) Remove hardcoded user/pass -* [\#403](https://github.com/ZupIT/charlescd/pull/403) Fix butler undeployment return -* [\#401](https://github.com/ZupIT/charlescd/pull/401) fix callback url -* [\#400](https://github.com/ZupIT/charlescd/pull/400) notify moove on cd callback -* [\#399](https://github.com/ZupIT/charlescd/pull/399) Return the same dto for v1 and v2 deployments -* [\#372](https://github.com/ZupIT/charlescd/pull/372) CI Update of charts and changelog -* [\#396](https://github.com/ZupIT/charlescd/pull/396) Butler v2 undeploy tests -* [\#382](https://github.com/ZupIT/charlescd/pull/382) Fix empty deploy period -* [\#394](https://github.com/ZupIT/charlescd/pull/394) Butler stabilization autofix -* [\#380](https://github.com/ZupIT/charlescd/pull/380) V2 Undeployments -* [\#322](https://github.com/ZupIT/charlescd/pull/322) Improve tests -* [\#331](https://github.com/ZupIT/charlescd/pull/331) Validating circle segments -* [\#391](https://github.com/ZupIT/charlescd/pull/391) add new circles-sample tgz and change service port -* [\#389](https://github.com/ZupIT/charlescd/pull/389) Fixing Octopipe Host and Circles Sample port -* [\#373](https://github.com/ZupIT/charlescd/pull/373) Bump class-transformer from 0.2.3 to 0.3.1 in /butler -* [\#388](https://github.com/ZupIT/charlescd/pull/388) Butler stabilization lint fix -* [\#385](https://github.com/ZupIT/charlescd/pull/385) enable CORS on the moove and circle matcher routes via nginx -* [\#335](https://github.com/ZupIT/charlescd/pull/335) Issue modal user group layout -* [\#366](https://github.com/ZupIT/charlescd/pull/366) Fixing GitLab integration - -### 0.3.4-rc.1 \(13/08/2020\) - -* [\#386](https://github.com/ZupIT/charlescd/pull/386) added option for Octopipe to skip https validation on git requests -* [\#384](https://github.com/ZupIT/charlescd/pull/384) Changing circle sample's chart template value -* [\#327](https://github.com/ZupIT/charlescd/pull/327) Correction User Group Tab Layout -* [\#326](https://github.com/ZupIT/charlescd/pull/326) Creating Circle Sample. -* [\#381](https://github.com/ZupIT/charlescd/pull/381) Butler stabilization timeout - -### 0.3.3 \(12/08/2020\) - -* [\#379](https://github.com/ZupIT/charlescd/pull/379) Octopipe support for gitlab -* [\#363](https://github.com/ZupIT/charlescd/pull/363) Using Keycloak internal host for authentication -* [\#369](https://github.com/ZupIT/charlescd/pull/369) Merge default deployments -* [\#377](https://github.com/ZupIT/charlescd/pull/377) validate image url to match k8s format and length -* [\#376](https://github.com/ZupIT/charlescd/pull/376) validate unique components per on deploy - -### 0.3.2 \(07/08/2020\) - -* [\#368](https://github.com/ZupIT/charlescd/pull/368) extract functions -* [\#343](https://github.com/ZupIT/charlescd/pull/343) remove quiz app workflow -* [\#367](https://github.com/ZupIT/charlescd/pull/367) Fixing octopipe dockerfile path - -### 0.3.1 \(06/08/2020\) - -* [\#364](https://github.com/ZupIT/charlescd/pull/364) Prioritize requeue deployments, fix deployment validation test -* [\#193](https://github.com/ZupIT/charlescd/pull/193) Unify callback resources -* [\#354](https://github.com/ZupIT/charlescd/pull/354) Support for role authentication on AWS -* [\#338](https://github.com/ZupIT/charlescd/pull/338) Adding jsonformatter to missing localdatetime fields -* [\#334](https://github.com/ZupIT/charlescd/pull/334) Update resetVersion function to clean errors -* [\#333](https://github.com/ZupIT/charlescd/pull/333) Remove React.memo from some menus -* [\#302](https://github.com/ZupIT/charlescd/pull/302) Workspace Location Dropdown Issue -* [\#345](https://github.com/ZupIT/charlescd/pull/345) Provider connection test -* [\#362](https://github.com/ZupIT/charlescd/pull/362) Fix v2 butler unusedversions -* [\#350](https://github.com/ZupIT/charlescd/pull/350) Circle dashboard improvement -* [\#360](https://github.com/ZupIT/charlescd/pull/360) Tests mock server -* [\#361](https://github.com/ZupIT/charlescd/pull/361) Fix virtualservice consolidated value -* [\#359](https://github.com/ZupIT/charlescd/pull/359) Fix open sea deployment -* [\#298](https://github.com/ZupIT/charlescd/pull/298) Fix env string in butler -* [\#358](https://github.com/ZupIT/charlescd/pull/358) Spinnaker v2 integration -* [\#357](https://github.com/ZupIT/charlescd/pull/357) Removing intermitent unit test -* [\#355](https://github.com/ZupIT/charlescd/pull/355) Spinnaker v2 tests -* [\#330](https://github.com/ZupIT/charlescd/pull/330) Deployment dash history -* [\#356](https://github.com/ZupIT/charlescd/pull/356) Update components status on callback, more handler tests -* [\#352](https://github.com/ZupIT/charlescd/pull/352) Handler test example without testing pgboss -* [\#283](https://github.com/ZupIT/charlescd/pull/283) Circles Metrics Dashboard MVP -* [\#344](https://github.com/ZupIT/charlescd/pull/344) Stabilization v2 implement handler -* [\#346](https://github.com/ZupIT/charlescd/pull/346) Spinnaker connector v2 -* [\#278](https://github.com/ZupIT/charlescd/pull/278) Octopipe new deployer -* [\#316](https://github.com/ZupIT/charlescd/pull/316) Remove global state integration test -* [\#340](https://github.com/ZupIT/charlescd/pull/340) Stabilization: setup queue and handler service -* [\#336](https://github.com/ZupIT/charlescd/pull/336) Updating copyright -* [\#323](https://github.com/ZupIT/charlescd/pull/323) Updating Deployment Graphics Dashboard -* [\#329](https://github.com/ZupIT/charlescd/pull/329) Stabilization v2 modules config -* [\#328](https://github.com/ZupIT/charlescd/pull/328) Fixing moove deployment template and single-file. -* [\#308](https://github.com/ZupIT/charlescd/pull/308) Fix Deployment callback update -* [\#324](https://github.com/ZupIT/charlescd/pull/324) WIP: Stabilization entities -* [\#321](https://github.com/ZupIT/charlescd/pull/321) CI Update of charts and changelog - -### 0.3.0 \(22/07/2020\) - -* [\#251](https://github.com/ZupIT/charlescd/pull/251) Improve Circle Comparation Item options -* [\#307](https://github.com/ZupIT/charlescd/pull/307) Add access token signature validation -* [\#285](https://github.com/ZupIT/charlescd/pull/285) Correcting circle matcher on credentials layout -* [\#318](https://github.com/ZupIT/charlescd/pull/318) Adding unique constraint to artifact snapshots -* [\#314](https://github.com/ZupIT/charlescd/pull/314) New ingress options -* [\#300](https://github.com/ZupIT/charlescd/pull/300) UI improve use fetch -* [\#313](https://github.com/ZupIT/charlescd/pull/313) New butler deploy structure -* [\#287](https://github.com/ZupIT/charlescd/pull/287) Improving Button Rounded Component -* [\#286](https://github.com/ZupIT/charlescd/pull/286) Limiting release tag name length to 50 characters -* [\#276](https://github.com/ZupIT/charlescd/pull/276) update keycloak realm and moove admin user -* [\#248](https://github.com/ZupIT/charlescd/pull/248) Issue logout session -* [\#272](https://github.com/ZupIT/charlescd/pull/272) Feature Redirect Home Page -* [\#309](https://github.com/ZupIT/charlescd/pull/309) Bump lodash from 4.17.15 to 4.17.19 in /butler -* [\#250](https://github.com/ZupIT/charlescd/pull/250) Improve update deployment status -* [\#216](https://github.com/ZupIT/charlescd/pull/216) Make upsert modules -* [\#306](https://github.com/ZupIT/charlescd/pull/306) Update icon for Menu Item Hypotheses -* [\#303](https://github.com/ZupIT/charlescd/pull/303) Fix keycloak reset on chart upgrade -* [\#297](https://github.com/ZupIT/charlescd/pull/297) Preventing wrong parse of boolean string on butler -* [\#282](https://github.com/ZupIT/charlescd/pull/282) Update doc link -* [\#289](https://github.com/ZupIT/charlescd/pull/289) Upload coverage report -* [\#295](https://github.com/ZupIT/charlescd/pull/295) CI Update of charts and changelog - -### 0.2.14 \(14/07/2020\) - -* [\#294](https://github.com/ZupIT/charlescd/pull/294) Cd/changelog \[**closed**\] -* [\#288](https://github.com/ZupIT/charlescd/pull/288) Fix invalid date deploy metrics \[**bug**\]\[**moove**\]\[**ui**\] -* [\#291](https://github.com/ZupIT/charlescd/pull/291) Fixing changelog generation \[**closed**\] -* [\#290](https://github.com/ZupIT/charlescd/pull/290) Fixing changelog generation \[**closed**\] -* [\#202](https://github.com/ZupIT/charlescd/pull/202) Feature Metrics dashboard \[**docs**\]\[**ui**\] -* [\#241](https://github.com/ZupIT/charlescd/pull/241) fixing docker registry component tag search \[**TESTED**\]\[**bug**\]\[**moove**\]\[**ui**\]\[**villager**\] -* [\#198](https://github.com/ZupIT/charlescd/pull/198) Unify resources undeployment \[**TESTED**\]\[**butler**\]\[**moove**\] -* [\#263](https://github.com/ZupIT/charlescd/pull/263) Fixing paged JDBC queries \[**TESTED**\]\[**bug**\]\[**moove**\]\[**severity/critical**\] -* [\#280](https://github.com/ZupIT/charlescd/pull/280) Creating an API for deployment statistics \[**moove**\] -* [\#213](https://github.com/ZupIT/charlescd/pull/213) change response status when deployment already exists \[**TESTED**\]\[**butler**\] -* [\#192](https://github.com/ZupIT/charlescd/pull/192) Changing search deployed components query \[**moove**\] -* [\#239](https://github.com/ZupIT/charlescd/pull/239) Change virtual service template \[**butler**\] -* [\#190](https://github.com/ZupIT/charlescd/pull/190) Unify deployment resources \[**TESTED**\]\[**butler**\]\[**moove**\] -* [\#274](https://github.com/ZupIT/charlescd/pull/274) Workflow adjustments for zup environments \[**closed**\] -* [\#273](https://github.com/ZupIT/charlescd/pull/273) Changelog 0.2.13 \[**closed**\] -* [\#271](https://github.com/ZupIT/charlescd/pull/271) Adding gren release note generation \[**closed**\] -* [\#268](https://github.com/ZupIT/charlescd/pull/268) POC/Discussion: dont use nest dependency injection on simples tests \[**butler**\] -* [\#267](https://github.com/ZupIT/charlescd/pull/267) Identify is not working \[**TESTED**\]\[**bug**\]\[**ui**\] -* [\#240](https://github.com/ZupIT/charlescd/pull/240) Adding var env for redis ssl and defaulting its value to false \[**TESTED**\]\[**circle-matcher**\]\[**enhancement**\]\[**moove**\] -* [\#223](https://github.com/ZupIT/charlescd/pull/223) Fix/configure ssl database connection \[**TESTED**\]\[**butler**\]\[**enhancement**\] -* [\#259](https://github.com/ZupIT/charlescd/pull/259) Enhancement: adding gren to generate release notes. \[**enhancement**\] -* [\#269](https://github.com/ZupIT/charlescd/pull/269) Revert "Enhancement: adding gren to generate release notes." \[**closed**\] -* [\#266](https://github.com/ZupIT/charlescd/pull/266) Force coverage \[**butler**\]\[**circle-matcher**\]\[**moove**\]\[**octopipe**\]\[**ui**\]\[**villager**\] -* [\#265](https://github.com/ZupIT/charlescd/pull/265) Removing per module coverage \[**closed**\] -* [\#264](https://github.com/ZupIT/charlescd/pull/264) Revert "Temporarily disable codecov on butler" \[**closed**\] -* [\#261](https://github.com/ZupIT/charlescd/pull/261) Temporarily disable codecov on butler \[**butler**\]\[**octopipe**\] -* [\#260](https://github.com/ZupIT/charlescd/pull/260) Update .env with workspace env \[**ui**\] -* [\#249](https://github.com/ZupIT/charlescd/pull/249) Pass the workspaceId to \(circle matcher\) the identify request \[**bug**\]\[**ui**\] -* [\#257](https://github.com/ZupIT/charlescd/pull/257) CI Update of charts \[**closed**\] - -### 0.2.13 \(07/07/2020\) - -* [\#258](https://github.com/ZupIT/charlescd/pull/258) Update charlescd-prodrelease.yml \[**closed**\] -* [\#256](https://github.com/ZupIT/charlescd/pull/256) Sign automated commits of workflow \[**closed**\] -* [\#254](https://github.com/ZupIT/charlescd/pull/254) Fix workflow job \[**closed**\] -* [\#188](https://github.com/ZupIT/charlescd/pull/188) Octopipe retry callback \[**butler**\]\[**octopipe**\] -* [\#238](https://github.com/ZupIT/charlescd/pull/238) set hostname as cookie domain \[**bug**\]\[**ui**\] -* [\#187](https://github.com/ZupIT/charlescd/pull/187) Validation duplicate component \[**butler**\] -* [\#228](https://github.com/ZupIT/charlescd/pull/228) Fix unused components deployment phase \[**butler**\] -* [\#229](https://github.com/ZupIT/charlescd/pull/229) highlight opened module \[**bug**\]\[**ui**\] -* [\#135](https://github.com/ZupIT/charlescd/pull/135) UI proxy \[**bug**\]\[**ui**\] -* [\#237](https://github.com/ZupIT/charlescd/pull/237) Fixing codecov project threshold \[**closed**\] -* [\#236](https://github.com/ZupIT/charlescd/pull/236) Dummy changes for codecov \[**butler**\]\[**circle-matcher**\]\[**moove**\]\[**octopipe**\]\[**ui**\] -* [\#226](https://github.com/ZupIT/charlescd/pull/226) add callback dependency \[**bug**\]\[**ui**\] -* [\#227](https://github.com/ZupIT/charlescd/pull/227) Add UI build step \[**bug**\]\[**ui**\] -* [\#220](https://github.com/ZupIT/charlescd/pull/220) Add response after remove a CM \[**bug**\]\[**ui**\] -* [\#218](https://github.com/ZupIT/charlescd/pull/218) Improve behavior after close \[**bug**\]\[**ui**\] -* [\#219](https://github.com/ZupIT/charlescd/pull/219) When changing workspace name, tab name does not update. \[**bug**\]\[**ui**\] -* [\#215](https://github.com/ZupIT/charlescd/pull/215) add querystring to fetch builds \[**bug**\]\[**ui**\] -* [\#209](https://github.com/ZupIT/charlescd/pull/209) Strict eslint config and local vscode settings \[**butler**\] -* [\#217](https://github.com/ZupIT/charlescd/pull/217) Add build URL params utility \[**ui**\] -* [\#191](https://github.com/ZupIT/charlescd/pull/191) Adding prod update on release \[**closed**\] -* [\#211](https://github.com/ZupIT/charlescd/pull/211) Update environment vars process \[**bug**\]\[**enhancement**\]\[**ui**\] -* [\#208](https://github.com/ZupIT/charlescd/pull/208) Improve environment process \[**bug**\]\[**ui**\] -* [\#205](https://github.com/ZupIT/charlescd/pull/205) Enhancement: installation with minikube \[**enhancement**\]\[**installer**\] -* [\#199](https://github.com/ZupIT/charlescd/pull/199) "Undeploy" option is enabled on the menu of Default circle \[**bug**\]\[**ui**\] -* [\#200](https://github.com/ZupIT/charlescd/pull/200) Several requests to users on login \[**bug**\]\[**ui**\] -* [\#204](https://github.com/ZupIT/charlescd/pull/204) Check `src` prop before render member names' initials \[**bug**\]\[**ui**\] -* [\#196](https://github.com/ZupIT/charlescd/pull/196) Remove React.memo \[**bug**\]\[**ui**\] -* [\#185](https://github.com/ZupIT/charlescd/pull/185) Update git configuration name \[**bug**\]\[**ui**\] -* [\#183](https://github.com/ZupIT/charlescd/pull/183) Removing docs \[**docs**\] -* [\#170](https://github.com/ZupIT/charlescd/pull/170) UI test coverage improvement \[**ui**\] -* [\#167](https://github.com/ZupIT/charlescd/pull/167) Fix yaml error for octopipe deployment \[**closed**\] -* [\#157](https://github.com/ZupIT/charlescd/pull/157) Issue resolve security libs \[**bug**\]\[**ui**\] -* [\#158](https://github.com/ZupIT/charlescd/pull/158) create user other than root \[**bug**\]\[**ui**\] -* [\#155](https://github.com/ZupIT/charlescd/pull/155) Fix/when one module fail all fail \[**butler**\] -* [\#98](https://github.com/ZupIT/charlescd/pull/98) Improve UI mocks \[**enhancement**\]\[**ui**\] -* [\#159](https://github.com/ZupIT/charlescd/pull/159) Add quiz app actions \[**closed**\] -* [\#113](https://github.com/ZupIT/charlescd/pull/113) Fix find inactive circles with empty name \[**moove**\] -* [\#154](https://github.com/ZupIT/charlescd/pull/154) Trigger unit tests \[**closed**\] -* [\#153](https://github.com/ZupIT/charlescd/pull/153) Trigger unit tests \[**circle-matcher**\] -* [\#130](https://github.com/ZupIT/charlescd/pull/130) remove node-modules from repo \(old new-ui\) \[**ui**\] - -### 0.2.12 \(18/06/2020\) - -### 0.2.11 \(09/06/2020\) - -### v0.2.10 \(03/06/2020\) - -### v0.2.9 \(03/06/2020\) - -### v0.2.8 \(03/06/2020\) - -### 0.2.7 \(03/06/2020\) - -### 0.2.6 \(03/06/2020\) - -### 0.2.5 \(03/06/2020\) - -### 0.2.4 \(02/06/2020\) - -### 0.2.3 \(02/06/2020\) - -### 1.0.1-beta.4 \(06/05/2020\) - -* Removed rollback for octopipe deployments. This will be butler's responsability \(@lucasbfernandes in \#28 \) - -### 1.0.1-beta.3 \(06/05/2020\) - -* Add resource verification and unit test structure for octopipe \(@maycommit in \#26\) - -### 1.0.1-beta.2 \(04/05/2020\) - -* Handle first pipeline error and stop execution \(@maycommit in \#12\) diff --git a/content/en/FAQ/_index.md b/content/en/FAQ/_index.md index c9559812..ef304c84 100644 --- a/content/en/FAQ/_index.md +++ b/content/en/FAQ/_index.md @@ -1,4 +1,4 @@ --- title: FAQ -weight: 88 +weight: 92 --- \ No newline at end of file diff --git a/content/en/Forum.md b/content/en/Forum.md new file mode 100644 index 00000000..efabdaff --- /dev/null +++ b/content/en/Forum.md @@ -0,0 +1,4 @@ +--- +title: Forum +weight: 99 +--- \ No newline at end of file diff --git a/content/en/Get Started/Creating your first module/Configuring your module to propagate the circle's Id.md b/content/en/Get Started/Creating your first module/Configuring your module to propagate the circle's Id.md index 1634bb14..3d92e882 100644 --- a/content/en/Get Started/Creating your first module/Configuring your module to propagate the circle's Id.md +++ b/content/en/Get Started/Creating your first module/Configuring your module to propagate the circle's Id.md @@ -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. --- --- diff --git a/content/en/Get Started/Creating your first module/How to configure Chart template.md b/content/en/Get Started/Creating your first module/How to configure Chart template.md index c51c1878..7c54032b 100644 --- a/content/en/Get Started/Creating your first module/How to configure Chart template.md +++ b/content/en/Get Started/Creating your first module/How to configure Chart template.md @@ -1,6 +1,7 @@ --- title: How to configure Chart template weight: 37 +description: 'In this section, you will find how to configure chart template.' --- --- diff --git a/content/en/Get Started/Creating your first module/_index.md b/content/en/Get Started/Creating your first module/_index.md index 5d85d64e..e9300204 100644 --- a/content/en/Get Started/Creating your first module/_index.md +++ b/content/en/Get Started/Creating your first module/_index.md @@ -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) diff --git a/content/en/Get Started/Defining a Workspace/Circle Matcher.md b/content/en/Get Started/Defining a Workspace/Circle Matcher.md index e11ad090..9d4205a7 100644 --- a/content/en/Get Started/Defining a Workspace/Circle Matcher.md +++ b/content/en/Get Started/Defining a Workspace/Circle Matcher.md @@ -1,6 +1,7 @@ --- title: Circle Matcher weight: 26 +description: 'In this section, you will find information about the circle matcher.' --- --- diff --git a/content/en/Get Started/Defining a Workspace/Deploy environment.md b/content/en/Get Started/Defining a Workspace/Deploy environment.md index 20848e1a..4aa8aa1d 100644 --- a/content/en/Get Started/Defining a Workspace/Deploy environment.md +++ b/content/en/Get Started/Defining a Workspace/Deploy environment.md @@ -1,6 +1,7 @@ --- title: Deploy environment weight: 24 +description: 'In this section, you will find information about the deployment environment.' --- --- diff --git a/content/en/Get Started/Defining a Workspace/Docker registry.md b/content/en/Get Started/Defining a Workspace/Docker registry.md index e245e9df..c40d14ac 100644 --- a/content/en/Get Started/Defining a Workspace/Docker registry.md +++ b/content/en/Get Started/Defining a Workspace/Docker registry.md @@ -1,6 +1,7 @@ --- title: Docker registry weight: 22 +description: 'In this section, you will find information about docker registry.' --- --- diff --git a/content/en/Get Started/Defining a Workspace/Webhooks.md b/content/en/Get Started/Defining a Workspace/Webhooks.md index 0b6be920..69e86cb1 100644 --- a/content/en/Get Started/Defining a Workspace/Webhooks.md +++ b/content/en/Get Started/Defining a Workspace/Webhooks.md @@ -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: @@ -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 @@ -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: diff --git a/content/en/Get Started/Defining a Workspace/_index.md b/content/en/Get Started/Defining a Workspace/_index.md index 42b73e54..9676e3da 100644 --- a/content/en/Get Started/Defining a Workspace/_index.md +++ b/content/en/Get Started/Defining a Workspace/_index.md @@ -1,6 +1,7 @@ --- title: Defining a Workspace weight: 20 +description: 'In this section, you will find how to define your workspace.' --- --- diff --git a/content/en/Get Started/First Deploy.md b/content/en/Get Started/First Deploy.md index c99fa697..b8f560be 100644 --- a/content/en/Get Started/First Deploy.md +++ b/content/en/Get Started/First Deploy.md @@ -1,6 +1,7 @@ --- title: First Deploy weight: 42 +description: 'In this section, you will find how to make your first deployment.' --- --- diff --git a/content/en/Get Started/Installing Charles/Installing via Helm.md b/content/en/Get Started/Installing Charles/Installing via Helm.md index 1b6ea824..42bc07a2 100644 --- a/content/en/Get Started/Installing Charles/Installing via Helm.md +++ b/content/en/Get Started/Installing Charles/Installing via Helm.md @@ -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 -n +heml install --create-namespace -n 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: diff --git a/content/en/Get Started/Installing Charles/Your first Charles' access.md b/content/en/Get Started/Installing Charles/Your first Charles' access.md index 0c145f27..26a406fb 100644 --- a/content/en/Get Started/Installing Charles/Your first Charles' access.md +++ b/content/en/Get Started/Installing Charles/Your first Charles' access.md @@ -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.' --- --- diff --git a/content/en/Get Started/Installing Charles/_index.md b/content/en/Get Started/Installing Charles/_index.md index df98e71a..9ad6a73e 100644 --- a/content/en/Get Started/Installing Charles/_index.md +++ b/content/en/Get Started/Installing Charles/_index.md @@ -1,6 +1,7 @@ --- title: Installing Charles weight: 4 +description: 'In this section, you will find how to install Charles.' --- --- @@ -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>= 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 diff --git a/content/en/Get Started/Integrating Charles to your Ci.md b/content/en/Get Started/Integrating Charles to your Ci.md new file mode 100644 index 00000000..8c9a4975 --- /dev/null +++ b/content/en/Get Started/Integrating Charles to your Ci.md @@ -0,0 +1,300 @@ +--- +title: Integrating Charles to your Ci +weight: 46 +description: >- + In this section, you will find the steps to configure Charles in your + pipeline. +--- + +--- + +## Why integrate Charles into your Continuous Delivery pipeline? + +Integrations speed up your team and the Continuous Delivery \(CD\) allows you to take the code stored in the repository and deliver it continuously to production \(or any other environment\). + +Setting up a CD creates a quick and effective process to put your product to market before the competition, and it allows your team to launch new features and bug fixes in order to make your client happy with the result. + +## Prerequisites + +To integrate Charles C.D. into your pipeline, you will need to know some information. Check out below what they are and how to get them: + +* **`x-charles-token`**: It is a hash created when a systemic token is generated. If it has lost its value, it is possible to regenerate this information. **See more details in the systemic token section.** +* **`x-workspace-id`**: This Id represents the workspace where your environment settings and circles are. [**Copy the ID in the existing menu when viewing the workspace.**](creating-your-first-module/#how-to-obtain-the-component-identifier) +* **`module.id`**: This Id represents the project registered with Charles. [**Copy the ID in the existing menu when viewing the module.**](creating-your-first-module/#how-do-i-get-my-module-identifier) +* **`component.id`**: This identifier represents the component and it [**can be found in the module details**](creating-your-first-module/#how-to-obtain-the-component-identifier). +* **`component.version`**: It is where you inform the name of the tag of your component's image. +* **`component.artifact`**: This is the name of the artifact. For example: {YOUR-REGISTRY-URL}-{YOUR-IMAGE-NAME}:{YOUR-TAG-NAME}. +* **`circle.id`**: This Id represents the circle registered in Charles. [**Copy the ID in the existing menu when viewing the circle.**](../../../reference/circles#how-to-get-my-circles-identifier) +* **`build.id`**: This Id represents the deployment's composition created in the first request mentioned below. This information is returned as the value of the ID key in the JSON format response. + +## How to integrate? + +You can do this integration using a **systemic token** and a sequence of HTTPS requests. See below the two steps: + +{% api-method method="post" host="https://charles.info.example" path="/moove/v2/builds/compose" %}} +{% api-method-summary %}} +Step 1: Create deployment composition \(aka build\) +{% endapi-method-summary %}} + +{% api-method-description %}} +This request creates a composition that represents your release in a circle. You can mix two different versions with several components. +{% endapi-method-description %}} + +{% api-method-spec %}} +{% api-method-request %}} +{% api-method-headers %}} +{% api-method-parameter name="x-charles-token" type="string" required=false %}} +Token. +{% endapi-method-parameter %}} + +{% api-method-parameter name="x-workspace-id" type="string" required=true %}} +Workspace's identifier. +{% endapi-method-parameter %}} +{% endapi-method-headers %}} + +{% api-method-body-parameters %}} +{% api-method-parameter name="releaseName" type="string" required=true %}} +Release name. +{% endapi-method-parameter %}} + +{% api-method-parameter name="modules" type="array" required=true %}} +List of modules. +{% endapi-method-parameter %}} + +{% api-method-parameter name="module" type="object" required=true %}} +An object that represents the modules. +{% endapi-method-parameter %}} + +{% api-method-parameter name="module.id" type="string" required=true %}} +Module's identifier. +{% endapi-method-parameter %}} + +{% api-method-parameter name="module.components" type="array" required=true %}} +List of components that composes the deployment. +{% endapi-method-parameter %}} + +{% api-method-parameter name="component" type="object" required=true %}} +Module's component object. +{% endapi-method-parameter %}} + +{% api-method-parameter name="component.id" type="string" required=true %}} +Component's identifier. +{% endapi-method-parameter %}} + +{% api-method-parameter name="component.version" type="string" required=true %}} +Image tag name. +{% endapi-method-parameter %}} + +{% api-method-parameter name="component.artifact" type="string" required=true %}} +Artifact name. For example {YOUR-REGISTRY-URL}-{YOUR-IMAGE-NAME}:{YOUR-TAG-NAME} +{% endapi-method-parameter %}} +{% endapi-method-body-parameters %}} +{% endapi-method-request %}} + +{% api-method-response %}} +{% api-method-response-example httpCode=201 %}} +{% api-method-response-example-description %}} + +{% endapi-method-response-example-description %}} + +``` +{ + "id":"0000053e-14cc-4bae-85df-364a70eb0000", + "author":{ + "id":"00000afe-aa7a-4536-be1b-34eaad4c0000", + "name":"Charles Admin", + "email":"admin@email.com" + }, + "createdAt":"2021-04-19 12:08:54", + "features":[ + { + "id":"17c28af1-d7bf-4c8c-9895-ab4944fb5a9e", + "name":"release-test-0.1", + "branchName":"release-test-0.1", + "authorId":"00000afe-aa7a-4536-be1b-34eaad4c0000", + "authorName":"Charles Admin", + "modules":[ + { + "id":"00000df6-6c34-4410-9bea-77ee56900000", + "name":"ZupIT/charlescd", + "gitRepositoryAddress":"https://github.com/zupit/charlescd", + "helmRepository":"{HELM_URL}", + "createdAt":"2020-11-20 13:11:31", + "components":[ + { + "id":"00000143-8208-4f95-9986-10b909c00000", + "name":"charlescd-ui", + }, + { + "id":"000009ea-ada9-40fd-bddf-51c921200000", + "name":"charlescd-moove" + } + ] + } + ], + "createdAt":"2021-04-19 12:08:54", + "branches":[ + "https://github.com/zupit/charlescd/tree/release-test-0.1" + ] + } + ], + "tag":"release-test-0.1", + "status":"BUILT", + "deployments":[] +} +``` +{% endapi-method-response-example %}} +{% endapi-method-response %}} +{% endapi-method-spec %}} +{% endapi-method %}} + +Check out an example of the request in **CURL** format: + +```text +curl 'https://charlescd.api.com/moove/v2/builds/compose' \ + -H 'x-workspace-id: 000009c4-9f58-4236-9936-ffcb04b00000' \ + -H 'x-charles-token: {YOUR_SYSTEM_TOKEN}' \ + -H 'content-type: application/json' \ + --data-binary '{ + "modules":[ + { + "id":"00000f6-6c34-4410-9bea-77ee56900000", + "components":[ + { + "id":"000009ea-ada9-40fd-bddf-51c921200000", + "version":"{YOUR-TAG-NAME}", + "artifact":"{YOUR-REGISTRY-URL}-{YOUR-IMAGE-NAME}:{YOUR-TAG-NAME}" + }, + { + "id":"00000143-8208-4f95-9986-10b909c00000", + "version":"{YOUR-TAG-NAME}", + "artifact":"{YOUR-REGISTRY-URL}-{YOUR-IMAGE-NAME}:{YOUR-TAG-NAME}" + } + ] + } + ], + "releaseName":"release-test-0.1" +}' +``` + + + +{% api-method method="post" host="https://charles.info.example" path="/moove/v2/deployments" %}} +{% api-method-summary %}} +Step 2: Deploy the release created in the previous request in a circle. +{% endapi-method-summary %}} + +{% api-method-description %}} +This request implements the composite release, previously created in a circle. +{% endapi-method-description %}} + +{% api-method-spec %}} +{% api-method-request %}} +{% api-method-headers %}} +{% api-method-parameter name="x-workspace-id" type="string" required=true %}} +Workspace's Identifier. +{% endapi-method-parameter %}} + +{% api-method-parameter name="x-charles-token" type="string" required=true %}} +Token. +{% endapi-method-parameter %}} +{% endapi-method-headers %}} + +{% api-method-body-parameters %}} +{% api-method-parameter name="circleId" type="string" required=true %}} +Identifier of the circle that will receive the deployment. +{% endapi-method-parameter %}} + +{% api-method-parameter name="buildId" type="string" required=true %}} +Build identifier created in the previous request.Identificador do build criado na requisição anterior. +{% endapi-method-parameter %}} +{% endapi-method-body-parameters %}} +{% endapi-method-request %}} + +{% api-method-response %}} +{% api-method-response-example httpCode=201 %}} +{% api-method-response-example-description %}} + +{% endapi-method-response-example-description %}} + +``` +{ + "id":"0000070c-1ed8-4d33-ad91-04ea50100000", + "author":{ + "id":"00000afe-aa7a-4536-be1b-34eaad400000", + "name":"Charles Admin", + "email":"admin@email.com" + }, + "createdAt":"2021-04-19 12:08:54", + "deployedAt":null, + "circle":{ + "id":"000006b3-6e04-4c48-aca9-c9297e100000", + "name":"Circle name", + "author":{ + "id":"00000afe-aa7a-4536-be1b-34eaad400000", + "name":"Charles Admin", + "email":"admin@email.com" + }, + "createdAt":"2021-04-15 17:25:56", + "matcherType":"REGULAR", + "rules":{ + "type":"CLAUSE", + "clauses":[ + { + "type":"RULE", + "content":{ + "key":"email", + "value":[ + "test" + ], + "condition":"EQUAL" + } + } + ], + "logicalOperator":"OR" + }, + "importedAt":null, + "importedKvRecords":0 + }, + "buildId":"0000053e-14cc-4bae-85df-364a70e00000", + "tag":"{IMAGE_TAG_NAME}", + "status":"DEPLOYING", + "artifacts":[ + { + "id":"00000652-e4fb-41c7-a6da-33bee0600000", + "artifact":"{YOUR-REGISTRY-URL}-{YOUR-IMAGE-NAME}:{YOUR-TAG-NAME}", + "version":"{IMAGE_TAG_NAME}", + "createdAt":"2021-04-19 12:08:54", + "componentName":"charlescd-ui", + "moduleName":"ZupIT/charlescd" + }, + { + "id":"000000d2-4a50-408a-be38-c8e932200000", + "artifact":"{YOUR-REGISTRY-URL}-{YOUR-IMAGE-NAME}:{YOUR-TAG-NAME}", + "version":"{IMAGE_TAG_NAME}", + "createdAt":"2021-04-19 12:08:54", + "componentName":"charlescd-moove", + "moduleName":"ZupIT/charlescd" + } + ] +} +``` +{% endapi-method-response-example %}} +{% endapi-method-response %}} +{% endapi-method-spec %}} +{% endapi-method %}} + +Check out a **CURL** format example: + +```text +curl 'https://charlescd.api.com/moove/v2/deployments' \ + -H 'x-workspace-id: 000009c4-9f58-4236-9936-ffcb04b00000' \ + -H 'x-charles-token: {YOUR_SYSTEM_TOKEN}' \ + -H 'content-type: application/json' \ + --data-binary '{ + "buildId":"82a7d53e-14cc-4bae-85df-364a70eb9df7", + "circleId":"1611b6b3-6e04-4c48-aca9-c9297e18d66d" +}' +``` + +You can follow up on the deployments' completion using [**Webhooks**](defining-a-workspace/web). diff --git a/content/en/Get Started/Optional configuration/Authentication with private registry.md b/content/en/Get Started/Optional configuration/Authentication with private registry.md index ef024be8..2d0fd62b 100644 --- a/content/en/Get Started/Optional configuration/Authentication with private registry.md +++ b/content/en/Get Started/Optional configuration/Authentication with private registry.md @@ -1,6 +1,9 @@ --- title: Authentication with private registry weight: 13 +description: >- + In this section, you will find more information about authentication with a + private registry. --- --- diff --git a/content/en/Get Started/Optional configuration/Configuring your ingress.md b/content/en/Get Started/Optional configuration/Configuring your ingress.md index 7eec77a7..bc352619 100644 --- a/content/en/Get Started/Optional configuration/Configuring your ingress.md +++ b/content/en/Get Started/Optional configuration/Configuring your ingress.md @@ -1,18 +1,19 @@ --- title: Configuring your ingress weight: 15 +description: 'In this section, you will find how to configure your ingress.' --- --- If you want to use your own ingress instead of the one provided with Charles' installation, follow the next step: -* On`charlescd/install/helm-chart/values.yaml`, change the **`enabled`** value to **`false`**, like the example below: +* On`charlescd/install/helm-chart/values.yaml`, change the **`enabled`** value to **`true`**, like the example below: ```text -host: charles.info.example +ingress: + enabled: true + host: charles.info.example class: nginx - controller: - nginx: - enabled: false + ``` diff --git a/content/en/Get Started/Optional configuration/Defining the Identity Manager.md b/content/en/Get Started/Optional configuration/Defining the Identity Manager.md index 9c9ea6f4..82309419 100644 --- a/content/en/Get Started/Optional configuration/Defining the Identity Manager.md +++ b/content/en/Get Started/Optional configuration/Defining the Identity Manager.md @@ -1,7 +1,7 @@ --- title: Defining the Identity Manager weight: 17 -description: You will find information about Identity Manager +description: 'In this section, you will find information about Identity Manager.' --- --- diff --git a/content/en/Get Started/Using Circles.md b/content/en/Get Started/Using Circles.md index b4add6b8..7a0b2017 100644 --- a/content/en/Get Started/Using Circles.md +++ b/content/en/Get Started/Using Circles.md @@ -1,6 +1,7 @@ --- title: Using Circles weight: 44 +description: 'In this section, you will find more information on how to use circles.' --- --- diff --git a/content/en/Guides/Use Cases.md b/content/en/Guides/Use Cases.md index 48de8e8a..00f5ef68 100644 --- a/content/en/Guides/Use Cases.md +++ b/content/en/Guides/Use Cases.md @@ -1,8 +1,8 @@ --- title: Use Cases -weight: 84 +weight: 88 description: >- - This section describes through an example how to make a deployment of an + In this section, you will find an example on how to make a deployment of an application via Charles. --- diff --git a/content/en/Guides/_index.md b/content/en/Guides/_index.md index 2a8a4949..a64804ea 100644 --- a/content/en/Guides/_index.md +++ b/content/en/Guides/_index.md @@ -1,4 +1,4 @@ --- title: Guides -weight: 85 +weight: 89 --- \ No newline at end of file diff --git a/content/en/Key concepts.md b/content/en/Key concepts.md index 89494bab..85d6e876 100644 --- a/content/en/Key concepts.md +++ b/content/en/Key concepts.md @@ -14,12 +14,6 @@ description: >- For example, it is possible to [**create a circle**](https://docs.charlescd.io/reference/circles#how-to-create-circles) of engineers from the north of Brazil, another one from the southeast, and the third one with all Brazilian engineers. Based on the client's segmentation, it is possible to make a variety of deployment logic. -## **Hypothesis** - -These are [**registered alternatives**](https://docs.charlescd.io/reference/hyphotesis) on the platform to solve a problem or to validate changes on the application integrated on Charles. - -Hypothesis can have features that are directly related to modules and/or projects that were previously registered in the workspace. - ## **Circle Matcher** It is an HTTP service that allows you to identify which segmentation the user belongs to, based on predefined logic rules. For that, Circle Matcher receives a JSON request with the user's attributes and also the circle identifier of which group user belongs. diff --git a/content/en/Migration from 0.7.1 version to 1.0.0.md b/content/en/Migration from 0.7.1 version to 1.0.0.md new file mode 100644 index 00000000..3685b1c5 --- /dev/null +++ b/content/en/Migration from 0.7.1 version to 1.0.0.md @@ -0,0 +1,94 @@ +--- +title: Migration from 0.7.1 version to 1.0.0 +weight: 100 +description: >- + In this section, you will find how to migrate from Charles 0.7.1 version to + the 1.0.0 one. +--- + +--- + +The new CharlesCD's 1.0.0 version brought more reliability in deployments with [**Operator**](reference/preparing-your-deployment), however, Helm finds some difficulties to add the necessary elements to Operator in an existing installation, like **Custom Resources Definition** \(CRDs\). To change that, you need to follow some steps for a more functional update. See below: + +### **Step 1: Uninstall CharlesCD \(installation with Helm\):** + +{{% alert color="warning" %}} +This step **removes everything**, including the database. If your database is **external** or if it is **inside Kubernetes**, your data won't be erased, because the volumes persist even after the Helm is uninstalled. +{{% /alert %}} + +To uninstall, run the following command: + +```text +helm uninstall -n +``` + +### **Step 2: Install CharlesCD using Helm:** + +Now, install CharlesCD via _Helm._ Use your _Values_ file of the original installation validating for each manifest if there were new values addition. + +{{% alert color="info" %}} +You need to validate making a diff of your installation file and the available in CharlesCD's repository. +{{% /alert %}} + +To install, run the command below: + +```text + +helm install -n ./install/helm-chart/ -f ./install/helm-chart/meu-values.yaml + +``` + +### **Step 3: Update the deployment configuration for each Workspace:** + +After installing, you can access CharlesCD with your admin user. It is necessary to do a new deployment configuration for your workspaces. See how to this configuration in [**Deployment Configuration**](reference/preparing-your-deployment#deployment-configuration). + +### **Step 4: Override the release in each active circle:** + +Now, you need to override the release with the latest release where each active circle deployment has been made. See how to perform version overrides in [**'How to create Charles release?**](reference/releases#how-to-create-releases-with-charles)'. + +{{% alert color="info" %}} +Don't worry about the override release. CharlesCD will recognize all manifest it needs to take care of. +{{% /alert %}} + +### **Step 5: Remove all the manifests where CharlesCD made the deployments before the 1.0.0 version:** + +You need to remove all manifests CharlesCD made deployment before the 1.0.0 version. When deleting these old manifests, the Operator can recreate them, and then your application will work in less than 30 seconds. The unavailability is on average 5 seconds. + +Follow the steps to remove: + +1. You need to know all existing manifests in the namespace of your workspace that can be deleted. For that, run the following command by workspace: + +```text +kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n -o go-template --template '{{range .items}}{{.kind}}/{{.metadata.name}} {{.metadata.creationTimestamp}}{{"\n"}}{{end}}' 2>&1 | grep -i -v "Warn" | grep -i -v "Deprecat" | awk '$2 <= "'$(date -d '1 hour ago' -Ins --utc | sed 's/+0000/Z/')'" { print $1 }' | grep -i -v "ConfigMap/istio" | grep -i -v "ConfigMap/kube" | grep -i -v "Secret/default" | grep -i -v "ServiceAccount/default" + +``` + +This command shows a manifest list related to your workspaces older than 1 hour, which means everything that has not been deployed in the namespace of your Kubernetes. See the example below: + +![](//image%20%2822%29.png) + +2. If there aren't applied manifests outside CharlesCD, a **Nginx** can work as an ingress for your application, for example. Add the command: + +```text + | grep -i -v "PALAVRA_CHAVE" +``` + +See how the Nginx example works: + +```text + +kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n charlesapp -o go-template --template '{{range .items}}{{.kind}}/{{.metadata.name}} {{.metadata.creationTimestamp}}{{"\n"}}{{end}}' 2>&1 | grep -i -v "Warn" | grep -i -v "Deprecat" | awk '$2 <= "'$(date -d '1 hour ago' -Ins --utc | sed 's/+0000/Z/')'" { print $1 }' | grep -i -v "ConfigMap/istio" | grep -i -v "ConfigMap/kube" | grep -i -v "Secret/default" | grep -i -v "ServiceAccount/default" | grep -i -v "nginx" + +``` + +This command removes the manifests list and after you will the complete list to remove the cluster. + +3. When you have this manifests list, delete all the manifests and the rest will be executed by the Operator. Run the command below: + +```text +kubectl delete -n +``` + +{{% alert color="success" %}} +Done! The update process is complete :\) +{{% /alert %}} diff --git a/content/en/Overview.md b/content/en/Overview.md index 40b9a397..208a537c 100644 --- a/content/en/Overview.md +++ b/content/en/Overview.md @@ -1,9 +1,7 @@ --- title: Overview weight: 1 -description: >- - In this section, we will help you find all the basic information about - Charles. +description: 'In this section, you will find all the basic information about Charles.' --- --- @@ -52,11 +50,12 @@ In order to user Charles, it is necessary to fulfill some requirements: The platform was built using a microservice approach, and it has the following modules: -![](//arquitetura-charles-0.7.0.jpg) +![](//arquitetura-charlesc.d.jpg) -* `charlescd-ui:` mirrors on front-end the workspace configuration, users, modules, hypothesis and boards. It is the platform graphical interface. +* `charlescd-ui:` mirrors on the front-end the workspace configuration, users, modules, hypothesis, and boards. It is the platform graphical interface. * `charles-moove:` manages workspaces, users, modules, hypothesis, and boards. It is the whole platform structure. * `charles-butler:` orchestrates and manages releases and deploys. * `charles-circle-matcher:`manages all created circles, and points out which circle each user belongs to, based on their characteristics. -* `charlescd-compass`: data providers integration, make metrics analysis, and execute configurable actions. -* `charlescd-hermes`: notifies external services previously subscribed of deploy and undeploy events. +* `charlescd-compass`: data providers integration, make metrics analysis and execute configurable actions. +* `charlescd-hermes`: notifies external services previously subscribed of deploy and undeploy events. +* `charlescd-gate`: control users' permissions according to the resources available in Charles' APIs. diff --git a/content/en/Reference/Cd Configuration.md b/content/en/Reference/Cd Configuration.md deleted file mode 100644 index 0c58ecfd..00000000 --- a/content/en/Reference/Cd Configuration.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Cd Configuration -weight: 51 -description: 'In this section, you''ll find how to make the CD configuration' ---- - ---- - -## Why do you have to configure the CD? - -This configuration is necessary to point to Charles which CD tool you use to make deploys in your cluster. It is also important to mention that you have to provide your git repository token that contains the [**helm templates.** ](../../../get-started/creating-your-first-module/how-to-configure-chart-template#what-is-helm) - -At this moment, Charles is able to use CharlesCD \(Octopipe\). - -{{% alert color="info" %}} -CharlesCD is always evolving, so there's a roadmap that is in constant update, which means that we're looking for more CD tools integrations. -{{% /alert %}} - -## How to configure? - -Charles uses a proper architecture for Continuous Deployment \(CD\) and that makes it fits in the environment chosen by you. These tools are used to run the Kubernetes manifestos on a configured cluster and to authenticate with a variety of cloud providers \(AWS, GCP, Azure\). - -To make this configuration, you will use CharlesCD. Now, it is necessary to fill some fields with the authentication for the cluster. - -* **CharlesCD**: behind the scenes, there is a light and low-cost tool developed by Charles Team that does the deployment. - -To register, follow the next steps: - -1. On Charles' homepage, select **Settings** in the lower-left corner; -2. Click on **Credentials;** -3. Click on **Add CD Configuration;** -4. Select the option **CharlesCD**, which will depend on which system you use. - -## Using CharlesCD - -Fill the following fields: - -1. **Name:** configuration name that it will be created; -2. **Namespace:** defines the namespace that will be used on Kubernetes cluster deploys. You have to create your namespace, once Charles does not do it; -3. **Git provider**: defines the git provider to be used \(**GitHub** or **GitLab**\); -4. **Git token:** insert an authentication token that has access to the git repository where your [**Helm templates**](../../get-started/creating-your-first-module/how-to-configure-chart-template) are stored \(they will be used during the deployment of your [**application**](../../get-started/creating-your-first-module/)\). If your Git Provider is **GitHub**, "_repo_" permission is required. Otherwise, configure the accesses in **GitLab**: "API" and "_read\_repository_". -5. Select a **manager** to associate with the CD configuration. The options are **Default**, **EKS,** and **Others.** - -### **Default** - -This option must be used when the application’s cluster is the same where CharlesCD is installed. This way it is not necessary to create an extra authentication mechanism. - -### **EKS** - -For a cluster managed by EKS \(Elastic Kubernetes Service\), you only have to select the option and fill the following fields: - -1. **AWS SID:** Statement ID**;** -2. **AWS Secret:** Access key to EKS cluster; -3. **AWS Region:** Region where the EKS cluster is installed; -4. **AWS Cluster Name:** EKS’s cluster name. - -### **Others** - -For the other cloud providers, we use a simpler approach, that only a few _kubeconfig_ fields must be used. Here they are: - -1. **Host:** Cluster URL's access; -2. **Client Certificate:** _kubeconfig_ "client-certificate-data" field; -3. **Client Key:** _kubeconfig_ "client-key-data" field; -4. **CA Data:** _kubeconfig_ "certificate-authority-data" field. - -All the information provided above is encrypted by Charles. Once this process is done, it is possible to associate the configuration in modules and after that deploy versions of them. diff --git a/content/en/Reference/Circle Matcher.md b/content/en/Reference/Circle Matcher.md index 73f00031..295d6927 100644 --- a/content/en/Reference/Circle Matcher.md +++ b/content/en/Reference/Circle Matcher.md @@ -1,6 +1,6 @@ --- title: Circle Matcher -weight: 49 +weight: 51 description: >- In this section, you will find more information about how Circle Matcher works on Charles. @@ -28,15 +28,11 @@ Once you start using the interface, it's possible to notice that there are two w ![](//circle-matcher%20%281%29.png) -The two ways to make this validation are: +The way to make this validation are: -* **Default:** in this option, you add manually keys and values to define the characteristics of a user test. Based on that, once you run the **Try**, **you will receive all the circles related to this user.** +You add manually keys and values to define the characteristics of a user test. Based on that, once you run the **Try**, **you will receive all the circles related to this user.** -![Circle identification with Default option.](//circle-matcher-default%20%282%29.gif) - -* **JSON:** similar to the default option, with the difference that here you can copy and paste in **payload field** a **JSON** of your productive environment instead of adding manually. - -![Circle identification with JSON option. ](//circle-matcher-json%20%282%29.gif) +![](//circle-matcher.gif) {{% alert color="warning" %}} If you pass some information that is off the preconfigured logic conditions in the circles, the system will return indicating that the user is on the **Default** circle, on the standard version of your application. diff --git a/content/en/Reference/Circles.md b/content/en/Reference/Circles.md index f05fc148..93295b69 100644 --- a/content/en/Reference/Circles.md +++ b/content/en/Reference/Circles.md @@ -1,6 +1,6 @@ --- title: Circles -weight: 47 +weight: 49 description: >- In this section, you will find more information about how to use circles on Charles. @@ -22,7 +22,7 @@ To create a circle, you just have to follow these steps: **1.** Click on Create Circle. **2.** Give a name to your circle. -**3.** Define a segmentation. +**3.** Define segmentation. **4.** \[Optional\] Implement a release. ## What is segmentation? @@ -43,7 +43,7 @@ Segmentations have the following fields that you have to fill: #### Key and value -The **key** and **value** fields are established based on the information that will be sent in the request, that [**identifies the circles**](../../get-started/defining-a-workspace/circle-matcher) where your user belongs to. For example, the payload below could represent the information you have about a client: +The **key** and **value** fields are established based on the information that will be sent in the request, which [**identifies the circles**](../../get-started/defining-a-workspace/circle-matcher) where your user belongs to. For example, the payload below could represent the information you have about a client: ```text { @@ -196,8 +196,8 @@ We will give an example of a specific scenario where your environment has two se So, the redirect logic using **`x-circle-id`** will be: -1. The user sends to the header: `x-circle-id="QA Circle"`. On this circle, the request will be redirected to a **X version** of the service on **Application A** and the **Y version** of the service on **Application B**. -2. The user sends to the header: `x-circle-id=”Dev Circle”`. On this circle, the request will be redirected to the **Z version** of the service on **Application A** and **Z version** of the service on **Application B.** +1. The user sends to the header: `x-circle-id="QA Circle"`. In this circle, the request will be redirected to an **X version** of the service on **Application A** and the **Y version** of the service on **Application B**. +2. The user sends to the header: `x-circle-id=”Dev Circle”`. In this circle, the request will be redirected to the **Z version** of the service on **Application A** and **Z version** of the service on **Application B.** ![Example of Application 1 and Application 2](//versoes_diferentes_na_minha_release_ii_eng%20%281%29.png) @@ -219,7 +219,7 @@ Let's supposed that, to make a request to identify a user, an ID 8756 is returne ![](//assets%2F-LzaqMnnQTjZO7P6hApv%2F-M7yHDr-VbK_tS0wCwGh%2F-M7yIFBInQf9HruABKEt%2FScreen_Shot_2020-05-22_at_10.08.35.png?alt=media&token=7b73c615-db6c-438e-a142-e4c131b6d606) -When performing a version implementation in a circle, Charles makes all the configurations so that the routing is correctly done. To understand better how this works, let's use a scenario where a request comes from a service outside the stack, see the image above. +When performing a version implementation in a circle, Charles makes all the configurations so that the routing is correctly done. To understand better how this works, let's use a scenario where a request comes from the service outside the stack, see the image above. The request will be received by Ingress, which performs all the routing control to the service mesh. diff --git a/content/en/Reference/Identity Manager.md b/content/en/Reference/Identity Manager.md index d94fb114..d599cadf 100644 --- a/content/en/Reference/Identity Manager.md +++ b/content/en/Reference/Identity Manager.md @@ -1,7 +1,9 @@ --- title: Identity Manager -weight: 55 -description: You will find details on IDM or Identity Manager configuration +weight: 57 +description: >- + In this section, you will find details on IDM (Identity Manager) + configuration. --- --- diff --git a/content/en/Reference/Metrics/Action.md b/content/en/Reference/Metrics/Action.md index e34cd27b..54637d6b 100644 --- a/content/en/Reference/Metrics/Action.md +++ b/content/en/Reference/Metrics/Action.md @@ -1,6 +1,6 @@ --- title: Action -weight: 76 +weight: 80 description: 'In this section, you will find more information about Action.' --- diff --git a/content/en/Reference/Metrics/Charles' metrics.md b/content/en/Reference/Metrics/Charles' metrics.md index b21ecdce..e860a670 100644 --- a/content/en/Reference/Metrics/Charles' metrics.md +++ b/content/en/Reference/Metrics/Charles' metrics.md @@ -1,6 +1,6 @@ --- title: Charles' metrics -weight: 80 +weight: 84 description: 'In this section, you will find more information about Charle''s metrics.' --- diff --git a/content/en/Reference/Metrics/Metric groups to health monitoring.md b/content/en/Reference/Metrics/Metric groups to health monitoring.md index d449342f..4bf1b5df 100644 --- a/content/en/Reference/Metrics/Metric groups to health monitoring.md +++ b/content/en/Reference/Metrics/Metric groups to health monitoring.md @@ -1,6 +1,6 @@ --- title: Metric groups to health monitoring -weight: 78 +weight: 82 description: 'In this section, you will find information about health monitoring.' --- diff --git a/content/en/Reference/Metrics/Metrics group.md b/content/en/Reference/Metrics/Metrics group.md index 87cb8212..a7bd5b4b 100644 --- a/content/en/Reference/Metrics/Metrics group.md +++ b/content/en/Reference/Metrics/Metrics group.md @@ -1,6 +1,6 @@ --- title: Metrics group -weight: 74 +weight: 78 description: >- In this section, you will find more information about how to use the metrics group on Charles. diff --git a/content/en/Reference/Metrics/Setting up your metrics.md b/content/en/Reference/Metrics/Setting up your metrics.md index 48f3c36e..dc46b760 100644 --- a/content/en/Reference/Metrics/Setting up your metrics.md +++ b/content/en/Reference/Metrics/Setting up your metrics.md @@ -1,6 +1,6 @@ --- title: Setting up your metrics -weight: 72 +weight: 76 description: >- In this section, you will find more information about how to set up your metrics using Charles. @@ -46,49 +46,88 @@ global: scrape_timeout: 10s evaluation_interval: 15s scrape_configs: + - job_name: charles-metrics + honor_timestamps: true + scrape_interval: 5s + scrape_timeout: 5s + metrics_path: /v1/metrics + scheme: http + kubernetes_sd_configs: + - role: endpoints + namespaces: + names: + - namespace1 + - namespace2 + relabel_configs: + - separator: ; + regex: _meta_kubernetes_pod_label(.+) + replacement: $1 + action: labelmap + - source_labels: [__meta_kubernetes_pod_label_circleId] + separator: ; + regex: (.*) + target_label: circle_source + replacement: $1 + action: replace + - source_labels: [__meta_kubernetes_pod_label_version] + separator: ; + regex: (.*) + target_label: version + replacement: $1 + action: replace + - source_labels: [__meta_kubernetes_pod_name] + separator: ; + regex: (.*) + target_label: pod_name + replacement: $1 + action: replace - job_name: kubernetes-pods - kubernetes_sd_configs: - - role: pod - relabel_configs: - - action: keep - regex: true - source_labels: - - __meta_kubernetes_pod_annotation_prometheus_io_scrape - - action: replace - regex: (.+) - source_labels: - - __meta_kubernetes_pod_annotation_prometheus_io_path - target_label: __metrics_path__ - - action: replace - regex: ([^:]+)(?::\d+)?;(\d+) - replacement: $1:$2 - source_labels: - - __address__ - - __meta_kubernetes_pod_annotation_prometheus_io_port - target_label: __address__ - - action: replace - source_labels: - - __meta_kubernetes_namespace - target_label: kubernetes_namespace - - action: replace - source_labels: - - __meta_kubernetes_pod_label_circleId - target_label: circle_source - - action: replace - source_labels: - - __meta_kubernetes_pod_label_component - target_label: destination_component - - action: replace - source_labels: - - __meta_kubernetes_pod_name - target_label: kubernetes_pod_name - - action: drop - regex: Pending|Succeeded|Failed - source_labels: - - __meta_kubernetes_pod_phase + kubernetes_sd_configs: + - role: pod + relabel_configs: + - action: keep + regex: true + source_labels: + - __meta_kubernetes_pod_annotation_pryometheus_io_scrape + - action: replace + regex: (.+) + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_path + target_label: __metrics_path__ + - action: replace + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + source_labels: + - __address__ + - __meta_kubernetes_pod_annotation_prometheus_io_port + target_label: __address__ + - action: replace + source_labels: + - __meta_kubernetes_namespace + target_label: kubernetes_namespace + - action: replace + source_labels: + - __meta_kubernetes_pod_label_circleId + target_label: circle_source + - action: replace + source_labels: + - __meta_kubernetes_pod_label_component + target_label: destination_component + - action: replace + source_labels: + - __meta_kubernetes_pod_name + target_label: kubernetes_pod_name + - action: drop + regex: Pending|Succeeded|Failed + source_labels: + - __meta_kubernetes_pod_phase ``` +{{% alert color="info" %}} +Change the **namespace** to the name where your application is deployed. +{{% /alert %}} + {{% alert color="warning" %}} If you want to know more about Prometheus and Kubernetes service discovery, check out [**their documentation**](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config). {{% /alert %}} @@ -107,10 +146,36 @@ If you want to know more about Prometheus and Kubernetes service discovery, che {{% tab name="Google Analytics" %}} Google Analytics is one of the data sources that Charles can connect to read your metrics. -To be able to use in your metrics group, you will need +To be able to use it in your metrics group, you will need * A Google account and the Analytics configured. +{{% alert color="info" %}} +**If you use the free version of Google Analytics, it will begin collecting metrics data only after a period of 24 hours.** +{{% /alert %}} + +In order for Google Analytics to be able to read and store metrics data, you have to create a Universal Analytics Property. + +Charles uses the Universal Analytics viewId, this is something that Google Analytics 4 no longer supports. When creating a new property be sure to create a Universal Analytics property instead of a GA4 property. + + +![](https://lh6.googleusercontent.com/Vp0FcM1MVxuFTXtLnbWC2vvVukPAn3Xfif9hprFBh4cDV8dr6D64Rb4_tzryOwr_f-I0Vvpr6sgx6FL13zKKs-bDQfHByCACx9Ejv1l5Y4t5QfihjYdrQqctZPUyUp4_whQqn3xw) + + + +Google Analytics provides a tag to track the data of your application, just insert the tag in your web application for the data to be collected. + + +![](https://lh5.googleusercontent.com/kxknRbNhadC8RM6gjtuiVH0qBMvx9_hUx46JO_ixr48HtreQCGrWpo5_4CIlFLfKCnukYXl7H-rKJcXuktI08nuvPXOdJ2AwndiMryvHef4pzVw_ocnZPJbo0eEllDCq6QUA_Hda) + +### Metadata + +‌Each metric has a metadata range that allows a variety of filter and analysis types to be created. More metadata was added to Istio and you can see them described in the table below: + +| Metadata | Description | Type | +| :--- | :--- | :--- | +| circle\_source | Circle label injected into any Kubernetes pods. | Text | + If you want to use Charles to analyze your Google Analytics data, you need to add a new metric with your circle ID \(**renaming it as circle\_source**\) in your metrics label. {{% alert color="info" %}} diff --git a/content/en/Reference/Metrics/_index.md b/content/en/Reference/Metrics/_index.md index 55042d65..81fb3dde 100644 --- a/content/en/Reference/Metrics/_index.md +++ b/content/en/Reference/Metrics/_index.md @@ -1,6 +1,6 @@ --- title: Metrics -weight: 70 +weight: 74 description: >- In this section, you will find more information about how to use metrics on Charles. diff --git a/content/en/Reference/Preparing your deployment.md b/content/en/Reference/Preparing your deployment.md new file mode 100644 index 00000000..50540559 --- /dev/null +++ b/content/en/Reference/Preparing your deployment.md @@ -0,0 +1,147 @@ +--- +title: Preparing your deployment +weight: 53 +description: >- + In this section, you will find more details on how to configure Charles’ + deploy module and how to prepare your application to be available in the + cluster. +--- + +--- + +The deployment module monitors and applies the cluster resources. To do that, it uses the [**Operator**](https://kubernetes.io/docs/concepts/extend-kubernetes/operator) pattern that performs reconciliation cycles to make sure that the cluster will always be in the state you need. Kubernetes' logs will also be collected in real-time. + +## **Deployment configuration** + +Charles has an architecture that adapts to different Kubernetes installations. The only requirement is that your deployment module is installed on the destination cluster with an accessible URL. The deployment configuration indicates what URL is and which Git credentials will be used to search the helm charts. Without this configuration, Charles won't be able to perform deploys. + +### **How can you register the configuration?** + +Follow the steps below: + +1. In **Workspaces,** at the left menu, select your workspace and then click on **Settings ;** +2. Click on **Credentials;** +3. Click on **Add Deployment Configuration;** + +Fill in these fields: + +1. **Butler URL:** Butler's deploy module URL. If this is in the same Charles' installation cluster, use your FQDN \(Fully Qualified Domain Name\). Example: **http://charlescd-butler.butler-namespace.svc.cluster.local:3000.** +2. **Namespace:** Define the namespace where the resources will be available in the cluster. You have to create your namespace, once Charles does not do it; +3. **Git provider:** defines the git provider you will use \(**GitHub or GitLab**\); +4. **Git token:** Insert an authentication token that has access to the git repository where your [**helm templates**](../../get-started/creating-your-first-module/) are stored \(they will be used during the deployment of your application\). If your Git Provider is **GitHub**, "_repo_" permission is required Otherwise, configure the accesses in **GitLab:** "_API_" and "_read\_repository_". + +## **Configuring your application** + +The deployment module Butler uses helm charts to make your application available in the cluster. These charts must be available in a Github or Gitlab repository and accessible through a token, previously registered in the deployment configuration. The URL is provided along with the module registration. + +### **Charts** + +The charts must follow the [**Helm pattern**](https://helm.sh/docs/topics/charts/) and they need to be contained in a folder with the registered component on Charles. You don't need to run any command to bundle the chart, Charles downloads and it finishes automatically. + +See the below an example of a repository containing the component's chart **http-https-echo** on GitHub: + +![](https://lh5.googleusercontent.com/Rt7_Lw1DbK152QKt3brsCYyzF0DAQ4wuoWsdCVyUaZjf9Hlh64EaK7YnHjF16W_xo2BQzlUJyUeUsooPzqwmMIKF7ttUXRej3eM56uWu6WH4QNCiByixeV4zEdHLwEGRq7NCruhH) + +### **Templates** + +The only requirements for templates to work with Charles are **labels component** and **tag** to be present in the Deployment resource manifests. + +{{% alert color="info" %}} +It is not necessary to insert the values in the _**values**_ files of your chart, Charles will provide them. +{{% /alert %}} + +See the example below: + +```text +component: {{ .Values.component }} +tag: {{ .Values.tag }} +``` + +Butler internally stores the compiled charts in entities that represent each deployment request. Thereby, Charles can perform more efficient rollbacks. + +### **Properties injections** + +A very important operation that should be considered when preparing your application is the property injection in the manifests performed by Butler. See them below: + +* **name:** Kubernetes’ resource name. Some resources managed by Charles need to have their names altered, in order to make different versions of the same application available in different circles. The property name will have the following value: **<originalManifest.metadata.name>-<tag>-<deploymentId>** +* **originalManifest.metadata.name:** Name generated by the application’s chart; +* **tag:** Image’s tag; +* **deploymentId:** Deployment’s entity unique identifier created by Butler. + +{{% alert color="warning" %}} +This update only happens in **Deployment’s** type resources. +{{% /alert %}} + +* **namespace:** Your deployment's namespace. This namespace is described during the Workspace configuration and indicates which namespace the deployment will happen. If the charts insert this value in the manifests, Charles will overwrite them. +* **labels:** Kubernetes’ resources labels. + In order to make Butler’s reconciliation cycle and Istio’s routes created correctly work, some labels need to be available in all resources applied to the cluster. See them below: + + + * **deploymentId:** Unique identifier of the deployment's entity created by Butler; + * **circleId:** Unique circle's identifier where the deployment will be created. + + + + See below an example of a generated manifest after the chart compilation: + +```text +apiVersion: apps/v1 +kind: Deployment +metadata: + name: http-https-echo + labels: + component: http-https-echo + tag: v1 +spec: + template: + metadata: + name: http-https-echo + labels: + component: http-https-echo + tag: v1 + spec: + containers: + - name: http-https-echo + image: mendhak/http-https-echo:latest + replicas: 1 + selector: + matchLabels: + component: http-https-echo + +``` + + +After the property injection, this same manifest will be: + +```text +apiVersion: apps/v1 +kind: Deployment +metadata: + name: http-https-echo-v1-bc0e1df9-c008-4d86-b534-d782badf3741 + namespace: example-namespace + labels: + component: http-https-echo + tag: v1 + deploymentId: bc0e1df9-c008-4d86-b534-d782badf3741 + circleId: b4b62bc2-4dfd-4673-bc67-cc2cbcf9bb2f +spec: + template: + metadata: + name: http-https-echo + labels: + component: http-https-echo + tag: v1 + deploymentId: bc0e1df9-c008-4d86-b534-d782badf3741 + circleId: b4b62bc2-4dfd-4673-bc67-cc2cbcf9bb2f + spec: + containers: + - name: http-https-echo + image: mendhak/http-https-echo:latest + replicas: 1 + selector: + matchLabels: + component: http-https-echo + +``` + +After this configuration, you can use Charles to perform deployment in your application in segmented circles. diff --git a/content/en/Reference/Registry/Azure Container Registry.md b/content/en/Reference/Registry/Azure Container Registry.md index 8159e436..0ea07f8b 100644 --- a/content/en/Reference/Registry/Azure Container Registry.md +++ b/content/en/Reference/Registry/Azure Container Registry.md @@ -1,6 +1,6 @@ --- title: Azure Container Registry -weight: 59 +weight: 61 --- --- diff --git a/content/en/Reference/Registry/Docker Hub.md b/content/en/Reference/Registry/Docker Hub.md index 89528c29..a3dd0f7a 100644 --- a/content/en/Reference/Registry/Docker Hub.md +++ b/content/en/Reference/Registry/Docker Hub.md @@ -1,6 +1,6 @@ --- title: Docker Hub -weight: 61 +weight: 63 --- --- diff --git a/content/en/Reference/Registry/ECR.md b/content/en/Reference/Registry/ECR.md index ae727ebf..5b18d189 100644 --- a/content/en/Reference/Registry/ECR.md +++ b/content/en/Reference/Registry/ECR.md @@ -1,6 +1,6 @@ --- title: ECR -weight: 63 +weight: 65 --- --- diff --git a/content/en/Reference/Registry/GCR.md b/content/en/Reference/Registry/GCR.md index 26b557e4..8fd193ec 100644 --- a/content/en/Reference/Registry/GCR.md +++ b/content/en/Reference/Registry/GCR.md @@ -1,6 +1,6 @@ --- title: GCR -weight: 65 +weight: 67 --- --- diff --git a/content/en/Reference/Registry/_index.md b/content/en/Reference/Registry/_index.md index 8868034f..5c7b06d3 100644 --- a/content/en/Reference/Registry/_index.md +++ b/content/en/Reference/Registry/_index.md @@ -1,6 +1,7 @@ --- title: Registry -weight: 57 +weight: 59 +description: 'In this section, you will find information about the registry.' --- --- diff --git a/content/en/Reference/Releases.md b/content/en/Reference/Releases.md index 095748ee..335ba0d3 100644 --- a/content/en/Reference/Releases.md +++ b/content/en/Reference/Releases.md @@ -1,6 +1,6 @@ --- title: Releases -weight: 68 +weight: 70 description: 'In this section, you will find more information about releases on Charles.' --- diff --git a/content/en/Reference/System Token.md b/content/en/Reference/System Token.md new file mode 100644 index 00000000..bdf4efaf --- /dev/null +++ b/content/en/Reference/System Token.md @@ -0,0 +1,78 @@ +--- +title: System Token +weight: 72 +description: 'In this section, you will find more information about system tokens.' +--- + +--- + +## What is it? + +A system token is an opaque string of characters that identifies a user or an application. It can be used by integration to call Charles C.D's internal APIs. + +{{% alert color="info" %}} +If you want to integrate Charles into your deployment pipeline, **you will need a permission system token** to execute actions. +{{% /alert %}} + +When you access Charles with the root profile, the **"System Token"** item will show up on the menu. This is the token management area where you can create new tokens, view the existing ones, revoke and recreate. + +## How can you create? + +To create a system token, you need to fill in three pieces of information: + +1. The **name** to identify the token; +2. The **workspaces** it will have access to; +3. Which permission **scopes** the token will be able to work in the workspaces. + +### Workspaces + +You have two options to choose the workspaces: + +* Allow the token to have access to all workspaces: + +![](//systemtoken_allworkspace.gif) + +* Select specific workspaces: + +![](//systemtoken_specificworkspace.gif) + +### Scopes + +The scopes define which actions a token can perform. You can create your token with one or more scopes. To do that, choose the best options below: + +* **Modules:** full access \(reading and writing\) of the APIs referring to the modules. + * **Writing**: access to create, update and delete modules + * **Reading:** access to read all modules. +* **Circles**: full access \(reading and writing\) to the APIs referring to the circles. + * **Writing**: access to create, update and delete circles. + * **Reading**: access to read all circles. +* **Deploy:** full access \(reading and writing\) to circles release implementation. +* **Maintenance:** full access \(reading and writing\) to the workspaces' configurations. + + + +## How to copy a token? + +After you have finished customizing your token, **don't forget to copy it**. It is not possible to copy this token again. + +![](//tokensistemico1%20%281%29.png) + +## How can you revoke a token? + +You can revoke the token's permissions, to do that, check out below: + +* Access the token menu; +* Select the token; +* Click on **`Revoke Token`** option. + +## How can you generate a token again? + +If you lost the value of your token, it is possible to create it again with all the existing permissions. When you do that, the previous value is canceled and the new value is the only one valid. Check out the example below: + +![](//tokensistemico2%20%281%29.gif) + + + +1. On the top menu, click on "**Regenerate**"; +2. Confirm the action in the "**Yes, regenerate token"** button that will pop up; +3. Done! A new token will be generated. diff --git a/content/en/Reference/Users Groups.md b/content/en/Reference/Users Groups.md index 77855720..7404907b 100644 --- a/content/en/Reference/Users Groups.md +++ b/content/en/Reference/Users Groups.md @@ -1,6 +1,6 @@ --- title: Users Groups -weight: 53 +weight: 55 description: 'In this section, you will find more information about Users Groups on Charles.' --- @@ -31,7 +31,7 @@ The following profiles are available: and also create, edit and delete circles and modules. -* **Analyst**: they have permission to edit and delete circles and modules. And also view the modules' configuration. +* **Analyst**: is able to view modules. They have permission to edit and delete circles and modules. And also view the modules' configuration. * **Reader**: is able to view circles and modules. ![Permission options to associate users' groups on a workspace.](//chrome-capture-3-%20%282%29.gif) diff --git a/content/en/Reference/_index.md b/content/en/Reference/_index.md index 1f4b99fa..b54ec4e8 100644 --- a/content/en/Reference/_index.md +++ b/content/en/Reference/_index.md @@ -1,4 +1,4 @@ --- title: Reference -weight: 48 +weight: 50 --- \ No newline at end of file diff --git a/content/en/Release Notes.md b/content/en/Release Notes.md index 13280f80..e5938f50 100644 --- a/content/en/Release Notes.md +++ b/content/en/Release Notes.md @@ -1,4 +1,4 @@ --- title: Release Notes -weight: 96 +weight: 98 --- \ No newline at end of file diff --git a/content/pt/FAQ/Comunidade.md b/content/pt/FAQ/Comunidade.md index f4e5c24d..d8b5c26c 100644 --- a/content/pt/FAQ/Comunidade.md +++ b/content/pt/FAQ/Comunidade.md @@ -1,6 +1,6 @@ --- title: Comunidade -weight: 91 +weight: 95 description: >- Nesta seção, você encontra as principais informações sobre como contribuir com nossa comunidade. diff --git "a/content/pt/FAQ/Deploy em c\303\255rculos x Outros deploys.md" "b/content/pt/FAQ/Deploy em c\303\255rculos x Outros deploys.md" index e0c1f64e..310516d1 100644 --- "a/content/pt/FAQ/Deploy em c\303\255rculos x Outros deploys.md" +++ "b/content/pt/FAQ/Deploy em c\303\255rculos x Outros deploys.md" @@ -1,6 +1,6 @@ --- title: Deploy em círculos x Outros deploys -weight: 89 +weight: 93 description: >- Nesta seção, você encontra a explicação para a diferença do deploy em círculos do Charles com outras formas de deployments comuns no mercado. diff --git a/content/pt/FAQ/Sobre o Charles.md b/content/pt/FAQ/Sobre o Charles.md index 0d41b9cd..7fab44c4 100644 --- a/content/pt/FAQ/Sobre o Charles.md +++ b/content/pt/FAQ/Sobre o Charles.md @@ -1,6 +1,6 @@ --- title: Sobre o Charles -weight: 87 +weight: 91 --- --- diff --git a/content/pt/FAQ/_index.md b/content/pt/FAQ/_index.md index c9559812..ef304c84 100644 --- a/content/pt/FAQ/_index.md +++ b/content/pt/FAQ/_index.md @@ -1,4 +1,4 @@ --- title: FAQ -weight: 88 +weight: 92 --- \ No newline at end of file diff --git "a/content/pt/F\303\263rum.md" "b/content/pt/F\303\263rum.md" new file mode 100644 index 00000000..ea59bbf1 --- /dev/null +++ "b/content/pt/F\303\263rum.md" @@ -0,0 +1,4 @@ +--- +title: Fórum +weight: 99 +--- \ No newline at end of file diff --git a/content/pt/Guides/Caso de Uso.md b/content/pt/Guides/Caso de Uso.md index 3e2c12d7..dbc99141 100644 --- a/content/pt/Guides/Caso de Uso.md +++ b/content/pt/Guides/Caso de Uso.md @@ -1,9 +1,9 @@ --- title: Caso de Uso -weight: 84 +weight: 88 description: >- - Esta seção descreve através de um exemplo como realizar a implantação de uma - aplicação por meio do Charles. + Esta seção mostra com um exemplo, como realizar a implantação de uma aplicação + por meio do Charles. --- --- diff --git a/content/pt/Guides/_index.md b/content/pt/Guides/_index.md index 2a8a4949..a64804ea 100644 --- a/content/pt/Guides/_index.md +++ b/content/pt/Guides/_index.md @@ -1,4 +1,4 @@ --- title: Guides -weight: 85 +weight: 89 --- \ No newline at end of file diff --git "a/content/pt/Migra\303\247\303\243o da vers\303\243o 0.7.1 para 1.0.0.md" "b/content/pt/Migra\303\247\303\243o da vers\303\243o 0.7.1 para 1.0.0.md" new file mode 100644 index 00000000..237cddd3 --- /dev/null +++ "b/content/pt/Migra\303\247\303\243o da vers\303\243o 0.7.1 para 1.0.0.md" @@ -0,0 +1,94 @@ +--- +title: Migração da versão 0.7.1 para 1.0.0 +weight: 100 +description: >- + Nesta seção, você vai encontrar como realizar a migração do Charles da versão + 0.7.1 para 1.0.0. +--- + +--- + +A nova versão 1.0.0 do CharlesCD trouxe mais confiabilidade nos deploys com o [**Operator**](referencia/preparando-seu-deploy), porém o Helm encontra dificuldades para adicionar elementos necessários ao Operator em uma instalação já existente, como o **Custom Resources Definition** \(CRDs\). Por isso, você precisa seguir alguns passos para uma atualização mais funcional. Veja abaixo: + +### **Passo 1: Desinstale o CharlesCD \(instalação feita com o Helm\):** + +{{% alert color="warning" %}} +Este passo **remove tudo**, inclusive o banco de dados. Se seu banco de dados é **externo** ou se **está dentro do Kubernetes,** seus dados não serão apagados, porque os volumes persistem mesmo após uma desinstalação via Helm. +{{% /alert %}} + +Para desinstalar, execute o seguinte comando: + +```text +helm uninstall -n +``` + +### **Passo 2: Instale o CharlesCD utilizando o Helm:** + +Agora instale o CharlesCD via _Helm._ Utilize o seu arquivo de _Values_ da instalação original validando para cada manifesto se houve a adição de novos valores. + +{{% alert color="info" %}} +Você precisa validar fazendo um diff do seu arquivo de instalação e do disponível no repositório do CharlesCD. +{{% /alert %}} + +Para instalar, execute o comando abaixo: + +```text + +helm install -n ./install/helm-chart/ -f ./install/helm-chart/meu-values.yaml + +``` + +### **Passo 3: Atualize a configuração de Deployment para cada Workspace:** + +Depois de instalar, você poderá acessar o CharlesCD com seu usuário administrador da plataforma É necessário fazer uma nova configuração de deployment para seus workspaces. Veja como fazer essa configuração em [**Configuração de Deployment**](referencia/preparando-seu-deploy#configuracao-de-deployment) + +### **Passo 4: Faça o override de release em cada círculo ativo** + +Agora, você precisa fazer o Override de Release com a última release em que o deployment em cada círculo ativo foi feito. Veja como realizar overrides de versões em '[**Como criar releases pelo Charles?**](referencia/release#como-criar-releases-pelo-charles)'. + +{{% alert color="info" %}} +Não se preocupe com o override de release. O CharlesCD irá reconhecer todos os manifestos que ele precisa tomar conta. +{{% /alert %}} + +### **Passo 5: Remova todos os manifestos em que o CharlesCD fez os deployments antes da versão 1.0.0:** + +Você precisa remover todos os manifestos em que o CharlesCD fez os deployments antes da versão 1.0.0. Ao deletar esse esses manifestos antigos, o Operator pode recriá-los e com isso, a sua aplicação vai funcionar em menos de 30 segundos. A indisponibilidade é em média de 5 segundos. + +Siga os passos para remoção: + +1. Você precisa saber todos os manifestos existentes no namespace do seu workspace que podem ser deletados. Para isso execute o seguinte comando, por worspace: + +```text +kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n -o go-template --template '{{range .items}}{{.kind}}/{{.metadata.name}} {{.metadata.creationTimestamp}}{{"\n"}}{{end}}' 2>&1 | grep -i -v "Warn" | grep -i -v "Deprecat" | awk '$2 <= "'$(date -d '1 hour ago' -Ins --utc | sed 's/+0000/Z/')'" { print $1 }' | grep -i -v "ConfigMap/istio" | grep -i -v "ConfigMap/kube" | grep -i -v "Secret/default" | grep -i -v "ServiceAccount/default" + +``` + +Este comando mostra uma lista de manifestos relacionados ao seu workspace mais antigo que 1 hora, isto é, tudo que não houve o deployment no namespace de seu Kubernetes. Veja abaixo um exemplo: + +![](//image%20%2822%29.png) + +2. Se não existir manifestos aplicados por fora do CharlesCD, um **nginx** para servir de ingress para sua aplicação, por exemplo. Adicione no comando: + +```text + | grep -i -v "PALAVRA_CHAVE" +``` + +Veja como é exemplo do nginx: + +```text + +kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n charlesapp -o go-template --template '{{range .items}}{{.kind}}/{{.metadata.name}} {{.metadata.creationTimestamp}}{{"\n"}}{{end}}' 2>&1 | grep -i -v "Warn" | grep -i -v "Deprecat" | awk '$2 <= "'$(date -d '1 hour ago' -Ins --utc | sed 's/+0000/Z/')'" { print $1 }' | grep -i -v "ConfigMap/istio" | grep -i -v "ConfigMap/kube" | grep -i -v "Secret/default" | grep -i -v "ServiceAccount/default" | grep -i -v "nginx" + +``` + +Esse comando remove da listagem o manifesto e depois você terá a lista completa para remoção do cluster. + +3. Quando você estiver com essa lista de manifestos, delete os manifestos e o restante será executado pelo Operator. Execute o comando abaixo: + +```text +kubectl delete -n +``` + +{{% alert color="success" %}} +Pronto! O processo de atualização foi finalizado :\) +{{% /alert %}} diff --git a/content/pt/Overview.md b/content/pt/Overview.md index 0c81cdb2..ec06eaa3 100644 --- a/content/pt/Overview.md +++ b/content/pt/Overview.md @@ -48,13 +48,15 @@ Para utilizar o Charles, é preciso cumprir alguns pré-requisitos: ## Arquitetura do sistema -A plataforma foi construída utilizando a abordagem de microsserviços e possui os seguintes módulos: +![](//arquitetura-charlesc.d%20%281%29.jpg) -![](//arquitetura-charles-0.7.0.jpg) +A plataforma foi construída utilizando a abordagem de microsserviços e possui os seguintes módulos: * `charlescd-ui:` responsável por prover uma interface de fácil usabilidade para todas as features fornecida pelo CharlesCD, no intuito de simplificar testes de hipóteses e _circle deployment_. * `charlescd-moove:` é um serviço backend que orquestra os testes de hipóteses de seus produtos e o pipeline de entrega até atingir seus círculos, facilitando a ponte entre **Butler**, **Villager** e **Circle Matcher**. * `charlescd-butler:` responsável por orquestrar e gerenciar as releases e deploys realizados. * `charlescd-circle-matcher:`gerencia todos os círculos criados, além de indicar a qual círculo um usuário pertence, com base em um conjunto de características. -* `charlescd-compass`: integração do provedor de dados, faz análise de métricas e executa ações configuráveis. +* `charlescd-compass`: integração do provedor de dados, faz análise de métricas e executa ações configuráveis. +* `charlescd-hermes`: responsável por gerenciar e notificar eventos de webhook. +* `charlescd-gate`: controla as permissões dos usuários em relação aos recursos existentes nas APIs do Charles. diff --git a/content/pt/Primeiros Passos/Configurando o Charles no seu pipeline.md b/content/pt/Primeiros Passos/Configurando o Charles no seu pipeline.md new file mode 100644 index 00000000..2228fd05 --- /dev/null +++ b/content/pt/Primeiros Passos/Configurando o Charles no seu pipeline.md @@ -0,0 +1,300 @@ +--- +title: Configurando o Charles no seu pipeline +weight: 46 +description: >- + Nesta seção, você encontra os passos para configurar o Charles em seu + pipeline. +--- + +--- + +## Por que integrar o Charles ao seu pipeline de Continuous Delivery? + +Integrações são capazes de garantir mais velocidade ao seu time. A entrega contínua \(CD\) permite que você pegue o código armazenado no repositório e o entregue à produção \(ou em qualquer outro ambiente\) continuamente. + +A configuração de um CD gera um processo mais rápido e eficaz para colocar seu produto no mercado antes da concorrência, e isso permite que seu time crie novos recursos e correções de bugs para manter seus clientes satisfeitos. + +## Pré-requisitos + +Para integrar o Charles C.D. no seu pipeline, você precisa saber algumas informações. Veja abaixo quais são e como consegui-las: + +* **`x-charles-token`**: É um hash criado quando um **token sistêmico** é gerado. Caso tenha perdido o valor, é possível regerar essa informação. **Veja mais detalhes na seção do token sistêmico**. +* **`x-workspace-id`**: Esse Id representa o workspace onde suas configurações de ambiente e círculos estão. [**Copie o ID no menu existente ao visualizar o workspace**](definindo-workspace/#como-obter-o-identificador-do-meu-workspace) +* **`module.id`**: Esse Id representa o projeto cadastrado no Charles.[ **Copie o ID no menu existente ao visualizar o módulo.**](criando-seu-primeiro-modulo/#como-obter-o-identificador-do-meu-modulo) +* **`component.id`**: Esse identificador representa o componente e [**pode ser buscado nos detalhes do módulo**](criando-seu-primeiro-modulo/#como-obter-o-identificador-dos-componentes). +* **`component.version`**: Neste campo informe o nome da tag da imagem do seu componente. +* **`component.artifact`**: Este é o nome do artefato. Por exemplo: {YOUR-REGISTRY-URL}-{YOUR-IMAGE-NAME}:{YOUR-TAG-NAME}. +* **`circle.id`**: Esse Id representa o círculo cadastrado no Charles.[ **Copie o ID no menu existente ao visualizar o círculo.**](../referencia/circulo#como-obter-o-identificador-do-meu-circulo-1) +* **`build.id`**: Este Id representa a composição do deploy criada na primeira requisição[ **citada abaixo**](configurando-o-charles-no-seu-pipeline#criar-composicao-do-deploy). Esta informação é retornada como valor da chave `id` na resposta em formato de JSON. + +## Como integrar? + +Você pode fazer essa integração utilizando um **token sistêmico** e uma sequência de requisições HTTPS. Veja como nos dois passos abaixo: + +{% api-method method="post" host="https://charles.info.example" path="/moove/v2/builds/compose" %}} +{% api-method-summary %}} +Passo 1: Criar composição do deploy +{% endapi-method-summary %}} + +{% api-method-description %}} +Esta requisição cria uma composição que representará sua release em um círculo. E você pode misturar versões diferentes com vários componentes. +{% endapi-method-description %}} + +{% api-method-spec %}} +{% api-method-request %}} +{% api-method-headers %}} +{% api-method-parameter name="x-charles-token" type="string" required=false %}} +Token sistêmico. +{% endapi-method-parameter %}} + +{% api-method-parameter name="x-workspace-id" type="string" required=true %}} +Identificador do workspace. +{% endapi-method-parameter %}} +{% endapi-method-headers %}} + +{% api-method-body-parameters %}} +{% api-method-parameter name="releaseName" type="string" required=true %}} +Nome escolhido para a release. +{% endapi-method-parameter %}} + +{% api-method-parameter name="modules" type="array" required=true %}} +Lista de módulos. +{% endapi-method-parameter %}} + +{% api-method-parameter name="module" type="object" required=true %}} +Objeto que representa o módulo. +{% endapi-method-parameter %}} + +{% api-method-parameter name="module.id" type="string" required=true %}} +Identificador do Módulo +{% endapi-method-parameter %}} + +{% api-method-parameter name="module.components" type="array" required=true %}} +Lista dos componentes que irão compor o deploy. +{% endapi-method-parameter %}} + +{% api-method-parameter name="component" type="object" required=true %}} +Componente do módulo. +{% endapi-method-parameter %}} + +{% api-method-parameter name="component.id" type="string" required=true %}} +Identificador do component. +{% endapi-method-parameter %}} + +{% api-method-parameter name="component.version" type="string" required=true %}} +Nome da tag da imagem. +{% endapi-method-parameter %}} + +{% api-method-parameter name="component.artifact" type="string" required=true %}} +Nome do artefato. Por exemplo: {YOUR-REGISTRY-URL}-{YOUR-IMAGE-NAME}:{YOUR-TAG-NAME} +{% endapi-method-parameter %}} +{% endapi-method-body-parameters %}} +{% endapi-method-request %}} + +{% api-method-response %}} +{% api-method-response-example httpCode=201 %}} +{% api-method-response-example-description %}} + +{% endapi-method-response-example-description %}} + +``` +{ + "id":"0000053e-14cc-4bae-85df-364a70eb0000", + "author":{ + "id":"00000afe-aa7a-4536-be1b-34eaad4c0000", + "name":"Charles Admin", + "email":"admin@email.com" + }, + "createdAt":"2021-04-19 12:08:54", + "features":[ + { + "id":"17c28af1-d7bf-4c8c-9895-ab4944fb5a9e", + "name":"release-test-0.1", + "branchName":"release-test-0.1", + "authorId":"00000afe-aa7a-4536-be1b-34eaad4c0000", + "authorName":"Charles Admin", + "modules":[ + { + "id":"00000df6-6c34-4410-9bea-77ee56900000", + "name":"ZupIT/charlescd", + "gitRepositoryAddress":"https://github.com/zupit/charlescd", + "helmRepository":"{HELM_URL}", + "createdAt":"2020-11-20 13:11:31", + "components":[ + { + "id":"00000143-8208-4f95-9986-10b909c00000", + "name":"charlescd-ui", + }, + { + "id":"000009ea-ada9-40fd-bddf-51c921200000", + "name":"charlescd-moove" + } + ] + } + ], + "createdAt":"2021-04-19 12:08:54", + "branches":[ + "https://github.com/zupit/charlescd/tree/release-test-0.1" + ] + } + ], + "tag":"release-test-0.1", + "status":"BUILT", + "deployments":[] +} +``` +{% endapi-method-response-example %}} +{% endapi-method-response %}} +{% endapi-method-spec %}} +{% endapi-method %}} + +Veja abaixo um exemplo da requisição no formato **CURL**: + +```text +curl 'https://charlescd.api.com/moove/v2/builds/compose' \ + -H 'x-workspace-id: 000009c4-9f58-4236-9936-ffcb04b00000' \ + -H 'x-charles-token: {YOUR_SYSTEM_TOKEN}' \ + -H 'content-type: application/json' \ + --data-binary '{ + "modules":[ + { + "id":"00000f6-6c34-4410-9bea-77ee56900000", + "components":[ + { + "id":"000009ea-ada9-40fd-bddf-51c921200000", + "version":"{YOUR-TAG-NAME}", + "artifact":"{YOUR-REGISTRY-URL}-{YOUR-IMAGE-NAME}:{YOUR-TAG-NAME}" + }, + { + "id":"00000143-8208-4f95-9986-10b909c00000", + "version":"{YOUR-TAG-NAME}", + "artifact":"{YOUR-REGISTRY-URL}-{YOUR-IMAGE-NAME}:{YOUR-TAG-NAME}" + } + ] + } + ], + "releaseName":"release-test-0.1" +}' +``` + + + +{% api-method method="post" host="https://charles.info.example" path="/moove/v2/deployments" %}} +{% api-method-summary %}} +Passo 2: Implantar a release criada na requisição anterior em um círculo. +{% endapi-method-summary %}} + +{% api-method-description %}} +Esta requisição implanta a release composta criada anteriormente em um círculo. +{% endapi-method-description %}} + +{% api-method-spec %}} +{% api-method-request %}} +{% api-method-headers %}} +{% api-method-parameter name="x-workspace-id" type="string" required=true %}} +Identificador do workspace. +{% endapi-method-parameter %}} + +{% api-method-parameter name="x-charles-token" type="string" required=true %}} +Token sistêmico. +{% endapi-method-parameter %}} +{% endapi-method-headers %}} + +{% api-method-body-parameters %}} +{% api-method-parameter name="circleId" type="string" required=true %}} +Identificador do círculo que receberá o deployment. +{% endapi-method-parameter %}} + +{% api-method-parameter name="buildId" type="string" required=true %}} +Identificador do build criado na requisição anterior. +{% endapi-method-parameter %}} +{% endapi-method-body-parameters %}} +{% endapi-method-request %}} + +{% api-method-response %}} +{% api-method-response-example httpCode=201 %}} +{% api-method-response-example-description %}} + +{% endapi-method-response-example-description %}} + +``` +{ + "id":"0000070c-1ed8-4d33-ad91-04ea50100000", + "author":{ + "id":"00000afe-aa7a-4536-be1b-34eaad400000", + "name":"Charles Admin", + "email":"admin@email.com" + }, + "createdAt":"2021-04-19 12:08:54", + "deployedAt":null, + "circle":{ + "id":"000006b3-6e04-4c48-aca9-c9297e100000", + "name":"Circle name", + "author":{ + "id":"00000afe-aa7a-4536-be1b-34eaad400000", + "name":"Charles Admin", + "email":"admin@email.com" + }, + "createdAt":"2021-04-15 17:25:56", + "matcherType":"REGULAR", + "rules":{ + "type":"CLAUSE", + "clauses":[ + { + "type":"RULE", + "content":{ + "key":"email", + "value":[ + "test" + ], + "condition":"EQUAL" + } + } + ], + "logicalOperator":"OR" + }, + "importedAt":null, + "importedKvRecords":0 + }, + "buildId":"0000053e-14cc-4bae-85df-364a70e00000", + "tag":"{IMAGE_TAG_NAME}", + "status":"DEPLOYING", + "artifacts":[ + { + "id":"00000652-e4fb-41c7-a6da-33bee0600000", + "artifact":"{YOUR-REGISTRY-URL}-{YOUR-IMAGE-NAME}:{YOUR-TAG-NAME}", + "version":"{IMAGE_TAG_NAME}", + "createdAt":"2021-04-19 12:08:54", + "componentName":"charlescd-ui", + "moduleName":"ZupIT/charlescd" + }, + { + "id":"000000d2-4a50-408a-be38-c8e932200000", + "artifact":"{YOUR-REGISTRY-URL}-{YOUR-IMAGE-NAME}:{YOUR-TAG-NAME}", + "version":"{IMAGE_TAG_NAME}", + "createdAt":"2021-04-19 12:08:54", + "componentName":"charlescd-moove", + "moduleName":"ZupIT/charlescd" + } + ] +} +``` +{% endapi-method-response-example %}} +{% endapi-method-response %}} +{% endapi-method-spec %}} +{% endapi-method %}} + +Veja um exemplo da requisição no formato **CURL**: + +```text +curl 'https://charlescd.api.com/moove/v2/deployments' \ + -H 'x-workspace-id: 000009c4-9f58-4236-9936-ffcb04b00000' \ + -H 'x-charles-token: {YOUR_SYSTEM_TOKEN}' \ + -H 'content-type: application/json' \ + --data-binary '{ + "buildId":"82a7d53e-14cc-4bae-85df-364a70eb9df7", + "circleId":"1611b6b3-6e04-4c48-aca9-c9297e18d66d" +}' +``` + +Você pode acompanhar a conclusão dos deployments utilizando os [**Webhooks**](definindo-workspace/web). diff --git "a/content/pt/Primeiros Passos/Configura\303\247\303\265es opcionais/Autenticando com registry privado.md" "b/content/pt/Primeiros Passos/Configura\303\247\303\265es opcionais/Autenticando com registry privado.md" index aae0954a..456d3af6 100644 --- "a/content/pt/Primeiros Passos/Configura\303\247\303\265es opcionais/Autenticando com registry privado.md" +++ "b/content/pt/Primeiros Passos/Configura\303\247\303\265es opcionais/Autenticando com registry privado.md" @@ -2,7 +2,7 @@ title: Autenticando com registry privado weight: 13 description: >- - Nessa seção você encontra como realizar a autenticação com seu registry + Nessa seção, você encontra como realizar a autenticação com seu registry privado. --- diff --git "a/content/pt/Primeiros Passos/Configura\303\247\303\265es opcionais/Configurando sua ingress.md" "b/content/pt/Primeiros Passos/Configura\303\247\303\265es opcionais/Configurando sua ingress.md" index f0e8b4c1..c08c8971 100644 --- "a/content/pt/Primeiros Passos/Configura\303\247\303\265es opcionais/Configurando sua ingress.md" +++ "b/content/pt/Primeiros Passos/Configura\303\247\303\265es opcionais/Configurando sua ingress.md" @@ -8,12 +8,12 @@ description: 'Nesta seção, você encontra sobre como configurar a sua ingress. Caso você queira utilizar sua ingress, ao invés da que possui na instalação do Charles, siga o seguinte passo: -* em `charlescd/install/helm-chart/values.yaml`, nas configurações de ingress, mude o valor de **`enabled`** para **`false`** como no exemplo abaixo. +* em `charlescd/install/helm-chart/values.yaml`, nas configurações de ingress, mude o valor de **`enabled`** para **`true`** como no exemplo abaixo. ```text -host: charles.info.example +ingress: + enabled: true + host: charles.info.example class: nginx - controller: - nginx: - enabled: false + ``` diff --git "a/content/pt/Primeiros Passos/Criando seu primeiro m\303\263dulo/Configurando seus m\303\263dulos para propagar o id do c\303\255rculo.md" "b/content/pt/Primeiros Passos/Criando seu primeiro m\303\263dulo/Configurando seus m\303\263dulos para propagar o id do c\303\255rculo.md" index 811d748a..21db1417 100644 --- "a/content/pt/Primeiros Passos/Criando seu primeiro m\303\263dulo/Configurando seus m\303\263dulos para propagar o id do c\303\255rculo.md" +++ "b/content/pt/Primeiros Passos/Criando seu primeiro m\303\263dulo/Configurando seus m\303\263dulos para propagar o id do c\303\255rculo.md" @@ -46,5 +46,5 @@ Para usá-las, você precisa adicioná-las a sua aplicação: * [**Lib para .NET**](https://github.com/ZupIT/charlescd/tree/master/tracing/dotnet-core%20) {{% alert color="info" %}} -Para o **Node.js** já existe uma lib, [**veja na página do npm**](https://www.npmjs.com/package/hpropagate). +O **Node.js** já possui uma lib, [**veja na página do npm**](https://www.npmjs.com/package/hpropagate). {{% /alert %}} diff --git "a/content/pt/Primeiros Passos/Criando seu primeiro m\303\263dulo/_index.md" "b/content/pt/Primeiros Passos/Criando seu primeiro m\303\263dulo/_index.md" index 9170efc9..9d9d08f3 100644 --- "a/content/pt/Primeiros Passos/Criando seu primeiro m\303\263dulo/_index.md" +++ "b/content/pt/Primeiros Passos/Criando seu primeiro m\303\263dulo/_index.md" @@ -15,7 +15,7 @@ Um **módulo** é a sua aplicação que está armazenada em um repositório do * Para adicionar os módulos, acesse o menu **Modules** __no **workspace** desejado e __preencha os campos: 1. **Nome**: o nome deverá ser a junção da organização e a do módulo, como está no git. Por exemplo: `ZupIt/charlescd`. -2. **URL Git**: informe a URL do seu repositório. Por exemplo: [https://github.com](https://github.com/ZupIT/charlescd). +2. **URL Git**: informe a URL do seu repositório. Por exemplo: [**https://github.com**](https://github.com/ZupIT/charlescd) 3. Se seu repositório tem várias aplicações, cadastre-as como **componentes** e informe: * **Name of the component**: o nome da aplicação, conforme está no repositório. @@ -28,7 +28,7 @@ Para adicionar os módulos, acesse o menu **Modules** __no **workspace** desejad 4. **Add Helm Chart repository:** informe o repositório onde o está o template do helm da sua aplicação e veja o exemplo de como preencher os campos com essa URL: [**https://gitlab.com/charlito/charlescd/moove?ref=master**](https://gitlab.com/charlito/charlescd/moove?ref=master`%20) -* **Insert URL:** [http://gitlab.com](http://gitlab.com); +* **Insert URL:** [**http://gitlab.com**](http://gitlab.com)**;** * **Insert Organization:** charlito; * **Insert repository:** charlescd; * **Insert path:** moove**;** @@ -42,8 +42,18 @@ Veja a imagem de como criar módulos: Para saber mais sobre a configuração do repositório do helm, [**acesse a seção Configurando o chart template**](configurando-o-chart-template) {{% /alert %}} +### Como obter o identificador do meu módulo? + +Assim que seu módulo é criado, ele já possui um identificador único. Para obter essa informação, selecione o módulo desejado e, no menu à esquerda, clique em **Copy ID**: + +![](//copy-module-id.gif) + ## O que são componentes? -{{% alert color="info" %}} Componentes são abstrações das aplicações. Se dentro do seu repositório há múltiplas aplicações, cada componente corresponderá a uma delas. -{{% /alert %}} + +### Como obter o identificador dos componentes? + +Após selecionar o módulo, copie o id do componente através da opção existente nos três pontos do cartão: + +![](//copy-component-id.gif) diff --git a/content/pt/Primeiros Passos/Definindo um Workspace/Ambiente de deploy.md b/content/pt/Primeiros Passos/Definindo um Workspace/Ambiente de deploy.md index 5f4a376d..2c2aca39 100644 --- a/content/pt/Primeiros Passos/Definindo um Workspace/Ambiente de deploy.md +++ b/content/pt/Primeiros Passos/Definindo um Workspace/Ambiente de deploy.md @@ -27,4 +27,4 @@ Após esses passos, preencha os campos a seguir: 4. **Git token:** insira um token de autenticação que tenha acesso repositório git onde está armazenado os seus [**templates Helm**](../../../criando-seu-primeiro-modulo/configurando-o-chart-template) que serão utilizados durante o deployment da sua [**aplicação**](../../../criando-seu-primeiro-modulo/). Caso o seu Git Provider seja **GitHub**, é necessário a permissão "_repo_". Se for o contrário, configure no **GitLab** os acessos: "_api_ '' e "_read\_repository_". 5. Selecione a opção **Default**. -Depois de finalizar sua configuração, você pode futuramente associá-la a um módulo. Para mais informações, acesse [**Configurações de CD**.](../../../referencia/configuracao-cd) +Depois de finalizar sua configuração, você pode futuramente associá-la a um módulo. Para mais informações, acesse [**Configurações de CD**.](../../../referencia/preparando-seu-deploy) diff --git "a/content/pt/Primeiros Passos/Definindo um Workspace/A\303\247\303\265es.md" "b/content/pt/Primeiros Passos/Definindo um Workspace/A\303\247\303\265es.md" index 22a399e3..452291c4 100644 --- "a/content/pt/Primeiros Passos/Definindo um Workspace/A\303\247\303\265es.md" +++ "b/content/pt/Primeiros Passos/Definindo um Workspace/A\303\247\303\265es.md" @@ -1,6 +1,7 @@ --- title: Ações weight: 30 +description: 'Nesta seção, você encontra informações sobre as ações de métricas.' --- --- diff --git a/content/pt/Primeiros Passos/Definindo um Workspace/Circle Matcher.md b/content/pt/Primeiros Passos/Definindo um Workspace/Circle Matcher.md index 3c26a082..dbf0b0aa 100644 --- a/content/pt/Primeiros Passos/Definindo um Workspace/Circle Matcher.md +++ b/content/pt/Primeiros Passos/Definindo um Workspace/Circle Matcher.md @@ -2,8 +2,8 @@ title: Circle Matcher weight: 26 description: >- - Esta seção descreve como configurar o Circle Matcher dentro do workspace no - Charles + Nesta seção, você encontra como configurar o Circle Matcher dentro do + workspace no Charles. --- --- diff --git a/content/pt/Primeiros Passos/Definindo um Workspace/Docker Registry.md b/content/pt/Primeiros Passos/Definindo um Workspace/Docker Registry.md index 0835d3ae..22d255db 100644 --- a/content/pt/Primeiros Passos/Definindo um Workspace/Docker Registry.md +++ b/content/pt/Primeiros Passos/Definindo um Workspace/Docker Registry.md @@ -1,6 +1,7 @@ --- title: Docker Registry weight: 22 +description: 'Nesta seção, você encontra tudo sobre o Docker Registry.' --- --- diff --git a/content/pt/Primeiros Passos/Definindo um Workspace/Webhooks.md b/content/pt/Primeiros Passos/Definindo um Workspace/Webhooks.md index 7577f0bf..59cbd24e 100644 --- a/content/pt/Primeiros Passos/Definindo um Workspace/Webhooks.md +++ b/content/pt/Primeiros Passos/Definindo um Workspace/Webhooks.md @@ -27,13 +27,16 @@ Depois do cadastro, um card aparecerá com o status de sucesso ou erro da últim ![Exemplo de mensagem de erro para solicitação do webhooks](//image%20%286%29.png) +As informações do evento são enviadas na propriedade **content**. O seu serviço exposto precisa aceitar essa propriedade no corpo da requisição. + ### **Propriedade comum dos objetos do payload de webhook** -Cada payload de um evento possui propriedades únicas. Você pode encontrá-las nas seções individuais de eventos. Abaixo estão as propriedades comuns: +Cada payload de evento possui propriedades únicas. Você pode encontrá-las nas seções individuais de eventos. Abaixo estão as propriedades comuns: | Key | Tipo | Descrição | | :--- | :--- | :--- | | subscriptionId | String | O id da subscrição do Webhook. | +| subscriptionId | String | O id da subscrição do Webhook. | | executionId | String | O id de execução do evento. Permite rastrear todo ciclo de vida da notificação. | | event | Object | Detalhes do evento. | @@ -43,7 +46,7 @@ Os eventos observáveis são **início** e **finalização** de **deploy** e **u ### Deploy -Quando você cadastra um webhook para receber informações sobre eventos de **deploy** de um determinado workspace, ou quando um deploy for iniciado e finalizado automaticamente, você irá receber uma notificação com detalhes do evento. +Quando você cadastra um webhook para receber informações sobre eventos de **deploy** de um determinado workspace, ou quando um deploy for iniciado e finalizado automaticamente, você irá receber uma notificação com detalhes do evento. Quando o evento é disparado, um payload HTTP POST é enviado a URL do webhook cadastrado. @@ -66,66 +69,64 @@ Veja abaixo: ```text { - "subscriptionId": "5d4c95b4-6f83-11ea-bc55-0242ac130003", - "executionId": "5d4c95b4-6f83-11ea-bc55-0242ac130003", - "event": { - "type": "FINISH_DEPLOY", - "status": "FAIL", - "error": "Failed to pull image nexus.mydomain.co.uk/nginx Error: image nginx:latest not found", - "date": "2020-01-10 22:00:00", - "workspaceId": "5d4c95b4-6f83-11ea-bc55-0242ac130003", - "author": { - "email": "charlescd@zup.com.br", - "name": "CharlesCD" - }, - "circle": { - "id": "5d4c95b4-6f83-11ea-bc55-0242ac130003", - "name": "circle-qas" - }, - "release": { - "tag": "tag", - "modules": [ - { - "id": "5d4c95b4-6f83-11ea-bc55-0242ac130003", - "name": "ZupIt/charlescd", - "componentes": [ - { - "id": "5d4c95b4-6f83-11ea-bc55-0242ac130003", - "name": "charlescd-moove" - }, - { - "id": "5d4c95b4-6f83-11ea-bc55-0242ac130004", - "name": "charlescd-villager" - } - ] - }, - { - "id": "5d4c95b4-6f83-11ea-bc55-0242ac130004", - "name": "ZupIt/horusec", - "componentes": [ - { - "id": "5d4c95b4-6f83-11ea-bc55-0242ac130005", - "name": "horusec-account" - }, - { - "id": "5d4c95b4-6f83-11ea-bc55-0242ac130006", - "name": "horusec-analytics" - } - ] - } - ], - "features": [ - { - "name": "new-moove-feature", - "branchName": "feature/moove-feature" - }, - { - "name": "new-horusec-feature", - "branchName": "feature/horusec-feature" - } - ] - } - } + "content": "{ + "subscriptionId": "5d4c95b4-6f83-11ea-bc55-0242ac130003", + "executionId": "5d4c95b4-6f83-11ea-bc55-0242ac130003", + "event": { + "type": "FINISH_DEPLOY", + "status": "FAIL", + "error": "Failed to pull image nexus.mydomain.co.uk/nginx Error: image nginx:latest not found", + "date": "2020-01-10 22:00:00", + "workspaceId": "5d4c95b4-6f83-11ea-bc55-0242ac130003", + "author": { + "email": "charlescd@zup.com.br", + "name": "CharlesCD" + }, + "circle": { + "id": "5d4c95b4-6f83-11ea-bc55-0242ac130003", + "name": "circle-qas" + }, + "release": { + "tag": "tag", + "modules": [{ + "id": "5d4c95b4-6f83-11ea-bc55-0242ac130003", + "name": "ZupIt/charlescd", + "componentes": [{ + "id": "5d4c95b4-6f83-11ea-bc55-0242ac130003", + "name": "charlescd-moove" + }, + { + "id": "5d4c95b4-6f83-11ea-bc55-0242ac130004", + "name": "charlescd-villager" + } + ] + }, + { + "id": "5d4c95b4-6f83-11ea-bc55-0242ac130004", + "name": "ZupIt/horusec", + "componentes": [{ + "id": "5d4c95b4-6f83-11ea-bc55-0242ac130005", + "name": "horusec-account" + }, + { + "id": "5d4c95b4-6f83-11ea-bc55-0242ac130006", + "name": "horusec-analytics" + } + ] + } + ], + "features": [{ + "name": "new-moove-feature", + "branchName": "feature/moove-feature" + }, + { + "name": "new-horusec-feature", + "branchName": "feature/horusec-feature" + } + ] + } + } + }" } ``` @@ -150,65 +151,66 @@ Quando o evento é disparado, um payload HTTP POST é enviado a URL do webhook c ### Exemplo de payload do evento **de Undeploy** ```text -{ - "subscriptionId": "5d4c95b4-6f83-11ea-bc55-0242ac130003", - "executionId": "5d4c95b4-6f83-11ea-bc55-0242ac130003", - "event": { - "type": "START_UNDEPLOY", - "status": "SUCCESS", - "date": "2020-01-10 22:00:00", - "workspaceId": "5d4c95b4-6f83-11ea-bc55-0242ac130003", - "author": { - "email": "charlescd@zup.com.br", - "name": "CharlesCd" - }, - "circle": { - "id": "5d4c95b4-6f83-11ea-bc55-0242ac130003", - "name": "circle-qas" - }, - "release": { - "tag": "tag", - "modules": [ - { - "id": "5d4c95b4-6f83-11ea-bc55-0242ac130003", - "name": "ZupIt/charlescd", - "componentes": [ - { - "id": "5d4c95b4-6f83-11ea-bc55-0242ac130003", - "name": "charlescd-moove" - }, - { - "id": "5d4c95b4-6f83-11ea-bc55-0242ac130004", - "name": "charlescd-villager" - } - ] - }, - { - "id": "5d4c95b4-6f83-11ea-bc55-0242ac130004", - "name": "ZupIt/horusec", - "componentes": [ - { - "id": "5d4c95b4-6f83-11ea-bc55-0242ac130005", - "name": "horusec-account" - }, - { - "id": "5d4c95b4-6f83-11ea-bc55-0242ac130006", - "name": "horusec-analytics" - } - ] - } - ], - "features": [ - { - "name": "new-moove-feature", - "branchName": "feature/moove-feature" - }, - { - "name": "new-horusec-feature", - "branchName": "feature/horusec-feature" - } - ] +"content": "{ + "subscriptionId": "5d4c95b4-6f83-11ea-bc55-0242ac130003", + "executionId": "5d4c95b4-6f83-11ea-bc55-0242ac130003", + "event": { + "type": "START_UNDEPLOY", + "status": "SUCCESS", + "date": "2020-01-10 22:00:00", + "workspaceId": "5d4c95b4-6f83-11ea-bc55-0242ac130003", + "author": { + "email": "charlescd@zup.com.br", + "name": "CharlesCd" + }, + "circle": { + "id": "5d4c95b4-6f83-11ea-bc55-0242ac130003", + "name": "circle-qas" + }, + "release": { + "tag": "tag", + "modules": [ + { + "id": "5d4c95b4-6f83-11ea-bc55-0242ac130003", + "name": "ZupIt/charlescd", + "componentes": [ + { + "id": "5d4c95b4-6f83-11ea-bc55-0242ac130003", + "name": "charlescd-moove" + }, + { + "id": "5d4c95b4-6f83-11ea-bc55-0242ac130004", + "name": "charlescd-villager" + } + ] + }, + { + "id": "5d4c95b4-6f83-11ea-bc55-0242ac130004", + "name": "ZupIt/horusec", + "componentes": [ + { + "id": "5d4c95b4-6f83-11ea-bc55-0242ac130005", + "name": "horusec-account" + }, + { + "id": "5d4c95b4-6f83-11ea-bc55-0242ac130006", + "name": "horusec-analytics" + } + ] + } + ], + "features": [ + { + "name": "new-moove-feature", + "branchName": "feature/moove-feature" + }, + { + "name": "new-horusec-feature", + "branchName": "feature/horusec-feature" + } + ] + } } - } + }" } ``` diff --git a/content/pt/Primeiros Passos/Definindo um Workspace/_index.md b/content/pt/Primeiros Passos/Definindo um Workspace/_index.md index d87ff2ca..83ded960 100644 --- a/content/pt/Primeiros Passos/Definindo um Workspace/_index.md +++ b/content/pt/Primeiros Passos/Definindo um Workspace/_index.md @@ -17,7 +17,7 @@ Com apenas uma instalação, vários times podem utilizar o Charles com configur Cada workspace possui as seguintes configurações: * Definição dos acessos e [**permissões dos grupos de usuários**.](../../../../../referencia/grupos-de-usuarios#permissoes-para-o-grupo-de-usuarios-no-workspace) -* Cadastros de credenciais do [**Git**]()**,** [**Docker Registry**](docker-registry) e de [**Continuous Deployment \(CD\)**](../../../../referencia/configuracao-cd). +* Cadastros de credenciais do [**Git**]()**,** [**Docker Registry**](docker-registry) e de [**Continuous Deployment \(CD\)**](../../../../referencia/preparando-seu-deploy). * Personalização do [**Circle Matcher**](../../../referencia/circle-matcher). * Registro do [**Provedor de Métricas**](adicionando-o-datasource) das suas aplicações. diff --git a/content/pt/Primeiros Passos/Instalando o Charles/Instalando via Helm.md b/content/pt/Primeiros Passos/Instalando o Charles/Instalando via Helm.md index 266fa203..782379a6 100644 --- a/content/pt/Primeiros Passos/Instalando o Charles/Instalando via Helm.md +++ b/content/pt/Primeiros Passos/Instalando o Charles/Instalando via Helm.md @@ -6,51 +6,41 @@ description: 'Nesta seção, você encontra como instalar o Charles via Helm.' --- -{{% alert color="info" %}} +{{% alert color="warning" %}} Antes de prosseguir, tenha certeza de que todos os [**pré-requisitos**](.././#pre-requisitos) estão devidamente instalados. {{% /alert %}} -Esta instalação é indicada para quem possui uma infraestrutura já montada, devido um ambiente mais complexo ou há algumas limitações de segurança e/ou escalabilidade, o que exige uma **customização mais completa da instalação** do CharlesCD. - -### Requisitos - -Para realizar o processo, é necessário ter instalado: - -* [**Kubectl**](https://kubernetes.io/docs/tasks/tools/install-kubectl/) -* [**Helm** ](https://helm.sh/docs/intro/install/) +## Como instalar? -### Como instalar? +O principal diferencial nessa instalação é a customização. E para instalar, você tem acesso a um **template helm** com todos os campos disponíveis para alteração, incluindo os de banco de dados e recursos consumidos. Veja a [**documentação dos campos editáveis**](https://github.com/ZupIT/charlescd/tree/master/install/helm-chart) -Aqui o principal diferencial é a customização. Para isso, foi disponibilizado um **template helm** com todos os campos disponíveis para alteração, incluindo os de banco de dados e recursos consumidos. Você encontra [aqui toda a **documentação dos campos editáveis**.](https://github.com/ZupIT/charlescd/tree/master/install/helm-chart) - -{{% alert color="warning" %}} -As senhas utilizadas pelo Charles estão armazenadas no arquivo [**values.yaml**](https://github.com/ZupIT/charlescd/blob/master/install/helm-chart/values.yaml) As principais senhas para personalizar estão em: - -* 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" %}} +As senhas utilizadas pelo Charles estão armazenadas no arquivo [**values.yaml**](https://github.com/ZupIT/charlescd/blob/main/install/helm-chart/values.yaml) As principais senhas para personalizar são: + +* 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 Para mais detalhes, acesse o link citado acima, que possui toda a documentação dos campos editáveis. {{% /alert %}} -Para realizar a instalação com helm charts, basta executar o comando abaixo após a customização dos campos: +Para instalar com helm charts, execute o comando abaixo, dentro da pasta _**/charlescd/install/helm-chart,**_ após a customização dos campos: ```text -// customize tudo que precisa no arquivo values.yaml antes de executar o seguinte comando -helm install charlescd -n +heml install --create-namespace -n charlescd . -f values.yaml ``` {{% alert color="warning" %}} -É importante lembrar que, caso não seja feita nenhuma customização, o resultado final será igual à instalação via singlefile em que, por padrão, instalamos o PostgreSQL, Redis, Keycloak e Octopipe. - -Por isso, não deixe de customizar os campos caso queira algo gerenciável. +É importante lembrar que, caso não seja feita nenhuma customização, por padrão o Charles instala o PostgreSQL, Redis, Keycloak e RabbitMQ. Por isso, não deixe de customizar os campos caso queira algo gerenciável. {{% /alert %}} ### Troque a senha padrão \(default password\) diff --git a/content/pt/Primeiros Passos/Instalando o Charles/Seu primeiro acesso ao Charles.md b/content/pt/Primeiros Passos/Instalando o Charles/Seu primeiro acesso ao Charles.md index 76749d95..cf89e061 100644 --- a/content/pt/Primeiros Passos/Instalando o Charles/Seu primeiro acesso ao Charles.md +++ b/content/pt/Primeiros Passos/Instalando o Charles/Seu primeiro acesso ao Charles.md @@ -40,7 +40,7 @@ kubectl get svc -n charles ``` {{% alert color="info" %}} -Para mais informações de como mudar o host do seu sistema, [**acesse aqui**](https://www.howtogeek.com/howto/27350/beginner-geek-how-to-edit-your-hosts-file/). +Veja mais sobre como mudar [**o host do seu sistema**](https://www.howtogeek.com/howto/27350/beginner-geek-how-to-edit-your-hosts-file/). {{% /alert %}} **Passo 3:** Por fim, digite no seu navegador **http://charles.info.example** e a aplicação estará disponível. @@ -50,7 +50,7 @@ Para mais informações de como mudar o host do seu sistema, [**acesse aqui**](h O Microk8s está disponível para as Plataformas do Microsoft Windows, Apple MacOS e para Linux. {{% alert color="info" %}} -Para mais informações sobre como instalar o **Microk8s**, [**visite o site do projeto**](https://microk8s.io). +Acesse o site do projeto para saber mais sobre [**como instalar o Microk8s**](https://microk8s.io/) {{% /alert %}} Uma vez instalado o Microk8s, você deve habilitar os seguintes add-ons: @@ -121,7 +121,7 @@ microk8s.kubectl get svc -n charles ``` {{% alert color="info" %}} -Para mais informações sobre como mudar o **host file**, [**acesse aqui**](https://www.howtogeek.com/howto/27350/beginner-geek-how-to-edit-your-hosts-file/). +Veja mais sobre como mudar o [**host file**](https://www.howtogeek.com/howto/27350/beginner-geek-how-to-edit-your-hosts-file/) {{% /alert %}} **Passo 3:** Digite no seu navegador **http://charles.info.example** e a aplicação estará disponível. diff --git a/content/pt/Primeiros Passos/Instalando o Charles/_index.md b/content/pt/Primeiros Passos/Instalando o Charles/_index.md index 361ae406..bb24d33d 100644 --- a/content/pt/Primeiros Passos/Instalando o Charles/_index.md +++ b/content/pt/Primeiros Passos/Instalando o Charles/_index.md @@ -11,26 +11,26 @@ description: Esta seção descreve como instalar o Charles no seu projeto. A instalação do CharlesCD consiste nos seguintes **componentes**: 1. Módulos específicos da[ **arquitetura do Charles**](../../#arquitetura-do-sistema) -2. **Keycloak**, usado para autenticação e autorização no projeto. -3. Um **banco PostgreSQL** que servirá os módulos de backend \(`moove`, `butler` ,`villager` e `charlescd-compass`\) e o Keycloak. +2. **Keycloak**, usado para autenticação e autorização no projeto. Entretanto, caso você já tenha um Identity Manager \(IDM\) e queira utilizá-lo, basta fazer a sua configuração durante a instalação do Charles, [**veja como habilitá-lo na seção IDM**](../../../../referencia/identity-manager) +3. Um **banco PostgreSQL** que servirá os módulos de backend \(`charlescd-moove` + + , `charlescd-butler`, `charlescd-villager`, `charlescd-gate, charlescd-hermes` + + e `charlescd-compass`\) e o Keycloak. + 4. Um **Redis** para uso do `charlescd-circle-matcher` 5. Um módulo chamado **`octopipe`** está na instalação padrão do Charles. É uma plataforma nativa criada pelo time para que a instalação seja mais fácil e sem configurações prévias. Entretanto, é opcional e você pode desabilitá-la. +6. Um **RabbitMQ** para uso do `charlescd-hermes.` +7. **Ingress,** usado para expor as rotas HTTP e HTTPs de fora do cluster para serviços dentro do cluster. Quando você instala o Charles, ele já possui uma ingress padrão, no entanto se você quiser usar a sua própria, **veja os passos para habilitá-la na** [**seção Instalando via Helm**](../../configuracoes-opcionais/configurando-sua-ingress) ## Pré-Requisitos Para instalar o Charles, será necessário um ambiente com os seguintes requisitos: -* [**Kubernetes**](https://kubernetes.io/docs/setup/). +* [**Kubernetes**](https://kubernetes.io/docs/setup/) +* [**Helm** ](https://helm.sh/docs/intro/install/) * [**Istio**](https://istio.io/archive/) \(versão >= 1.7 e [_**sidecar injector habilitado**_](https://istio.io/latest/docs/setup/additional-setup/sidecar-injection/#automatic-sidecar-injection) no namespace de deploy das suas aplicações\). * [**Prometheus**](https://prometheus.io/docs/prometheus/latest/getting_started/)**,** caso queira utilizar [**métricas**](../../referencia/metricas/) -* [**Ingress**](https://github.com/kubernetes/ingress-nginx) -* [**RabbitMQ**](https://www.rabbitmq.com/#getstarted), caso queira utilizar [**webhooks**](). - -{{% alert color="warning" %}} -**O que é Ingress?** É um mecanismo que expõe as rotas de HTTP e HTTPS de fora do cluster para serviços dentro do cluster. Você pode ver mais sobre isso[ **aqui.**](https://kubernetes.io/docs/concepts/services-networking/ingress/#what-is-ingress) - -Quando você instala o Charles, ele já possui uma ingress padrão, no entanto se você quiser usar a sua própria, [**veja os passos para habilitá-la.** ](.././#ingress) -{{% /alert %}} ## Recursos mínimos diff --git "a/content/pt/Primeiros Passos/Usando C\303\255rculos.md" "b/content/pt/Primeiros Passos/Usando C\303\255rculos.md" index adc083c0..6cee3052 100644 --- "a/content/pt/Primeiros Passos/Usando C\303\255rculos.md" +++ "b/content/pt/Primeiros Passos/Usando C\303\255rculos.md" @@ -1,6 +1,7 @@ --- title: Usando Círculos weight: 44 +description: 'Nesta seção, você encontra mais detalhes de como usar círculos.' --- --- diff --git a/content/pt/Principais Conceitos.md b/content/pt/Principais Conceitos.md index 4fa84962..7d344929 100644 --- a/content/pt/Principais Conceitos.md +++ b/content/pt/Principais Conceitos.md @@ -23,12 +23,6 @@ Por exemplo, é possível [**criar um círculo**](referencia/circulo#como-criar- Fazem parte dos [**módulos**](primeiros-passos/criando-seu-primeiro-modulo/) que são criados dentro do Charles. Os componentes funcionam como abstrações das aplicações, o que significa dizer que eles possuem suas próprias configurações e que cada parte deles corresponde a uma aplicação do módulo em que você estiver trabalhando. Caso você trabalhe com um monorepo, cada uma das suas aplicações serão cadastradas como componentes dentro de um único módulo. -## **Hipóteses** - -Aplicando Desenvolvimento Orientado à Hipótese \(_Hypothesis-Driven Development_\) ou não, uma hipótese representará o desenvolvimento de uma nova ideia que será utilizada como experimento para alcançar um resultado esperado. Caso o resultado não seja atingido, novas hipóteses com outras abordagens podem ser criadas e mensuradas até que realmente se tenha o resultado desejado ou até mesmo se prove que a ideia não é viável. - -No Charles, as hipóteses podem conter uma ou mais features, que estão relacionadas diretamente aos módulos que foram cadastrados anteriormente ao seu [**workspace**.](primeiros-passos/definindo-workspace/) - ## Mar Aberto \(Default\) O termo, cunhado com o Charles, se refere a uma segmentação genérica em que estão presentes todos os usuários inseridos na plataforma que não estão vinculados a um círculo. diff --git "a/content/pt/Refer\303\252ncia/Circle Matcher.md" "b/content/pt/Refer\303\252ncia/Circle Matcher.md" index f90ccd92..2b72ebc6 100644 --- "a/content/pt/Refer\303\252ncia/Circle Matcher.md" +++ "b/content/pt/Refer\303\252ncia/Circle Matcher.md" @@ -1,6 +1,6 @@ --- title: Circle Matcher -weight: 49 +weight: 51 description: 'Nesta seção, você encontra detalhes sobre como funciona o Circle Matcher.' --- @@ -22,19 +22,13 @@ Para mais informações de como configurar seu Circle Matcher em um workspace,[ ### Identificando círculos através do CharlesCD -Ao utilizar a interface é possível perceber que existem duas formas de realizar a identificação dos círculos. Para isto, acesse o menu **Circles** dentro de um **workspace** e selecione o ícone indicado abaixo: +Ao utilizar a interface é possível perceber que existe uma forma de realizar a identificação dos círculos. Para isto, acesse o menu **Circles** dentro de um **workspace** e selecione o ícone indicado abaixo: ![](//circle-matcher%20%282%29.png) -As duas formas de realizar essa validação são: +Você adiciona manualmente chaves e valores que definem as características de um usuário de teste. E, com base nisso, ao executar o **Try**, você receberá todos os círculos que ele se encaixa. -* **Default:** nessa opção, você adiciona manualmente chaves e valores que definem as características de um usuário de teste. E, com base nisso, ao executar o **Try**, você receberá todos os círculos que ele se encaixa. - -![Identificação dos seus círculos com a opção Default.](//circle-matcher-default%20%281%29.gif) - -* **JSON:** é similar à opção anterior, só que aqui você pode copiar e colar no **campo de payload** um **JSON** do seu ambiente produtivo ao invés de adicionar manualmente. - -![Identificação dos seus círculos com a opção JSON.](//circle-matcher-json%20%281%29.gif) +![](//circle-matcher.gif) {{% alert color="warning" %}} Se você passar informações que estejam fora das condições lógicas configuradas nos círculos, o sistema irá retornar que aquele usuário está no círculo _Default_, ou seja, na versão padrão da sua aplicação. diff --git "a/content/pt/Refer\303\252ncia/Configura\303\247\303\243o de Cd.md" "b/content/pt/Refer\303\252ncia/Configura\303\247\303\243o de Cd.md" deleted file mode 100644 index 8190e1ef..00000000 --- "a/content/pt/Refer\303\252ncia/Configura\303\247\303\243o de Cd.md" +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Configuração de Cd -weight: 51 -description: >- - Nesta seção, você encontra detalhes sobre a configuração das ferramentas de - Continuous Deployment (CD). ---- - ---- - -## Por que configurar o CD? - -Essa configuração é necessária para você indicar ao Charles qual é a ferramenta de CD que você utiliza para fazer os deploys no seu cluster. Outro ponto importante é que você deve fornecer o token do seu repositório git que contém os templates do helm. - -Atualmente, o Charles está habilitado para usar **CharlesCD** \(Octopipe\). - -{{% alert color="info" %}} -O CharlesCD está em constante evolução e, por isso, está previsto no roadmap do projeto a integração com mais ferramentas de CD. -{{% /alert %}} - -## Como configurar? - -O Charles utiliza uma arquitetura apropriada para ferramentas de Continuous Deployment \(CD\) e isso possibilita que ele se encaixe no ecossistema escolhido por você. Estas ferramentas são utilizadas para realizar a execução dos manifestos Kubernetes no cluster configurado e para fazer a autenticação com diversos provedores de cloud \(AWS, GCP, Azure\). - -Para configurar, você irá utilizar o CharlesCD. Agora, é preciso preencher alguns campos com as autenticações que serão feitas no cluster. - -* **CharlesCD**: é uma ferramenta leve e de baixo custo, criada pelo time do Charles para fazer deploys. - -Para cadastrar, siga os seguintes passos: - -1. Na tela inicial do Charles, selecione **Settings** no canto esquerdo inferior; -2. Clique em **Credentials**; -3. Clique em **Add CD Configuration**; -4. Selecione a opção **CharlesCD.** - -## Utilizando CharlesCD - -Preencha os seguintes campos: - -1. **Name:** nome da configuração que será criada; -2. **Namespace:** defina o namespace que será utilizado nos deploys no cluster Kubernetes. Você deve criar o seu namespace, uma vez que o Charles não faz isso; -3. **Git provider**: defina o provedor de git a ser utilizado \(**GitHub ou GitLab**\); -4. **Git token:** insira um token de autenticação que tenha acesso repositório git onde está armazenado seus [**templates Helm**](../../primeiros-passos/criando-seu-primeiro-modulo/configurando-o-chart-template) que serão utilizados durante o deployment da sua [**aplicação**](../../primeiros-passos/criando-seu-primeiro-modulo/). Caso o seu Git Provider seja **GitHub**, é necessário a permissão "_repo_". Se não, configure no **GitLab** os acessos: "_api_ " e "_read\_repository_". -5. Selecione um **manager** para associar à CD Configuration. As opções são: **Default**, **EKS**, **Others.** - -### Default - -Esta opção deve ser utilizada quando o cluster de destino das aplicações é o mesmo em que o Octopipe está instalado. Desta forma, não é necessário criar nenhum mecanismo extra de autenticação. - -### EKS - -Para clusters gerenciados pelo EKS \(Elastic Kubernetes Service\), basta selecionar a opção e inserir os seguintes campos: - -1. **AWS SID**: Statement ID; -2. **AWS Secret**: Chave de acesso ao cluster EKS; -3. **AWS Region**: Região onde o cluster EKS está instalado; -4. **AWS Cluster Name**: Nome do cluster EKS. - -### Others - -Para outros provedores de cloud, utilizamos uma abordagem mais simples em que apenas alguns campos do _kubeconfig_ devem ser utilizados. São eles: - -1. **Host**: Url de acesso ao cluster; -2. **Client Certificate**: Campo "client-certificate-data" do _kubeconfig_; -3. **Client Key**: Campo "client-key-data" do _kubeconfig_; -4. **CA Data**: Campo "certificate-authority-data" do _kubeconfig._ - -Todas as informações providenciadas acima são criptografadas pelo Charles. Uma vez que este processo foi feito, é possível associar as configurações em módulos e, em seguida, realizar o deploy de versões deles. diff --git "a/content/pt/Refer\303\252ncia/C\303\255rculo.md" "b/content/pt/Refer\303\252ncia/C\303\255rculo.md" index c15670b8..8b769631 100644 --- "a/content/pt/Refer\303\252ncia/C\303\255rculo.md" +++ "b/content/pt/Refer\303\252ncia/C\303\255rculo.md" @@ -1,6 +1,6 @@ --- title: Círculo -weight: 47 +weight: 49 description: >- Nesta seção, você encontra detalhes sobre como funcionam os círculos no Charles. @@ -175,7 +175,7 @@ Para obter essa informação, siga estes passos: 2. Clique em "default" 3. E, no menu à esquerda, clique em **Copy ID** -![](//como-obter-o-identificador-do-meu-circulo.gif) +![](//circle_copyid%20%281%29.gif) ## Círculos ativos e inativos diff --git "a/content/pt/Refer\303\252ncia/Grupo de Usu\303\241rios.md" "b/content/pt/Refer\303\252ncia/Grupo de Usu\303\241rios.md" index efb69bd3..6e2fb869 100644 --- "a/content/pt/Refer\303\252ncia/Grupo de Usu\303\241rios.md" +++ "b/content/pt/Refer\303\252ncia/Grupo de Usu\303\241rios.md" @@ -1,6 +1,6 @@ --- title: Grupo de Usuários -weight: 53 +weight: 55 description: >- Nesta seção, você encontra detalhes sobre como funcionam os Grupos de Usuários no Charles. @@ -30,7 +30,7 @@ Os seguintes perfis são suportados: * **Mantenedor**: pode acessar e editar todas as configurações do workspace. Ele pode realizar implantações, e também tem a permissão para criar, editar e deletar círculos e módulos. * **Desenvolvedor**: possui acesso para realizar implantações e também pode criar, editar, deletar círculos e módulos. -* **Analista**: possui permissão para criar, editar e deletar círculos e módulos. E também pode visualizar as configurações dos módulos. +* **Analista**: pode visualizar módulos. Possui permissão para criar, editar e deletar círculos. * **Leitor**: pode visualizar círculos e módulos. ![Escolha de permissão ao associar um grupo de usuários a um workspace.](//chrome-capture-3-.gif) @@ -55,7 +55,6 @@ Segue abaixo as permissões vinculadas a cada perfil: | | Visualizar | ✔ | ✔ | ✔ | ✔ | | **Circle** | Criar/Editar/Deletar | ✔ | ✔ | ✔ | | | | Visualizar | ✔ | ✔ | ✔ | ✔ | -| | Visualizar | ✔ | ✔ | ✔ | ✔ | | **Modules** | Criar/Editar/Deletar | ✔ | ✔ | | | | | Visualizar | ✔ | ✔ | ✔ | ✔ | | **Deploy** | Fazer deployments | ✔ | ✔ | | | diff --git "a/content/pt/Refer\303\252ncia/Identity Manager.md" "b/content/pt/Refer\303\252ncia/Identity Manager.md" index f6a4b359..721bde84 100644 --- "a/content/pt/Refer\303\252ncia/Identity Manager.md" +++ "b/content/pt/Refer\303\252ncia/Identity Manager.md" @@ -1,6 +1,6 @@ --- title: Identity Manager -weight: 55 +weight: 57 description: 'Nesta seção, você encontra detalhes de como funciona o Identity Manager (IDM).' --- diff --git "a/content/pt/Refer\303\252ncia/M\303\251tricas/A\303\247\303\265es.md" "b/content/pt/Refer\303\252ncia/M\303\251tricas/A\303\247\303\265es.md" index 4cd614f6..4b98d3a9 100644 --- "a/content/pt/Refer\303\252ncia/M\303\251tricas/A\303\247\303\265es.md" +++ "b/content/pt/Refer\303\252ncia/M\303\251tricas/A\303\247\303\265es.md" @@ -1,6 +1,6 @@ --- title: Ações -weight: 76 +weight: 80 description: 'Nesta seção, você encontra mais informações sobre Actions.' --- diff --git "a/content/pt/Refer\303\252ncia/M\303\251tricas/Configurando as m\303\251tricas.md" "b/content/pt/Refer\303\252ncia/M\303\251tricas/Configurando as m\303\251tricas.md" index 7564d4de..69c90174 100644 --- "a/content/pt/Refer\303\252ncia/M\303\251tricas/Configurando as m\303\251tricas.md" +++ "b/content/pt/Refer\303\252ncia/M\303\251tricas/Configurando as m\303\251tricas.md" @@ -1,6 +1,6 @@ --- title: Configurando as métricas -weight: 72 +weight: 76 description: >- Nesta seção, você encontra detalhe de como configurar suas métricas no Charles. @@ -48,49 +48,87 @@ global: scrape_timeout: 10s evaluation_interval: 15s scrape_configs: + - job_name: charles-metrics + honor_timestamps: true + scrape_interval: 5s + scrape_timeout: 5s + metrics_path: /v1/metrics + scheme: http + kubernetes_sd_configs: + - role: endpoints + namespaces: + names: + - namespace1 + - namespace2 + relabel_configs: + - separator: ; + regex: _meta_kubernetes_pod_label(.+) + replacement: $1 + action: labelmap + - source_labels: [__meta_kubernetes_pod_label_circleId] + separator: ; + regex: (.*) + target_label: circle_source + replacement: $1 + action: replace + - source_labels: [__meta_kubernetes_pod_label_version] + separator: ; + regex: (.*) + target_label: version + replacement: $1 + action: replace + - source_labels: [__meta_kubernetes_pod_name] + separator: ; + regex: (.*) + target_label: pod_name + replacement: $1 + action: replace - job_name: kubernetes-pods - kubernetes_sd_configs: - - role: pod - relabel_configs: - - action: keep - regex: true - source_labels: - - __meta_kubernetes_pod_annotation_prometheus_io_scrape - - action: replace - regex: (.+) - source_labels: - - __meta_kubernetes_pod_annotation_prometheus_io_path - target_label: __metrics_path__ - - action: replace - regex: ([^:]+)(?::\d+)?;(\d+) - replacement: $1:$2 - source_labels: - - __address__ - - __meta_kubernetes_pod_annotation_prometheus_io_port - target_label: __address__ - - action: replace - source_labels: - - __meta_kubernetes_namespace - target_label: kubernetes_namespace - - action: replace - source_labels: - - __meta_kubernetes_pod_label_circleId - target_label: circle_source - - action: replace - source_labels: - - __meta_kubernetes_pod_label_component - target_label: destination_component - - action: replace - source_labels: - - __meta_kubernetes_pod_name - target_label: kubernetes_pod_name - - action: drop - regex: Pending|Succeeded|Failed - source_labels: - - __meta_kubernetes_pod_phase - + kubernetes_sd_configs: + - role: pod + relabel_configs: + - action: keep + regex: true + source_labels: + - __meta_kubernetes_pod_annotation_pryometheus_io_scrape + - action: replace + regex: (.+) + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_path + target_label: __metrics_path__ + - action: replace + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + source_labels: + - __address__ + - __meta_kubernetes_pod_annotation_prometheus_io_port + target_label: __address__ + - action: replace + source_labels: + - __meta_kubernetes_namespace + target_label: kubernetes_namespace + - action: replace + source_labels: + - __meta_kubernetes_pod_label_circleId + target_label: circle_source + - action: replace + source_labels: + - __meta_kubernetes_pod_label_component + target_label: destination_component + - action: replace + source_labels: + - __meta_kubernetes_pod_name + target_label: kubernetes_pod_name + - action: drop + regex: Pending|Succeeded|Failed + source_labels: + - __meta_kubernetes_pod_phase ``` +{{% alert color="info" %}} +Mude o nome do **namespace** para um onde sua aplicação está deployada. +{{% /alert %}} + {{% alert color="warning" %}} Para saber mais sobre o serviço de discovery do Prometheus e Kubernetes, [**veja a documentação**](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config). {{% /alert %}} diff --git "a/content/pt/Refer\303\252ncia/M\303\251tricas/Grupo de m\303\251tricas para monitorar a sa\303\272de.md" "b/content/pt/Refer\303\252ncia/M\303\251tricas/Grupo de m\303\251tricas para monitorar a sa\303\272de.md" index 51c1ac5e..dfe48d07 100644 --- "a/content/pt/Refer\303\252ncia/M\303\251tricas/Grupo de m\303\251tricas para monitorar a sa\303\272de.md" +++ "b/content/pt/Refer\303\252ncia/M\303\251tricas/Grupo de m\303\251tricas para monitorar a sa\303\272de.md" @@ -1,6 +1,9 @@ --- title: Grupo de métricas para monitorar a saúde -weight: 78 +weight: 82 +description: >- + Nesta seção, você encontra detalhes sobre o grupo de métricas para monitorar a + saúde do seu software. --- --- diff --git "a/content/pt/Refer\303\252ncia/M\303\251tricas/Grupo de m\303\251tricas.md" "b/content/pt/Refer\303\252ncia/M\303\251tricas/Grupo de m\303\251tricas.md" index e1bd85f8..f384bb1b 100644 --- "a/content/pt/Refer\303\252ncia/M\303\251tricas/Grupo de m\303\251tricas.md" +++ "b/content/pt/Refer\303\252ncia/M\303\251tricas/Grupo de m\303\251tricas.md" @@ -1,6 +1,6 @@ --- title: Grupo de métricas -weight: 74 +weight: 78 description: >- Nesta seção, você encontra detalhes sobre como funcionam os grupos de métricas no Charles. diff --git "a/content/pt/Refer\303\252ncia/M\303\251tricas/M\303\251tricas do Charles.md" "b/content/pt/Refer\303\252ncia/M\303\251tricas/M\303\251tricas do Charles.md" index 2120ed56..910b597d 100644 --- "a/content/pt/Refer\303\252ncia/M\303\251tricas/M\303\251tricas do Charles.md" +++ "b/content/pt/Refer\303\252ncia/M\303\251tricas/M\303\251tricas do Charles.md" @@ -1,6 +1,6 @@ --- title: Métricas do Charles -weight: 80 +weight: 84 description: 'Nesta seção, você encontra mais informações sobre métricas do Charles.' --- diff --git "a/content/pt/Refer\303\252ncia/M\303\251tricas/_index.md" "b/content/pt/Refer\303\252ncia/M\303\251tricas/_index.md" index ea73813e..ad8251ad 100644 --- "a/content/pt/Refer\303\252ncia/M\303\251tricas/_index.md" +++ "b/content/pt/Refer\303\252ncia/M\303\251tricas/_index.md" @@ -1,6 +1,6 @@ --- title: Métricas -weight: 70 +weight: 74 description: >- Nesta seção, você encontra detalhes sobre como funciona a mensuração de métricas de suas aplicações usando o Charles. diff --git "a/content/pt/Refer\303\252ncia/Preparando o seu Deploy.md" "b/content/pt/Refer\303\252ncia/Preparando o seu Deploy.md" new file mode 100644 index 00000000..ed9b11ed --- /dev/null +++ "b/content/pt/Refer\303\252ncia/Preparando o seu Deploy.md" @@ -0,0 +1,145 @@ +--- +title: Preparando o seu Deploy +weight: 53 +description: >- + Nesta seção você encontra detalhes de como configurar o módulo de deploy do + Charles e como preparar suas aplicações para serem disponibilizadas no + cluster. +--- + +--- + +O módulo de deploy aplica e monitora os recursos no cluster. E para fazer isso, ele utiliza o padrão [**Operator**](https://kubernetes.io/docs/concepts/extend-kubernetes/operator) que realiza os ciclos de reconciliação garantindo que o cluster sempre estará no estado que você precisa. Os logs do Kubernetes também serão coletados em tempo real. + +## **Configuração de Deployment** + +O Charles possui uma arquitetura adaptável a diferentes instalações Kubernetes. O único requisito é que seu módulo de deploy esteja instalado no cluster de destino com uma URL acessível. A configuração de deployment indica qual é essa URL e quais credenciais do Git serão utilizadas para buscar os charts helm. Sem esta configuração o Charles não conseguirá realizar deploys. + +### **Como cadastrar a configuração?** + +Siga os passos abaixo: + +1. Em **Workspaces,** no menu lateral esquerdo, selecione o workspace desejado, em seguida selecione **Settings ;** +2. Clique em **Credentials;** +3. Clique em **Add Deployment Configuration;** + +Preencha os seguintes campos: + +1. **Butler URL:** URL do módulo de deploy Butler. Caso este esteja no mesmo cluster de instalação do Charles, utilize seu FQDN \(Fully Qualified Domain Name\). Exemplo: http://charlescd-butler.butler-namespace.svc.cluster.local:3000. +2. **Namespace:** Defina o namespace em que os recursos serão disponibilizados no cluster. Você deve criar o seu namespace, uma vez que o Charles não faz isso; +3. **Git provider:** Defina o provedor de git a ser utilizado \(**GitHub** ou **GitLab**\); +4. **Git token:** Insira um token de autenticação que tenha acesso repositório git onde está armazenado seus [**templates Helm**](../../primeiros-passos/criando-seu-primeiro-modulo/configurando-o-chart-template) que serão utilizados durante o deployment da sua [**aplicação**](../../primeiros-passos/criando-seu-primeiro-modulo/). Caso o seu Git Provider seja **GitHub**, é necessário a permissão "_repo_". Se não, configure no **GitLab** os acessos: "_api_ " e "_read\_repository_". + +## **Configurando sua aplicação** + +O módulo de deploy Butler utiliza charts helm para disponibilizar as suas aplicações no Cluster. Esses charts devem estar disponíveis em um repositório Github ou Gitlab e acessíveis por meio do token cadastrado na configuração de deployment. A URL deles é providenciada junto ao cadastro do módulo. + +### **Charts** + +Os charts devem seguir o [**padrão do Helm**](https://helm.sh/docs/topics/charts/), e precisam estar contidos dentro de uma pasta com o nome da componente cadastrada no Charles. Você não precisa executar nenhum comando para empacotar o chart, o Charles faz o download dos arquivos e finaliza tudo automaticamente. + +Veja abaixo o exemplo de um repositório contendo o chart da componente **http-https-echo** no GitHub: + +![](https://lh5.googleusercontent.com/Rt7_Lw1DbK152QKt3brsCYyzF0DAQ4wuoWsdCVyUaZjf9Hlh64EaK7YnHjF16W_xo2BQzlUJyUeUsooPzqwmMIKF7ttUXRej3eM56uWu6WH4QNCiByixeV4zEdHLwEGRq7NCruhH) + +### **Templates** + +O único requisito para que os templates funcionem com o Charles é que as **labels component** e **tag** estejam presentes nos manifestos do recurso Deployment. + +{{% alert color="info" %}} +Não é necessário inserir os valores no arquivo de _**values**_ do seu chart, o Charles irá provê-los automaticamente. +{{% /alert %}} + +Veja o exemplo abaixo: + +```text +component: {{ .Values.component }} +tag: {{ .Values.tag }} +``` + +Internamente o Butler armazena os charts compilados em entidades que representam cada solicitação de deploy. Desta forma**,** o Charles realiza rollbacks mais eficientes. + + +### **Injeção de propriedades** + +Uma operação muito importante e que deve ser levada em consideração no momento de preparar suas aplicações é a injeção de propriedades nos manifestos realizada pelo Butler. São essas: + +* **name:** Nome do recurso Kubernetes. Alguns recursos manejados pelo Charles precisam ter os seus nomes alterados para que seja possível disponibilizar versões diferentes de uma mesma aplicação em círculos diferentes. A propriedade name terá o seguinte valor: **<originalManifest.metadata.name>-<tag>-<deploymentId>** +* **originalManifest.metadata.name:** Nome gerado pelo chart da aplicação; +* **tag:** Tag da imagem; +* **deploymentId:** Identificador único da entidade deployment criada pelo Butler. + +{{% alert color="warning" %}} +Essa atualização ocorre apenas nos recursos do tipo **Deployment.** +{{% /alert %}} + +* **namespace:** Namespace destino do deployment. Este namespace é especificado durante a configuração do Workspace e indica em qual namespace o deployment acontecerá. Se os charts inserirem este valor nos manifestos, o Charles irá sobrescrevê-los. +* **labels:** Labels dos recursos Kubernetes. Para que o ciclo de reconciliação do Butler e as rotas criadas pelo Istio funcionem corretamente, é necessário que alguns labels estejam disponíveis em todos os recursos aplicados no cluster. São eles: + * **deploymentId:** Identificador único da entidade deployment criada pelo Butler; + * **circleId:** Identificador único do círculo onde o deployment será criado. + +Veja um exemplo abaixo de um manifesto gerado após a compilação do chart: + + +```text +apiVersion: apps/v1 +kind: Deployment +metadata: + name: http-https-echo + labels: + component: http-https-echo + tag: v1 +spec: + template: + metadata: + name: http-https-echo + labels: + component: http-https-echo + tag: v1 + spec: + containers: + - name: http-https-echo + image: mendhak/http-https-echo:latest + replicas: 1 + selector: + matchLabels: + component: http-https-echo + +``` + + +Após a injeção de propriedades este mesmo manifesto assumirá a seguinte forma: + +```text +apiVersion: apps/v1 +kind: Deployment +metadata: + name: http-https-echo-v1-bc0e1df9-c008-4d86-b534-d782badf3741 + namespace: example-namespace + labels: + component: http-https-echo + tag: v1 + deploymentId: bc0e1df9-c008-4d86-b534-d782badf3741 + circleId: b4b62bc2-4dfd-4673-bc67-cc2cbcf9bb2f +spec: + template: + metadata: + name: http-https-echo + labels: + component: http-https-echo + tag: v1 + deploymentId: bc0e1df9-c008-4d86-b534-d782badf3741 + circleId: b4b62bc2-4dfd-4673-bc67-cc2cbcf9bb2f + spec: + containers: + - name: http-https-echo + image: mendhak/http-https-echo:latest + replicas: 1 + selector: + matchLabels: + component: http-https-echo + +``` + + +Depois dessa configuração você pode usar o Charles para realizar o deploy de suas aplicações em círculos segmentados. diff --git "a/content/pt/Refer\303\252ncia/Registry/Azure Container Registry.md" "b/content/pt/Refer\303\252ncia/Registry/Azure Container Registry.md" index 1ef955af..7c5d38ad 100644 --- "a/content/pt/Refer\303\252ncia/Registry/Azure Container Registry.md" +++ "b/content/pt/Refer\303\252ncia/Registry/Azure Container Registry.md" @@ -1,6 +1,6 @@ --- title: Azure Container Registry -weight: 59 +weight: 61 --- --- diff --git "a/content/pt/Refer\303\252ncia/Registry/Docker Hub.md" "b/content/pt/Refer\303\252ncia/Registry/Docker Hub.md" index d4dedc30..15a0f2c3 100644 --- "a/content/pt/Refer\303\252ncia/Registry/Docker Hub.md" +++ "b/content/pt/Refer\303\252ncia/Registry/Docker Hub.md" @@ -1,6 +1,6 @@ --- title: Docker Hub -weight: 61 +weight: 63 --- --- diff --git "a/content/pt/Refer\303\252ncia/Registry/ECR.md" "b/content/pt/Refer\303\252ncia/Registry/ECR.md" index 1c810d90..8a562e15 100644 --- "a/content/pt/Refer\303\252ncia/Registry/ECR.md" +++ "b/content/pt/Refer\303\252ncia/Registry/ECR.md" @@ -1,6 +1,6 @@ --- title: ECR -weight: 63 +weight: 65 --- --- diff --git "a/content/pt/Refer\303\252ncia/Registry/GCR.md" "b/content/pt/Refer\303\252ncia/Registry/GCR.md" index 407f4efa..0f970781 100644 --- "a/content/pt/Refer\303\252ncia/Registry/GCR.md" +++ "b/content/pt/Refer\303\252ncia/Registry/GCR.md" @@ -1,6 +1,6 @@ --- title: GCR -weight: 65 +weight: 67 --- --- diff --git "a/content/pt/Refer\303\252ncia/Registry/_index.md" "b/content/pt/Refer\303\252ncia/Registry/_index.md" index e087dd38..350687f7 100644 --- "a/content/pt/Refer\303\252ncia/Registry/_index.md" +++ "b/content/pt/Refer\303\252ncia/Registry/_index.md" @@ -1,6 +1,7 @@ --- title: Registry -weight: 57 +weight: 59 +description: 'Nesta seção, você encontra detalhes de como configurar o Registry.' --- --- diff --git "a/content/pt/Refer\303\252ncia/Release.md" "b/content/pt/Refer\303\252ncia/Release.md" index 5e2d9f17..c1faff7d 100644 --- "a/content/pt/Refer\303\252ncia/Release.md" +++ "b/content/pt/Refer\303\252ncia/Release.md" @@ -1,6 +1,6 @@ --- title: Release -weight: 68 +weight: 70 description: >- Nesta seção, você encontra detalhes sobre como funcionam as releases no Charles. diff --git "a/content/pt/Refer\303\252ncia/Token Sist\303\252mico.md" "b/content/pt/Refer\303\252ncia/Token Sist\303\252mico.md" new file mode 100644 index 00000000..c428e1b7 --- /dev/null +++ "b/content/pt/Refer\303\252ncia/Token Sist\303\252mico.md" @@ -0,0 +1,76 @@ +--- +title: Token Sistêmico +weight: 72 +description: 'Nesta seção, você encontra detalhes sobre o token sistêmico.' +--- + +--- + +## O que é? + +Um token sistêmico é uma cadeia de caracteres opaca que identifica um usuário \(ou aplicação\). Ele pode ser utilizado por integrações para realizar chamadas nas APIs internas do Charles C.D. + +{{% alert color="info" %}} +Se você deseja integrar o Charles ao seu pipeline de deployment, **você irá precisar de um token sistêmico** **com permissionamento** para executar as ações. +{{% /alert %}} + +Quando você acessar o Charles com o perfil de root, o item **"System Token"** aparecerá no menu inicial Essa é a área gerencial dos tokens, onde você pode criar novos tokens, visualizar todos existentes, revogar e recriar. + +## Como criar? + +Para criar um token sistêmico, você precisa preencher três informações: + +1. O **nome** que identificará o token; +2. Os **workspaces** que ele terá acesso; +3. Quais os **escopos de permissionamento** o token poderá atuar dentro dos workspaces. + +### Workspaces + +Para selecionar os workspaces, você terá duas opções: + +* Permitir que o token tenha acesso a todos os worskspaces: + +![](//systemtoken_allworkspace.gif) + +* Selecionar workspaces específicos: + +![](//systemtoken_specificworkspace.gif) + +### Escopos + +Os escopos definem quais as ações um token pode desempenhar. Você pode criar o seu token com um ou mais escopos. Para fazer isso, escolha entre as opções abaixo: + +* **Módulos:** acesso completo \(_leitura e escrita_\) as APIs referentes aos módulos. + * **Escrita**: acesso para criar, atualizar e deletar módulos. + * **Leitura**: acesso de leitura a todos os módulos. +* **Círculos**: acesso completo \(_leitura e escrita_\) as APIs referentes aos círculos. + * **Escrita**: acesso para criar, atualizar e deletar círculos. + * **Leitura**: acesso de leitura a todos os círculos. +* **Deploy:** acesso completo \(_leitura e escrita_\) à implantação de releases nos círculos. +* **Manutenção:** acesso completo \(_leitura e escrita_\) as configurações dos workspaces. + +## Como copiar um token? + +Depois de finalizar o processo de personalização do seu token, **não se esqueça de copiá-lo**. Não é possível copiar esse token novamente. + +![](//tokensistemico1.png) + +## Como revogar um token? + +Para anular as permissões de um token, é só revogá-lo. Veja abaixo como fazer isso: + +* Acesse o menu de visualização do token; +* Selecione o token; +* Clique na opção **`Revoke Token`**. + +## Como gerar um token novamente? + +Se você perdeu o valor do seu token, é possível recriá-lo com todas as permissões já existentes. Quando você faz isso, o valor anterior é cancelado e o novo valor é o único válido. Veja o exemplo abaixo: + +![](//tokensistemico2.gif) + + + +1. No menu superior, clique em "**Regenerate**" +2. Confirme a ação no botão "**Yes, regenerate token.**" em pop-up que irá aparecer. +3. Pronto! Um novo valor será gerado. diff --git "a/content/pt/Refer\303\252ncia/_index.md" "b/content/pt/Refer\303\252ncia/_index.md" index bc46efd6..66a95536 100644 --- "a/content/pt/Refer\303\252ncia/_index.md" +++ "b/content/pt/Refer\303\252ncia/_index.md" @@ -1,4 +1,4 @@ --- title: Referência -weight: 48 +weight: 50 --- \ No newline at end of file diff --git a/content/pt/Release Notes.md b/content/pt/Release Notes.md index bda9fc71..e5938f50 100644 --- a/content/pt/Release Notes.md +++ b/content/pt/Release Notes.md @@ -1,4 +1,4 @@ --- title: Release Notes -weight: 94 +weight: 98 --- \ No newline at end of file