├── .gitignore
├── .gitmodules
├── LICENSE
├── README.md
├── archetypes
└── default.md
├── config.toml
├── content
├── 01-workshop-overview
│ ├── _index.md
│ ├── agenda.md
│ ├── objectives.md
│ └── requirements.md
├── 02-kubernetes-cluster
│ ├── _index.md
│ ├── configure-gcp-account.md
│ ├── create-gke-cluster.md
│ └── prepare-local-working-environment.md
├── 03-servicemesh-overview
│ ├── _index.md
│ ├── distributed-system-complexity.md
│ ├── introduction-service-mesh.md
│ ├── istio-architecture.md
│ └── microservices-evolution.md
├── 04-install-istio
│ ├── _index.md
│ ├── download-istio.md
│ ├── download-labs-sources.md
│ ├── install-helm.md
│ ├── install-istio.md
│ └── verify-installation.md
├── 05-dashboards-tour
│ ├── _index.md
│ ├── grafana.md
│ ├── observability.md
│ ├── promotheus.md
│ └── tracing.md
├── 06-deploy-application
│ ├── _index.md
│ ├── application-architecture.md
│ ├── deploy-application.md
│ ├── deploy-application_skaffold.md
│ └── verify-deployment.md
├── 07-configure-dns
│ ├── _index.md
│ ├── configure-google-dns.md
│ ├── create-dns-account.md
│ └── provision-dns-name.md
├── 08-sidecar-injection
│ ├── _index.md
│ ├── add-to-mesh.md
│ └── enable-istio.md
├── 09-traffic-management
│ ├── 01-ingress-gateway-exercise.md
│ ├── 01-ingress-gateway.md
│ ├── 03-traffic-splitting.md
│ ├── 04-canary-deployment.md
│ ├── 05-fault-injection.md
│ ├── 06-circuit-breaker.md
│ ├── 07-retry-strategy.md
│ ├── 08-egress-gateway.md
│ └── _index.md
├── 10-monitoring-and-obervability
│ ├── 01-observability.md
│ ├── 02-monitoring.md
│ ├── 03-tracing.md
│ └── _index.md
├── 11-security
│ ├── 01-mTLS.md
│ ├── 02-Let's encrypt.md
│ ├── 03-RBAC authorization.md
│ └── _index.md
├── 12-debugging
│ ├── 01-istioctl-debug-command.md
│ ├── 02-understand-proxy-logs.md
│ └── _index.md
├── 13-conclusion
│ └── _index.md
├── 14-Appendix
│ ├── _index.md
│ ├── cleanup.md
│ ├── further-reading.md
│ └── notes.md
├── 15-contribute
│ └── _index.md
├── 16-contact
│ └── _index.md
├── 17-credits
│ └── _index.md
├── _index.md
└── authors.md
├── layouts
└── partials
│ ├── favicon.html
│ ├── logo.html
│ └── toc.html
├── netlify.toml
├── static
├── css
│ ├── theme-mine.css
│ └── theme-mine.css.bak
└── images
│ ├── application-dns.png
│ ├── application-view.png
│ ├── canary-deployment-code.png
│ ├── canary-deployment.png
│ ├── cloud-dns-update-ingress.png
│ ├── clouddnsnet.png
│ ├── cloudns-activation-confirm.png
│ ├── cloudns-activation.png
│ ├── cloudns-add-new.png
│ ├── cloudns-domain-dashboard.png
│ ├── cloudns-domain-registration.png
│ ├── cloudns-domain-update.png
│ ├── cloudns-free-plan.png
│ ├── cloudns-free-zone.png
│ ├── cloudns-signup.png
│ ├── code-oriented-frameworks.png
│ ├── csharp-logo.png
│ ├── dashboard-change-port-1.png
│ ├── dashboard-change-port.png
│ ├── envoy-downstream-upstream.png
│ ├── envoy-logo.svg
│ ├── fault-injection-503-kiali.png
│ ├── fault-injection-503-recommandation.png
│ ├── fault-injection-delay-recommandation.png
│ ├── frontend-v0.12.png
│ ├── frontend-v0.13.png
│ ├── frontend-versions.png
│ ├── gcloud-authorize.png
│ ├── gcloud-dns-record-dashboard.png
│ ├── gcloud-project-id.png
│ ├── gcp-cloud-dns-create-record.png
│ ├── gcp-cloud-dns-create-zone-1.png
│ ├── gcp-cloud-dns-create-zone-2.png
│ ├── gcp-cloud-dns-create-zone.png
│ ├── gcp-cloud-dns-created-1.png
│ ├── gcp-cloud-dns-created.png
│ ├── gcp-cloud-dns-record-created.png
│ ├── gcp-cloud-dns-record-updated.png
│ ├── gcp-cloud-dns.png
│ ├── gcp-redis-instance-details.png
│ ├── go-logo-aqua.png
│ ├── go-logo.png
│ ├── google-consent.png
│ ├── googlecloud-projectdashboard.png
│ ├── googlecloud-projectselected.png
│ ├── googlecloud-selectproject.png
│ ├── googlecloud-shell.png
│ ├── googlecloud-shellboostmode.png
│ ├── googlecloud-shellwindow.png
│ ├── googlecloud-startshell.png
│ ├── googlecloud-terms.png
│ ├── googlecloud-trialaccount.png
│ ├── grafana-dashboard.png
│ ├── grafana-istio-dashboards.png
│ ├── grafana-mesh-dashboard.png
│ ├── grafana-service-dashboard.png
│ ├── helm-logo.png
│ ├── helm-logo.svg
│ ├── hipster-app-ingress.png
│ ├── hipster-app-permissive-mtls.gif
│ ├── hipster-app-permissive-mtls.png
│ ├── hipster-application-architecture.png
│ ├── hipster-application-architecture.svg
│ ├── hipster-application-architecture1.svg
│ ├── hipster-rbac-fails.png
│ ├── hipster-shop-demo.png
│ ├── incognito-window.png
│ ├── istio-bluelogo-whitebackground-unframed.svg
│ ├── istio-building-blocks.png
│ ├── istio-circuit-breaker.png
│ ├── istio-components-interaction.png
│ ├── istio-default-dashboard.png
│ ├── istio-egress-example.png
│ ├── istio-egress-pattern.png
│ ├── istio-icon.svg
│ ├── istio-ingress-diagram.png
│ ├── istio-ingress.png
│ ├── istio-logo.svg
│ ├── istio-mixer-adapters.png
│ ├── istio-package-anatomy.png
│ ├── istio-performance-dashboard.png
│ ├── istio-rbac-auth.png
│ ├── istio-retry-strategy.png
│ ├── istio-security-architecture.svg
│ ├── istio-traffic-splitting.png
│ ├── istio-upstream-downstream.png
│ ├── istio-whitelogo-bluebackground-unframed
│ ├── istio-whitelogo-bluebackground.png
│ ├── istio-whitelogo-nobackground-unframed.svg
│ ├── jaeger-dag-graph.png
│ ├── jaeger-dashboard.png
│ ├── kiali-bug-version-label.png
│ ├── kiali-dashbaord.png
│ ├── kiali-login.png
│ ├── kiali-missing-secret.png
│ ├── kiali-missing-sidecar.png
│ ├── kiali-service-graph.gif
│ ├── kiali-service-graph.png
│ ├── kiali-service-metrics.png
│ ├── kiali-service-overview.png
│ ├── kiali-traffic-splitting-1.png
│ ├── kiali-traffic-splitting-2.png
│ ├── kiali-traffic-splitting-3.png
│ ├── kiali-traffic-splitting-5.png
│ ├── locust-logo.png
│ ├── microservices-building-blocks-istio.png
│ ├── microservices-building-blocks-map.png
│ ├── microservices-building-blocks.png
│ ├── microservices-evolution.png
│ ├── microservices-iceberg.png
│ ├── prometheus-request-count.png
│ ├── promotheus-dashboard.png
│ ├── python-logo.png
│ ├── rafik-linkedin.png
│ ├── rafik8-twitter.png
│ ├── redis-circuit-breaker.png
│ ├── redis-logo.png
│ ├── service-mesh-maturity-model-v0.1.png
│ ├── servicemesh-highlevel-architecture.png
│ ├── sidecar-oriented-pattern.png
│ └── skaffold-on-gke.png
└── themes
└── hugo-theme-learn
├── .editorconfig
├── .gitignore
├── .grenrc.yml
├── CHANGELOG.md
├── LICENSE.md
├── README.md
├── archetypes
├── chapter.md
└── default.md
├── exampleSite
├── LICENSE.md
├── config.toml
├── content
│ ├── _index.en.md
│ ├── _index.fr.md
│ ├── basics
│ │ ├── _index.en.md
│ │ ├── _index.fr.md
│ │ ├── configuration
│ │ │ ├── _index.en.md
│ │ │ └── _index.fr.md
│ │ ├── installation
│ │ │ ├── _index.en.md
│ │ │ ├── _index.fr.md
│ │ │ └── images
│ │ │ │ └── chapter.png
│ │ ├── requirements
│ │ │ ├── _index.en.md
│ │ │ ├── _index.fr.md
│ │ │ └── images
│ │ │ │ └── magic.gif
│ │ └── style-customization
│ │ │ ├── _index.en.md
│ │ │ ├── _index.fr.md
│ │ │ └── images
│ │ │ ├── blue-variant.png
│ │ │ ├── green-variant.png
│ │ │ └── red-variant.png
│ ├── cont
│ │ ├── _index.en.md
│ │ ├── _index.fr.md
│ │ ├── archetypes.en.md
│ │ ├── archetypes.fr.md
│ │ ├── i18n
│ │ │ ├── _index.en.md
│ │ │ ├── _index.fr.md
│ │ │ └── images
│ │ │ │ └── i18n-menu.gif
│ │ ├── icons.en.md
│ │ ├── markdown.en.md
│ │ ├── markdown.fr.md
│ │ ├── menushortcuts.en.md
│ │ ├── menushortcuts.fr.md
│ │ ├── pages
│ │ │ ├── _index.en.md
│ │ │ ├── _index.fr.md
│ │ │ └── images
│ │ │ │ ├── frontmatter-icon.png
│ │ │ │ ├── pages-chapter.png
│ │ │ │ └── pages-default.png
│ │ ├── tags.en.md
│ │ └── tags.fr.md
│ ├── credits.en.md
│ ├── credits.fr.md
│ ├── shortcodes
│ │ ├── _index.en.md
│ │ ├── _index.fr.md
│ │ ├── attachments.en.files
│ │ │ ├── BachGavotteShort.mp3
│ │ │ ├── Carroll_AliceAuPaysDesMerveilles.pdf
│ │ │ ├── adivorciarsetoca00cape.pdf
│ │ │ ├── hugo.png
│ │ │ └── movieselectricsheep-flock-244-32500-2.mp4
│ │ ├── attachments.en.md
│ │ ├── attachments.fr.files
│ │ │ ├── BachGavotteShort.mp3
│ │ │ ├── Carroll_AliceAuPaysDesMerveilles.pdf
│ │ │ ├── adivorciarsetoca00cape.pdf
│ │ │ ├── hugo.png
│ │ │ └── movieselectricsheep-flock-244-32500-2.mp4
│ │ ├── attachments.fr.md
│ │ ├── button.en.md
│ │ ├── button.fr.md
│ │ ├── children
│ │ │ ├── _index.en.md
│ │ │ ├── _index.fr.md
│ │ │ ├── children-1
│ │ │ │ ├── _index.en.md
│ │ │ │ ├── _index.fr.md
│ │ │ │ └── children-1-1
│ │ │ │ │ ├── _index.en.md
│ │ │ │ │ ├── _index.fr.md
│ │ │ │ │ └── children-1-1-1
│ │ │ │ │ ├── _index.en.md
│ │ │ │ │ ├── _index.fr.md
│ │ │ │ │ └── children-1-1-1-1
│ │ │ │ │ ├── _index.en.md
│ │ │ │ │ ├── _index.fr.md
│ │ │ │ │ └── children-1-1-1-1-1
│ │ │ │ │ ├── _index.en.md
│ │ │ │ │ └── _index.fr.md
│ │ │ ├── children-2
│ │ │ │ ├── _index.en.md
│ │ │ │ ├── _index.fr.md
│ │ │ │ ├── test3.en.md
│ │ │ │ └── test3.fr.md
│ │ │ ├── children-3
│ │ │ │ ├── _index.en.md
│ │ │ │ └── _index.fr.md
│ │ │ ├── children-4
│ │ │ │ ├── _index.en.md
│ │ │ │ └── _index.fr.md
│ │ │ ├── test.en.md
│ │ │ └── test.fr.md
│ │ ├── expand.en.md
│ │ ├── expand.fr.md
│ │ ├── mermaid.en.md
│ │ ├── mermaid.fr.md
│ │ ├── notice.en.md
│ │ ├── notice.fr.md
│ │ ├── siteparam.en.md
│ │ └── siteparam.fr.md
│ ├── showcase.en.md
│ └── showcase.fr.md
├── layouts
│ ├── partials
│ │ ├── custom-footer.html
│ │ ├── logo.html
│ │ └── menu-footer.html
│ └── shortcodes
│ │ └── ghcontributors.html
└── static
│ ├── css
│ └── theme-mine.css
│ ├── fonts
│ ├── monogramos-webfont.eot
│ ├── monogramos-webfont.svg
│ ├── monogramos-webfont.ttf
│ ├── monogramos-webfont.woff
│ └── monogramos-webfont.woff2
│ └── images
│ └── showcase
│ └── tat.png
├── i18n
├── ar.toml
├── de.toml
├── en.toml
├── es.toml
├── fr.toml
├── hi.toml
├── id.toml
├── nl.toml
├── pt.toml
└── tr.toml
├── images
├── screenshot.png
└── tn.png
├── layouts
├── 404.html
├── _default
│ ├── list.html
│ └── single.html
├── index.html
├── index.json
├── partials
│ ├── custom-comments.html
│ ├── custom-footer.html
│ ├── custom-header.html
│ ├── favicon.html
│ ├── footer.html
│ ├── header.html
│ ├── logo.html
│ ├── menu-footer.html
│ ├── menu.html
│ ├── meta.html
│ ├── search.html
│ ├── tags.html
│ └── toc.html
└── shortcodes
│ ├── attachments.html
│ ├── button.html
│ ├── children.html
│ ├── expand.html
│ ├── mermaid.html
│ ├── notice.html
│ ├── ref.html
│ ├── relref.html
│ └── siteparam.html
├── netlify.toml
├── static
├── css
│ ├── atom-one-dark-reasonable.css
│ ├── auto-complete.css
│ ├── featherlight.min.css
│ ├── fontawesome-all.min.css
│ ├── hugo-theme.css
│ ├── hybrid.css
│ ├── nucleus.css
│ ├── perfect-scrollbar.min.css
│ ├── tags.css
│ ├── theme-blue.css
│ ├── theme-green.css
│ ├── theme-red.css
│ └── theme.css
├── fonts
│ ├── Inconsolata.eot
│ ├── Inconsolata.svg
│ ├── Inconsolata.ttf
│ ├── Inconsolata.woff
│ ├── Novecentosanswide-Normal-webfont.eot
│ ├── Novecentosanswide-Normal-webfont.svg
│ ├── Novecentosanswide-Normal-webfont.ttf
│ ├── Novecentosanswide-Normal-webfont.woff
│ ├── Novecentosanswide-Normal-webfont.woff2
│ ├── Novecentosanswide-UltraLight-webfont.eot
│ ├── Novecentosanswide-UltraLight-webfont.svg
│ ├── Novecentosanswide-UltraLight-webfont.ttf
│ ├── Novecentosanswide-UltraLight-webfont.woff
│ ├── Novecentosanswide-UltraLight-webfont.woff2
│ ├── Work_Sans_200.eot
│ ├── Work_Sans_200.svg
│ ├── Work_Sans_200.ttf
│ ├── Work_Sans_200.woff
│ ├── Work_Sans_200.woff2
│ ├── Work_Sans_300.eot
│ ├── Work_Sans_300.svg
│ ├── Work_Sans_300.ttf
│ ├── Work_Sans_300.woff
│ ├── Work_Sans_300.woff2
│ ├── Work_Sans_500.eot
│ ├── Work_Sans_500.svg
│ ├── Work_Sans_500.ttf
│ ├── Work_Sans_500.woff
│ └── Work_Sans_500.woff2
├── images
│ ├── clippy.svg
│ ├── favicon.png
│ └── gopher-404.jpg
├── js
│ ├── auto-complete.js
│ ├── clipboard.min.js
│ ├── featherlight.min.js
│ ├── highlight.pack.js
│ ├── html5shiv-printshiv.min.js
│ ├── hugo-learn.js
│ ├── jquery-3.3.1.min.js
│ ├── jquery.sticky.js
│ ├── learn.js
│ ├── lunr.min.js
│ ├── modernizr.custom-3.6.0.js
│ ├── perfect-scrollbar.jquery.min.js
│ ├── perfect-scrollbar.min.js
│ └── search.js
├── mermaid
│ ├── mermaid.css
│ ├── mermaid.dark.css
│ ├── mermaid.forest.css
│ └── mermaid.js
└── webfonts
│ ├── fa-brands-400.eot
│ ├── fa-brands-400.svg
│ ├── fa-brands-400.ttf
│ ├── fa-brands-400.woff
│ ├── fa-brands-400.woff2
│ ├── fa-regular-400.eot
│ ├── fa-regular-400.svg
│ ├── fa-regular-400.ttf
│ ├── fa-regular-400.woff
│ ├── fa-regular-400.woff2
│ ├── fa-solid-900.eot
│ ├── fa-solid-900.svg
│ ├── fa-solid-900.ttf
│ ├── fa-solid-900.woff
│ └── fa-solid-900.woff2
├── theme.toml
└── wercker.yml
/.gitignore:
--------------------------------------------------------------------------------
1 | public/
2 | npm-debug.log
3 | node_modules
4 | public
5 | .DS_Store
6 | *.swp
7 | releases/
8 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "themes/learn"]
2 | path = themes/hugo-theme-learn
3 | url = https://github.com/matcornic/hugo-theme-learn.git
4 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Istio Service Mesh Workshop
2 |
3 | [](https://app.netlify.com/sites/condescending-varahamihira-878695/deploys)
4 |
5 | ### Setup:
6 |
7 | #### Install Hugo:
8 | On a mac:
9 |
10 | ```shell
11 | brew install hugo
12 | ```
13 |
14 | On Linux:
15 | - Download from the releases page: https://github.com/gohugoio/hugo/releases/tag/v0.56.3
16 | - Extract and save the executable to `/usr/local/bin`
17 |
18 | #### Clone this repo:
19 | From wherever you checkout repos(or your fork):
20 | ```shell
21 | git clone https://github.com/rafik8/istio-workshop.git
22 | ```
23 |
24 | #### Clone the theme submodule:
25 | ```shell
26 | cd istio-workshop
27 | ```
28 |
29 | ```shell
30 | git submodule init
31 | git submodule update
32 | ```
33 |
34 | #### Run Hugo locally:
35 | ```shell
36 | hugo server
37 | ```
38 |
39 | #### View Hugo locally:
40 | Visit http://localhost:1313/ to see the site.
41 |
42 | #### Making Edits:
43 | As you save edits to a page, the site will live-reload to show your changes.
44 |
45 | #### Auto Deploy:
46 | Any commits to master will auto build and deploy in a couple of minutes. You can see the currently
47 | deployed hash at the bottom of the menu panel.
48 |
49 | Any commits to a branch will auto build and deploy in a couple of minutes to a custom route named with the branch name. You can see the currently
50 | deployed hash at the bottom of the menu panel.
51 |
--------------------------------------------------------------------------------
/archetypes/default.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "{{ replace .Name "-" " " | title }}"
3 | date: {{ .Date }}
4 | draft: true
5 | ---
6 |
7 |
--------------------------------------------------------------------------------
/config.toml:
--------------------------------------------------------------------------------
1 | baseURL = "https://istioworkshop.io/"
2 | languageCode = "en-us"
3 | defaultContentLanguage = "en"
4 |
5 | title = "Istio Service Mesh Workshop"
6 | theme = "hugo-theme-learn"
7 | googleAnalytics = "UA-148326159-1"
8 |
9 | [params]
10 |
11 | editURL = "https://github.com/rafik8/istio-workshop/edit/master/content/"
12 | description = "Documentation for Istio Service Mesh Workshop"
13 | author = "Rafik Harabi"
14 | # Shows a checkmark for visited pages on the menu
15 | showVisitedLinks = true
16 | disableBreadcrumb = false
17 | disableNextPrev = false
18 |
19 | # Change default color scheme with a variant one. Can be "red", "blue", "green".
20 | themeVariant = "mine"
21 |
22 | [outputs]
23 | home = [ "HTML", "RSS", "JSON"]
24 |
25 | [[menu.shortcuts]]
26 | name = " Tags"
27 | url = "/tags"
28 | weight = 30
29 |
--------------------------------------------------------------------------------
/content/01-workshop-overview/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Workshop overview"
3 | chapter: true
4 | weight: 1
5 | ---
6 |
7 | This workshop introduces you to Service Mesh technology for both DevOps and SRE teams. The workshop explains how to apply Service Mesh patterns to microservices-based container solution, complete with hands-on exercises. The training is based on Google Cloud Platform, but you can apply the skills you will learn to any Kubernetes based platform. After the workshop, you will be able to resolve microservices concerns using Service Mesh declarative way.
8 |
9 |
10 | {{% children showhidden="false" %}}
11 |
--------------------------------------------------------------------------------
/content/01-workshop-overview/agenda.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Agenda"
3 | chapter: true
4 | weight: 2
5 | ---
6 | # Agenda
7 |
8 | During the workshop, we will walk through the following topics:
9 |
10 | ## Part 1: Introduce service mesh
11 |
12 | - Provision a Kubernetes Cluster
13 | - Service Mesh Overview
14 | - Install Istio
15 | - Deploy sample application
16 | - Dashboards Tour
17 | - Configure DNS
18 |
19 | ## Part 2: Traffic Management
20 |
21 | - Enable sidecars for Hipster app
22 | - Traffic management
23 |
24 |
25 |
26 | ## Part 3: Monitoring and Security
27 |
28 | - Monitoring and Observability
29 | - Application security
30 |
31 |
32 | ## Part 4: debugging and conclusion
33 |
34 | - Istio debugging tools
35 | - Conclusion and takeaways
36 |
--------------------------------------------------------------------------------
/content/01-workshop-overview/objectives.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Objectives"
3 | chapter: true
4 | weight: 1
5 | ---
6 | # Workshop objectives
7 |
8 | Understand the capabilities of Istio Service Mesh technology to manage, secure and observe container-based solutions in a Kubernetes based environment.
9 |
10 |
11 | You should be able to by the end of this workshop to:
12 |
13 | - Understand service mesh and the capabilities it offers to manage microservices.
14 | - Understand the technology solution (Istio) high level architecture and components.
15 | - Install Istio service mesh on the top of a Kubernetes cluster.
16 | - Interact with service mesh using _istioctl_ command line tool.
17 | - Manage microservices behaviour using Istio.
18 | - Use Istio dashboards to monitor and debug microservices.
19 | - Debugging microservices running within the mesh network.
20 |
--------------------------------------------------------------------------------
/content/01-workshop-overview/requirements.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Requirements"
3 | chapter: true
4 | weight: 3
5 | ---
6 | # Requirements
7 |
8 | 1. This lab will take you through a journey of using Istio on Kubernetes. A prerequisite of this lab is basic understanding of Kubernetes.
9 |
10 | 2. The workshop will be based on **Google Cloud Platform**. Labs accounts will be provided to run the workshop during the event. If you are running the workshop outside of the event, you have to create a Google Cloud Platform account.
11 |
--------------------------------------------------------------------------------
/content/02-kubernetes-cluster/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Provision a Kubernetes Cluster"
3 | chapter: true
4 | weight: 2
5 | ---
6 | # Provision a Kubernetes Cluster
7 | In this section we will create a Kubernetes cluster based on Google Cloud Platform managed Kubernetes (GKE).
8 |
9 | {{% children showhidden="false" %}}
10 |
--------------------------------------------------------------------------------
/content/02-kubernetes-cluster/configure-gcp-account.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Configure GCP account"
3 | chapter: true
4 | weight: 2
5 | ---
6 | # Configure GCP account
7 |
8 |
9 | 1. Get the project ID:
10 |
11 |
12 | 
13 |
14 | 1. Set the default project (replace **PROJECT_ID** with the project during the event workshop or your own project):
15 |
16 | ```
17 | export PROJECT_ID=srecon19-workshop-250603
18 | ```
19 |
20 | ```
21 | gcloud config set project $PROJECT_ID
22 | ```
23 |
24 | 1. Set the default compute region and zone:
25 |
26 | ```
27 | export REGION_ID=europe-west1
28 | ```
29 |
30 | ```
31 | gcloud config set compute/region $REGION_ID
32 | ```
33 |
34 | ```
35 | export ZONE_ID=europe-west1-b
36 | ```
37 |
38 | ```
39 | gcloud config set compute/zone $ZONE_ID
40 | ```
41 |
42 | 1. Check the configuration:
43 | ```
44 | gcloud config list
45 | ```
46 |
47 | ```
48 | [compute]
49 | region = europe-west1
50 | zone = europe-west1-b
51 | [core]
52 | account = trainee001.srecon19@innovsquare.com
53 | disable_usage_reporting = True
54 | project = srecon19-workshop-250603
55 | ```
56 |
57 | Now, everything is prepared to create a Kubernetes cluster.
58 |
--------------------------------------------------------------------------------
/content/03-servicemesh-overview/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Service Mesh Overview"
3 | chapter: true
4 | weight: 3
5 | ---
6 | In this section, we will have a walk-through of service mesh history, concepts and patterns to tackle microservices challenges.
7 |
8 | Specifically, we will walk you through the following topics:
9 |
10 | {{% children showhidden="false" %}}
11 |
12 |
13 |
14 | **Presentation**:
15 | [Service Mesh Overview](https://bit.ly/2MnIi7J)
16 |
--------------------------------------------------------------------------------
/content/03-servicemesh-overview/distributed-system-complexity.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Distributed is hard"
3 | chapter: true
4 | weight: 3
5 | draft: true
6 | ---
7 |
8 | Companies with large, monolithic applications are increasingly breaking these unwieldy apps into smaller, containerized microservices. Microservices are popular because they offer agility, speed, and flexibility, but they can be complex, which can be a hurdle for adoption. And having multiple microservices, rather than a single monolith, can increase the attack surface of the app.
9 |
10 |
11 | # Distributed is hard
12 | A realistic application will have multiple components packaged across multiple containers, with multiple instances of those components deployed across multiple machines. That’s a lot of multiplication, and in a fast-moving environment it can quickly become hard to manage and keep track of everything. How do component instances find each other? How does network traffic get routed between containers? Was my recent deployment successful? Did our latest roll out affect end users? How does a Dev and DevOps team understand all of the application interactions that are happening?
13 |
14 |
15 | # Target:
16 | With Istio, it’s easier to observe what is happening across an entire network of microservices, secure communication between services, and ensure that policies are enforced.
17 |
--------------------------------------------------------------------------------
/content/03-servicemesh-overview/microservices-evolution.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "The evolution of microservices"
3 | chapter: true
4 | weight: 1
5 | tags: ["microservices", "basics"]
6 | ---
7 |
8 | ## The evolution of microservices
9 |
10 | Companies with large, monolithic applications are increasingly breaking these unwieldy apps into smaller, containerized microservices.
11 | Microservices are popular because they offer **agility**, speed, and **flexibility**, but they can be complex, which can be a hurdle for adoption.
12 |
13 | In recent years evolving software development practices have fundamentally changed applications. These changes have impacted the requirements to the underlying infrastructure, tools, and processes to manage applications properly throughout the lifecycle.
14 | Applications transformed from large monolithic code bases to collections of many small services, loosely coupled together into what is called a microservices architecture. Driven by the desire to ship more software, faster in a way that is portable across infrastructure, the resulting benefits of more agile organizations.
15 |
16 | Such microservices architectures provide agility to development teams. But, it also introduces **operational complexity**. Both Dev and Ops teams often struggle during the migration to microservices. When a monolith is broken into tens or even hundreds of microservices, how do these components discover and communicate with each other? Where to begin debugging efforts? What is the service dependency graph? Who is calling whom? These are questions that they did not have to answer in the monolithic world. In a microservices world where a microservices architecture may seem like a distributed service mess, they must have these answers and more.
17 |
18 | 
19 |
20 |
21 | ## Microservices challenges
22 |
23 | Adopting a microservices oriented architecture brings new challenges:
24 |
25 | - M to N communication.
26 | - Distributed software interconnection and troubleshooting is hard.
27 | - Containers should stay thin and platform agnostic.
28 | - Upgrade of polyglot microservices is hard at scale.
29 |
30 |
31 | 
32 |
33 |
34 |
35 | The only value visible from business stakeholders is the business service so we have a develop a bench of microservices concerns to deliver a new business value.
36 |
37 | 
38 |
--------------------------------------------------------------------------------
/content/04-install-istio/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Install Istio"
3 | chapter: true
4 | weight: 4
5 | ---
6 | # Install Istio
7 |
8 | In this section we will install Istio on the Kubernetes cluster already provisioned.
9 |
10 | {{% children showhidden="false" %}}
11 |
--------------------------------------------------------------------------------
/content/04-install-istio/download-istio.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Download Istio"
3 | chapter: true
4 | weight: 1
5 | ---
6 | # Download Istio
7 |
8 | 1. We will create working directory for the workshop that we will refer it by the environment variable: `WORKSHOP_HOME`.
9 |
10 | ```
11 | mkdir ~/istio-workshop && cd ~/istio-workshop
12 | ```
13 | ```
14 | export WORKSHOP_HOME=~/istio-workshop
15 | ```
16 |
17 | 1. Set Istio version in an environment variable (we will use the latest stable version):
18 |
19 | ```
20 | export ISTIO_VERSION=1.3.1
21 | ```
22 |
23 | 1. Download Istio:
24 |
25 | ```
26 | curl -L https://git.io/getLatestIstio | sh -
27 |
28 | ```
29 |
30 | 1. add `istioctl` to your path:
31 |
32 | ```
33 | export PATH="$PATH:$WORKSHOP_HOME/istio-$ISTIO_VERSION/bin"
34 | ```
35 |
36 | 1. Check `istioctl` version:
37 |
38 | ```
39 | istioctl version --remote=false
40 | ```
41 |
42 | ```
43 | 1.3.1
44 | ```
45 |
46 | ## Anatomy of an Istio package:
47 |
48 | Below an overview on an Istio release package:
49 |
50 |
51 | 
52 |
53 | We can categorize Istio release package into 4 sections:
54 |
55 | - `bin/istioctl`: is the CLI for the Istio control plane similar to `kubectl`.
56 |
57 | - `install`: contains various installation options for the different platform. For Kubernetes, official support for [Helm Chart](https://helm.sh) and [Operator Framework](https://github.com/operator-framework).
58 |
59 | - `sample`: contains various samples to get started with Istio and embrace its features.
60 |
61 | - `tools`: contains tooling for perf testing, etc ...
62 |
--------------------------------------------------------------------------------
/content/04-install-istio/download-labs-sources.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Download Labs sources"
3 | chapter: true
4 | weight: 2
5 | ---
6 | # Download Labs sources
7 |
8 | 1. Download the lab sources under the working directory :
9 |
10 | ```
11 | cd $WORKSHOP_HOME
12 |
13 | git clone https://github.com/rafik8/istio-workshop-labs.git
14 |
15 | chmod +x $WORKSHOP_HOME/istio-workshop-labs/*.sh
16 | ```
17 |
--------------------------------------------------------------------------------
/content/05-dashboards-tour/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Dashboards Tour"
3 | chapter: true
4 | weight: 5
5 | ---
6 | # Dashboards Tour
7 |
8 | We will explore the different dashboards that we have enabled with Istio:
9 |
10 |
11 | **Grafana**: exposes monitoring metrics for services running within the mesh.
12 |
13 |
14 | **Tracing**: offers end to end tracing of http requests going through different layers and containers.
15 |
16 | **Kiali**: Kiali offers visibility and real time observability for the services running within the mesh including Istio components.
17 |
18 |
19 | {{% notice note %}}
20 | Istio offers a flexible pluggable system so you could plug Istio to different external addons that you are already using such as GCP StackDriver, Amazon Cloud Watch, DataDog ... to list fews.
21 | You could also integrated you own system using the **Mixer Configuration Model**: [Mixer overview](https://istio.io/docs/reference/config/policy-and-telemetry/mixer-overview/)
22 |
23 | {{% /notice%}}
24 |
25 | 
26 |
27 | {{% children showhidden="false" %}}
28 |
--------------------------------------------------------------------------------
/content/05-dashboards-tour/grafana.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Grafana"
3 | chapter: true
4 | weight: 1
5 | ---
6 | # Grafana
7 |
8 | 1. Use `istioctl dashboard` command line to establish a secure tunnel to the Grafana pod:
9 |
10 | ```
11 | istioctl dashboard grafana
12 | ```
13 |
14 | 1. In the Grafana Dashboard, click **Home → Istio**:
15 |
16 | Istio comes with 6 default dashboards, you can add you owns or customise the existing ones:
17 |
18 | 
19 |
20 | 1. Click **Home → Istio → Istio Performance Dashboard**:
21 |
22 | 
23 |
24 | 
25 |
26 |
27 | The dashboard shows Istio core components performance and resource utilization. We will use it later the others dashboard within the deployed application.
28 |
29 |
30 |
39 |
--------------------------------------------------------------------------------
/content/05-dashboards-tour/observability.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Observability"
3 | chapter: true
4 | weight: 3
5 | ---
6 | # Observability
7 |
8 | 1. Use `istioctl dashboard` command line to establish a secure tunnel to the Kiali pod:
9 |
10 | ```
11 | istioctl dashboard kiali
12 | ```
13 |
14 | 1. The Kiali UI will be opened in your default web browser: 
15 |
16 |
17 | 1. For the demo purpose, we will create a demo user account. Execute the following command to create the Kiali secret:
18 |
19 | ```
20 | kubectl apply -f $WORKSHOP_HOME/istio-workshop-labs/kiali-secret.yaml
21 | ```
22 |
23 | 1. Refresh Kiali home page and the error message should disappear: 
24 |
25 |
26 | 1. Enter the login password and the Kiali page: 
27 |
28 |
29 | 1. The workload tab show the the service are running without sidecars as we haven't yet deployed the:
30 |
31 | 
32 |
33 |
34 | We will explore different Kiali features later with the application.
35 |
--------------------------------------------------------------------------------
/content/05-dashboards-tour/promotheus.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Prometheus"
3 | chapter: true
4 | weight: 4
5 | ---
6 | # Prometheus
7 |
8 | 1. Use `istioctl dashboard` command line to Establish a secure tunnel to the Prometheus pod::
9 |
10 | ```
11 | istioctl dashboard prometheus
12 | ```
13 |
14 | 1. The Prometheus UI will be opened in your default web browser:
15 | 
16 |
17 | 1. Choose the api server request count then click **execute**:
18 | 
19 | The number of request to the api server is displayed for each requester.
20 |
--------------------------------------------------------------------------------
/content/05-dashboards-tour/tracing.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Tracing"
3 | chapter: true
4 | weight: 2
5 | ---
6 |
7 | # tracing
8 |
9 | 1. Use `istioctl dashboard` command line to establish a secure tunnel to the Jaeger pod:
10 |
11 |
12 | ```
13 | istioctl dashboard jaeger
14 | ```
15 |
16 | 2. The Jaeger UI will be opened in your default web browser:
17 |
18 | 
19 |
20 | We don't have any service running actually within the mesh that's why we have zero service with tracing.
21 |
--------------------------------------------------------------------------------
/content/06-deploy-application/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Deploy Hipster application"
3 | chapter: true
4 | weight: 6
5 | ---
6 |
7 | ## Introducing the demo application
8 |
9 | For the purpose of this workshop we will use the awesome web-based e-commerce demo application **Hipster Shop** from _Google Cloud Platform_ team.
10 |
11 |
12 | **Sources**: [https://github.com/GoogleCloudPlatform/microservices-demo](https://github.com/GoogleCloudPlatform/microservices-demo)
13 |
14 | **Live Demo**: http://35.238.163.103
15 |
16 | 
17 |
18 |
19 |
20 | {{% children showhidden="false" %}}
21 |
--------------------------------------------------------------------------------
/content/06-deploy-application/application-architecture.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Application architecture"
3 | chapter: true
4 | weight: 1
5 | ---
6 | ## Application architecture
7 |
8 | The application is composed of 10 disparate microservices which is make it a perfect choice for our scenario to use and test istio features and address microservices chanllenges.
9 |
10 |
11 | 
12 |
--------------------------------------------------------------------------------
/content/06-deploy-application/verify-deployment.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Verify deployment"
3 | chapter: true
4 | weight: 3
5 | ---
6 |
7 | # Verify Application deployment
8 |
9 | ## Explore the application:
10 |
11 | 1. Find the IP address of your application, then visit the application on your browser to confirm installation:
12 |
13 | ```
14 | kubectl get service frontend-external
15 | ```
16 |
17 | ```
18 | NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
19 | frontend-external LoadBalancer 10.19.244.242 146.148.112.234 80:31937/TCP 45h
20 | ```
21 |
22 | 2. Visit http://EXTERNAL-IP/ and the application home page should be rendered:
23 |
24 | 
25 |
26 |
27 |
28 | {{% notice note %}}
29 | We are exposing the frontend application using service of type Load LoadBalancer. Lately, we will changed to ClusterIP and use the _Service Mesh Ingress Gateway_ to expose the service outside of the cluster.
30 | [kubernetes-manifests/frontend.yaml#L89](https://github.com/GoogleCloudPlatform/microservices-demo/blob/master/kubernetes-manifests/frontend.yaml#L89)
31 |
32 |
33 | {{< highlight yaml >}}
34 | apiVersion: v1
35 | kind: Service
36 | metadata:
37 | name: frontend-external
38 | spec:
39 | type: LoadBalancer
40 | selector:
41 | app: frontend
42 | ports:
43 | - name: http
44 | port: 80
45 | targetPort: 8080
46 | {{< /highlight >}}
47 |
48 | {{% /notice%}}
49 |
--------------------------------------------------------------------------------
/content/07-configure-dns/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Configure DNS"
3 | chapter: true
4 | weight: 7
5 | ---
6 |
7 | We will use a dns name in order to access cluster services.
8 |
9 |
10 | {{% children showhidden="false" %}}
11 |
--------------------------------------------------------------------------------
/content/07-configure-dns/configure-google-dns.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Configure DNS entry"
3 | chapter: true
4 | weight: 3
5 | ---
6 | # Configure Google DNS
7 |
8 | In the previous section we had configure our domain to be resolved by **[GCP Cloud DNS](https://cloud.google.com/dns/)**.
9 |
10 | In this section we will configure Cloud DNS to assign the domain to the Kubernetes Cluster load balancer.
11 |
12 | 1. On Google Cloud dashboard menu, select **Network services → Cloud DNS**:
13 | 
14 |
15 | 2. Click on **Create zone**:
16 | 
17 |
18 | 3. Create the zone with:
19 |
20 | - Set **Zone type** to _public_
21 | - **DNS name**: enter the dns name. for the purpose of the workshop we will the Domain `innovlabs.io`
22 | - **Zone name**: use the training account as a name or select you cluster name (for example: `trainee001-srecon19`)
23 | - Set **DNSSEC** to _ON_
24 | the click on **Create**
25 | 
26 |
27 | 4. The created DNS zone details should be displayed:
28 | 
29 |
30 | 5. We will add a record set for the hispter e-commerce app, click on **Add record set**:
31 | - Enter _hipster_ for **DNS Name**
32 | - Select _A_ from the **Resource Record Type** menu and set **TTL** to 1 minute.
33 | - Enter the IP of the Load Balancer previously created for hipster app : `kubectl get service frontend-external` for **IPv4 Address**.
34 | then Click on **Create**:
35 | 
36 | the DNS zone will be updated with the new Record:
37 | 
38 |
39 | 6. wait a minute to get DNS cache updated and then open the application:
40 | ```
41 | http://YOUR-APPLICATION-DOMAIN/
42 | ```
43 |
44 | 
45 |
--------------------------------------------------------------------------------
/content/07-configure-dns/create-dns-account.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Create DNS Account"
3 | chapter: true
4 | weight: 1
5 | draft: true
6 | ---
7 |
8 | # Create DNS Account
9 |
10 | We will use Cloud DNS who is providing a free DNS service that feat to our need.
11 |
12 | 
13 |
14 | 
15 |
16 | 1. Go to [https://www.cloudns.net/](https://www.cloudns.net/) and click on **SIGN UP FOR FREE**, Then enter your email address and an enough secure password, accept the **Terms of Service**:
17 |
18 | 
19 |
20 | 2. A activation link will be sent to your email address, please click on the link to activate your account:
21 |
22 | 
23 |
24 | You should get a popup confirming the account activation:
25 |
26 | 
27 |
--------------------------------------------------------------------------------
/content/07-configure-dns/provision-dns-name.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Add Cloud DNS zone"
3 | chapter: true
4 | weight: 2
5 | draft: true
6 | ---
7 |
8 | # Provision DNS name
9 |
10 | 1. Click on **Sign In** and Enter you login and password.
11 |
12 | 2. Once connected, go through the quick tour and then click on **DNS zones → Add new**:
13 |
14 | 
15 |
16 |
17 | 3. Select **Free Zone** to create a free DNS entry:
18 |
19 | 
20 |
21 | 4. Enter the provided username if you are running this workshop as a part of [SRECON 19](https://srecon19emea.sched.com/event/Scjb/managing-microservices-with-istio-service-mesh) or choose your own if you are running the workshop outside of the event then click **REGISTER**.
22 |
23 | 
24 |
25 | 5. After registration, you will be redirected to the domain dashboard:
26 |
27 | 
28 |
29 | 4. You need to change the NS entries and point to **Google Cloud DNS servers**:
30 |
31 | ```html
32 | ns-cloud-c1.googledomains.com
33 | ns-cloud-c2.googledomains.com
34 | ns-cloud-c3.googledomains.com
35 | ns-cloud-c4.googledomains.com
36 | ```
37 |
38 | 
39 |
--------------------------------------------------------------------------------
/content/08-sidecar-injection/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Enable Istio for Hipster app"
3 | chapter: true
4 | weight: 8
5 | ---
6 |
7 | # Enable Istio for Hispter app
8 |
9 | We have seen in the previous chapter that we deployed the hipster commerce application and associate a DNS name for it.
10 | Now, we will enable the service mesh for the application.
11 | Istio suggests 3 methods enables service mesh:
12 |
13 | **Automatic sidecar injection**: Automatic sidecar injection via a Mutating Admission Webhook. when a namespace is labelled `istio-injection=enabled`, every pod deployed to the namespace get a side car injected by `sidecar-injector` pod.
14 |
15 | **Manual sidecar injection**:
16 | Manual sidecar injection will add a sidecar to the deployment:
17 | ```
18 | istioctl kube-inject -f deployment.yaml
19 | ```
20 | **Single pod injection** (Experimental):
21 | This is really useful when we want to enable mesh for only a specific service and start testing its compatibility with Istio.
22 |
23 | ```
24 | istioctl experimental add-to-mesh service [flags]
25 | ```
26 |
27 | In this workshop, we will use the **manual sidecar injection** method.
28 |
29 |
30 | {{% children showhidden="false" %}}
31 |
--------------------------------------------------------------------------------
/content/08-sidecar-injection/add-to-mesh.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Add to mesh"
3 | chapter: true
4 | weight: 2
5 | draft: true
6 | ---
7 |
--------------------------------------------------------------------------------
/content/09-traffic-management/01-ingress-gateway-exercise.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Ingress Gateway Exercise Solution"
3 | chapter: true
4 | weight: 1
5 | ---
6 |
7 | ## Ingress Gateway Exercise Solution
8 |
9 | 1. Get the IP address of the Ingress Gateway:
10 |
11 | ```
12 | echo $INGRESS_IP
13 | ```
14 |
15 | 1. Configure Cloud DNS with `dashboard.domain-srecon19.innovlabs.io` to point to the Ingress Gateway:
16 | 
17 |
18 |
19 | 1. Create a Gateway for Istio addons:
20 |
21 | ```
22 | apiVersion: networking.istio.io/v1alpha3
23 | kind: Gateway
24 | metadata:
25 | name: addons-gateway
26 | spec:
27 | selector:
28 | istio: ingressgateway # use istio default controller
29 | servers:
30 | - port:
31 | number: 80
32 | name: http
33 | protocol: HTTP
34 | hosts:
35 | - "dashboard.trainee001-srecon19.innovlabs.io"
36 | ```
37 |
38 | 1. Create Virtual Service for both Kiali and Jager:
39 | **Kiali**:
40 |
41 | ```
42 | apiVersion: networking.istio.io/v1alpha3
43 | kind: VirtualService
44 | metadata:
45 | name: kiali
46 | spec:
47 | hosts:
48 | - "dashboard.trainee001-srecon19.innovlabs.io"
49 | gateways:
50 | - addons-gateway
51 | http:
52 | - match:
53 | - uri:
54 | prefix: /kiali
55 | route:
56 | - destination:
57 | host: kiali
58 | port:
59 | number: 20001
60 | ```
61 | **Jaeger**:
62 | ```
63 | apiVersion: networking.istio.io/v1alpha3
64 | kind: VirtualService
65 | metadata:
66 | name: tracing
67 | spec:
68 | hosts:
69 | - "dashboard.trainee001-srecon19.innovlabs.io"
70 | gateways:
71 | - addons-gateway
72 | http:
73 | - match:
74 | - uri:
75 | prefix: /jaeger
76 | route:
77 | - destination:
78 | host: tracing
79 | port:
80 | number: 80
81 | ```
82 | 1. Apply the configuration:
83 | ```
84 | kubectl apply -f $WORKSHOP_HOME/istio-workshop-labs/addons-ingress.yaml -n istio-system
85 |
86 | ```
87 |
--------------------------------------------------------------------------------
/content/09-traffic-management/04-canary-deployment.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Canary Deployment"
3 | chapter: true
4 | weight: 4
5 | ---
6 |
7 | # Canary release with Istio
8 |
9 | In Canary Deployments, newer versions of services are incrementally rolled out to users to minimize the risk and impact of any bugs introduced by the newer version. To begin incrementally routing traffic to the newer version of the frontend service, modify the original **VirtualService** rule:
10 |
11 |
12 | 
13 |
14 | 1. Modify the `weight` in `$WORKSHOP_HOME/istio-workshop-labs/frontend-virtualservice.yaml` in order to shift traffic gradually:
15 |
16 | 
17 |
--------------------------------------------------------------------------------
/content/09-traffic-management/06-circuit-breaker.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Circuit Breaker"
3 | chapter: true
4 | weight: 6
5 | ---
6 | # Circuit Breaker
7 |
8 | ## The pattern
9 |
10 | Circuit breaking enables to fail quickly and apply back pressure downstream as soon as possible. Istio enforces circuit breaking limits at the network level using envoy sidecar as opposed to having to configure and code each application independently.
11 |
12 | There is two types of Circuit Breaker:
13 |
14 | **Maximum Connections**: Maximum number of connections to a service. Any excess connection will be pending in a queue. You can modify this number by changing the `maxConnections` field.
15 | **Maximum Pending Requests**: Maximum number of pending requests to a service. Any excess pending requests will be denied. You can modify this number by changing the `http1MaxPendingRequests` field.
16 |
17 |
18 | ## How it works
19 |
20 | The Fault injection is handled by the following Istio Object:
21 |
22 |
23 | | Object | API | Version |
24 | | -----------------| --------------------|----------- |
25 | | DestinationRule | networking.istio.io | v1alpha3 |
26 |
27 |
28 | 
29 |
30 | ## Circuit Breaker in practice
31 |
32 | __Scenario__: We set redis-cart maximum connections to 1 and Maximum pending requests to 1. Thus, if we sent more than 2 requests at once to redis-cart, redis-cart will have 1 pending request and deny any additional requests until the pending request is processed.
33 |
34 | ```
35 | apiVersion: networking.istio.io/v1alpha3
36 | kind: DestinationRule
37 | metadata:
38 | name: redis-cb
39 | namespace: hipster-app
40 | spec:
41 | host: redis-cart
42 | trafficPolicy:
43 | connectionPool:
44 | tcp:
45 | maxConnections: 1
46 | http:
47 | http1MaxPendingRequests: 1
48 | maxRequestsPerConnection: 1
49 | outlierDetection:
50 | consecutiveErrors: 1
51 | interval: 1s
52 | baseEjectionTime: 3m
53 | maxEjectionPercent: 100
54 | ```
55 |
56 | Istio will detect any host that triggers a server error (5XX code) in the redis-cart's Envoy and eject the pod out of the load balancing pool for 3 minutes.
57 |
58 | Applying a back pressure avoid a full system outage and preserve a minimal service. Besides, we could apply other Kubernetes patterns to scale the service (Horizontal Pod Autoscaler, ...).
59 |
60 |
61 | 1. Apply the circuit breaker rule:
62 |
63 | ```
64 | kubectl apply -f $WORKSHOP_HOME/istio-workshop-labs/redis-circuitbreaker.yaml
65 | ```
66 |
67 | 2. on Kiali dashboard, check the `redis-cart` service:
68 |
69 | 
70 |
--------------------------------------------------------------------------------
/content/09-traffic-management/07-retry-strategy.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Retry Strategy"
3 | chapter: true
4 | weight: 7
5 | ---
6 | # Retry Strategy
7 |
8 | ## The pattern
9 | A retry setting specifies the maximum number of times an Envoy proxy attempts to connect to a service if the initial call fails. Retries can enhance service availability and application performance by making sure that calls don’t fail permanently because of transient problems such as a temporarily overloaded service or network.
10 |
11 | A retry is configured using two fields:
12 |
13 | - `attempts`: The number of retries before activating a circuit breaker.
14 |
15 | - `perTryTimeout`: the timeout per each request.
16 |
17 |
18 | ## How it works
19 |
20 | The Fault injection is handled by the following Istio Object:
21 |
22 |
23 | | Object | API | Version |
24 | | -----------------| --------------------|----------- |
25 | | VirtualService | networking.istio.io | v1alpha3 |
26 |
27 |
28 | 
29 |
30 |
31 | ## Retry in practice
32 |
33 |
34 | 1. We will configure shippingservice to have three times retry in case of failures, this increasing the chance of resulting in a successful response in case of temporary outage. we configure also the retry time to 3 seconds.
35 |
36 | ```
37 | apiVersion: networking.istio.io/v1alpha3
38 | kind: VirtualService
39 | metadata:
40 | name: shippingservice-retry
41 | spec:
42 | hosts:
43 | - shippingservice
44 | http:
45 | - route:
46 | - destination:
47 | host: shippingservice
48 | retries:
49 | attempts: 3
50 | perTryTimeout: 3s
51 | ```
52 |
53 | 2. Apply the configuration with the command below:
54 |
55 |
56 | ```
57 | kubectl apply -f $WORKSHOP_HOME/istio-workshop-labs/shippingservice-retry.yaml
58 | ```
59 |
60 |
63 |
--------------------------------------------------------------------------------
/content/09-traffic-management/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Traffic management"
3 | chapter: true
4 | weight: 9
5 | ---
6 | # Traffic management
7 | In the section will deep dive with traffic managemment capabitites provides by Istio.
8 |
9 |
10 | {{% children showhidden="false" %}}
11 |
--------------------------------------------------------------------------------
/content/10-monitoring-and-obervability/01-observability.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Observability"
3 | chapter: true
4 | weight: 1
5 | ---
6 | # Visualizing Your Mesh with Kiali
7 |
8 | Kiali enable service mesh visualizing and Observability by providing a set of views to inspect services running within the mesh:
9 |
10 | 1. Execute the following command to open the Kiali UI:
11 |
12 | ```
13 | istioctl dashboard kiali
14 | ```
15 |
16 | 1. **Overview** view: The Overview page displays a summary of all the namespaces with the numbers of applications, health Check status and the traffic.
17 |
18 |
19 | 
20 |
21 | 2.**Graph** view: Observe Real time traffic with Kiali graph:
22 |
23 | 
24 |
25 | 3. To view a summary of metrics for a service, select the service in the graph and a panel on the right will appear to display its metric details.
26 |
27 | 
28 |
--------------------------------------------------------------------------------
/content/10-monitoring-and-obervability/02-monitoring.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Monitoring"
3 | chapter: true
4 | weight: 2
5 | ---
6 | ## Monitoring with Grafana
7 |
8 |
9 | 1. Execute the following command to open the Kiali UI:
10 |
11 | ```
12 | istioctl dashboard grafana
13 | ```
14 |
15 | 2. Mesh overview: In the Grafana dashboard, click **Home → Istio → Istio Mesh dashboard**:
16 |
17 |
18 | 
19 |
20 | This gives the global view of the Mesh along with services and workloads in the mesh.
21 |
22 |
23 | 3. Service Dashboard:
24 |
25 | 
26 |
--------------------------------------------------------------------------------
/content/10-monitoring-and-obervability/03-tracing.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Distributed Tracing"
3 | chapter: true
4 | weight: 3
5 | ---
6 |
7 | # Distributed Tracing with Jaeger
8 |
9 |
10 | 1. Execute the following command to open the Kiali UI:
11 |
12 | ```
13 | istioctl dashboard jaeger
14 | ```
15 |
16 | 2. Jaeger DAG graph overview:
17 |
18 | Directed Acyclic Graph(DAG) is a graph that is directed and without cycles connecting the other edges. The graph enables to detect any cyclic dependencies between the microservices.
19 |
20 | 
21 |
--------------------------------------------------------------------------------
/content/10-monitoring-and-obervability/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Monitoring and Observability"
3 | chapter: true
4 | weight: 10
5 | ---
6 | # Monitoring and Observability
7 |
8 | In this chapter we will deep dive into the capabilities provided by Istio Addons for Observability, Monitoring and Tracing.
9 |
10 | {{% children showhidden="false" %}}
11 |
--------------------------------------------------------------------------------
/content/11-security/03-RBAC authorization.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Service Authorization using RBAC"
3 | chapter: true
4 | weight: 2
5 | draft: true
6 | ---
7 | # Service Authorization using RBAC
8 |
9 | ## Introduction
10 |
11 | In large system, we need to isolate services and their interaction to avoid security issues and make sure that the flow is similar to what been designed.
12 | ## How it works
13 |
14 | 
15 |
16 |
17 | ## RBAC authorization in practice
18 |
19 | 1. Enable Istio RBAC for the `hipster-app` namespace.
20 |
21 | ```
22 | apiVersion: "rbac.istio.io/v1alpha1"
23 | kind: RbacConfig
24 | metadata:
25 | name: default
26 | spec:
27 | mode: 'ON_WITH_INCLUSION'
28 | inclusion:
29 | namespaces: ["hipster-app"]
30 | ```
31 |
32 | ```
33 | kubectl apply -f $WORKSHOP_HOME/istio-workshop-labs/istio-auth-rbac.yaml
34 | ```
35 |
36 | 1. Try to access to the hipster app:
37 |
38 |
39 | 
40 |
41 |
42 | 2. Let's define a RBAC role:
43 |
44 | ```
45 | apiVersion: "rbac.istio.io/v1alpha1"
46 | kind: ServiceRole
47 | metadata:
48 | name: viewer
49 | namespace: hipster-app
50 | spec:
51 | rules:
52 | - services: ["*.hipster-app.svc.cluster.local"]
53 | methods: ["GET", "POST", "HEAD"]
54 | ---
55 | apiVersion: rbac.istio.io/v1alpha1
56 | kind: ServiceRoleBinding
57 | metadata:
58 | name: bind-viewer
59 | namespace: hipster-app
60 | spec:
61 | subjects:
62 | - user: "*"
63 | roleRef:
64 | kind: ServiceRole
65 | name: viewer
66 | ```
67 |
68 | Apply the configuration:
69 |
70 |
71 | ```
72 | kubectl apply -f $WORKSHOP_HOME/istio-workshop-labs/istio-role-viewer.yaml
73 | ```
74 |
75 |
81 | ```
82 |
--------------------------------------------------------------------------------
/content/11-security/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Application security"
3 | chapter: true
4 | weight: 11
5 | ---
6 | # Application security
7 |
8 | In this chapter, we will have hand-on of the following security items:
9 |
10 | {{% children showhidden="false" %}}
11 |
--------------------------------------------------------------------------------
/content/12-debugging/02-understand-proxy-logs.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Understand sidecar logs"
3 | chapter: true
4 | weight: 2
5 | ---
6 | ## Understand proxy logs
7 |
8 | Nothing to tell, something to share :)
9 |
10 | {{< tweet 1157029140693995521 >}}
11 |
--------------------------------------------------------------------------------
/content/12-debugging/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Istio Debugging"
3 | chapter: true
4 | weight: 12
5 | ---
6 |
7 | # Istio Debugging
8 |
9 | {{% children showhidden="false" %}}
10 |
--------------------------------------------------------------------------------
/content/13-conclusion/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Conclusion and takeaways"
3 | chapter: true
4 | weight: 13
5 | ---
6 | # Conclusion and takeaways
7 |
8 |
9 | - The network is definitely NOT reliable.
10 |
11 | - Istio bring tools to DevOps and SRE to manage network concerns on behalf of Dev teams letting then focus on delivering business value.
12 |
13 | - The sidecar patterns tackles microservices concerns in a uniform and declarative way.
14 |
15 | - “**Istio can (and should) be adopted incrementally.**” _Christian Posta_, Istio in Action
16 |
17 | - Benchmark other service mesh technologies: [Linkerd](https://linkerd.io) is an option to consider also.
18 |
19 | - Service mesh maturity model:
20 |
21 | 
22 |
23 |
24 | {{% children showhidden="false" %}}
25 |
--------------------------------------------------------------------------------
/content/14-Appendix/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Appendix"
3 | chapter: true
4 | weight: 14
5 | ---
6 | # Appendix
7 |
8 |
9 | {{% children showhidden="false" %}}
10 |
--------------------------------------------------------------------------------
/content/14-Appendix/cleanup.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Cleanup"
3 | chapter: true
4 | weight: 1
5 | ---
6 |
7 | ## Undeploy sample application:
8 |
9 |
10 | **Skaffold**: you can run the following command to clean up the deployed resources.
11 | ```
12 | skaffold delete
13 | ```
14 |
15 | **kubectl**: you can run the following command to clean up the deployed resources.
16 |
17 | ```
18 | kubectl delete -f ./release/kubernetes-manifests.yaml
19 | ```
20 |
21 |
22 | ## Uninstall Istio
23 |
24 | ```
25 | helm delete istio --purge
26 | helm delete istio-init --purge
27 | helm delete istio-cni --purge
28 |
29 | helm ls
30 |
31 | kubectl -n istio-system delete job --all
32 | kubectl delete namespace istio-system
33 | kubectl delete -f $WORKSHOP_HOME/istio-$ISTIO_VERSION/install/kubernetes/helm/istio-init/files
34 | ```
35 |
36 | ## Delete Kubernetes cluster
37 | ```shell
38 | gcloud container clusters delete [CLUSTER_NAME]
39 | ```
40 |
41 | ```
42 | The following clusters will be deleted.
43 | - [istio-workshop] in [europe-west1-b]
44 |
45 | Do you want to continue (Y/n)? Y
46 |
47 | Deleting cluster istio-workshop...done.
48 | Deleted [https://container.googleapis.com/v1/projects/srecon19-workshop-250603/zones/europe-west1-b/clusters/istio-workshop].
49 | ```
50 |
51 | ## Delete Redis instance
52 |
53 | ```
54 | gcloud redis instances delete redis-cart --region=$REGION_ID
55 | ```
56 |
--------------------------------------------------------------------------------
/content/14-Appendix/further-reading.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Further reading"
3 | chapter: true
4 | weight: 1
5 | draft: true
6 | ---
7 | # Further reading
8 |
--------------------------------------------------------------------------------
/content/14-Appendix/notes.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Notes"
3 | chapter: true
4 | weight: 3
5 | draft: true
6 | ---
7 | ### GKE
8 | If you are running on a GKE cluster with RBAC enabled you need to grant a cluster role of cluster-admin to your Google account:
9 |
10 | ```
11 | kubectl create clusterrolebinding cluster-admin-binding-$USER \
12 | --clusterrole=cluster-admin --user=$(gcloud config get-value account)
13 | ```
14 |
--------------------------------------------------------------------------------
/content/15-contribute/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Contribute"
3 | chapter: true
4 | weight: 15
5 | ---
6 |
7 | # Contribute
8 |
9 | If you want to contribute to this workshop, extend it with new concepts or bring a correction/precision you are more than welcome.
10 |
11 | Sources of the workshop are on github: https://github.com/rafik8/istio-workshop
12 |
--------------------------------------------------------------------------------
/content/16-contact/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Contact"
3 | chapter: true
4 | weight: 16
5 | ---
6 | # Contact
7 |
8 |
9 |
10 |
11 | You could reach me:
12 |
13 | Mail: rafik.harabi@innovsquare.com
14 |
15 | Twitter: https://twitter.com/rafik8_
16 |
17 | 
18 |
19 | Linkedin: https://www.linkedin.com/in/rafikharabi/
20 |
21 | 
22 |
--------------------------------------------------------------------------------
/content/17-credits/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Credits"
3 | chapter: true
4 | weight: 17
5 | ---
6 | # Credits
7 |
8 | 1. [Hugo learn theme](https://github.com/matcornic/hugo-theme-learn/) for providing this great theme.
9 |
10 | 2. I would like to thanks the following people for her support to elaborate this workshop:
11 | - **[Arshia Mufti](https://twitter.com/arshia__)** for rehearsals session and her feedbacks before my workshop at [_SRECon EMEA 2019_](https://www.usenix.org/conference/srecon19emea/presentation/harabi).
12 | - My friends [Chekib Ayed](https://twitter.com/ChekibAyed) and [Mohamed Ali Ben Mansour](https://twitter.com/dalibenman) for their review.
13 |
--------------------------------------------------------------------------------
/content/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Istio Service Mesh Workshop"
3 | chapter: true
4 | weight: 1
5 | ---
6 | # Istio Service Mesh Workshop
7 |
8 | Welcome to the Istio Service Mesh Workshop!
9 |
10 | A labs driven workshop to explore service mesh technology and patterns using [Istio](https://istio.io) open source project.
11 |
12 | 
13 |
--------------------------------------------------------------------------------
/content/authors.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Authors
3 | disableToc: true
4 | ---
5 |
6 | ### Thanks to our wonderful contributors for making Open Source a better place!
7 |
8 |
12 |
--------------------------------------------------------------------------------
/layouts/partials/favicon.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/layouts/partials/logo.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 | Istio Service Mesh Workshop
12 |
13 |
--------------------------------------------------------------------------------
/layouts/partials/toc.html:
--------------------------------------------------------------------------------
1 | {{ if and (gt .WordCount 400 ) (.Params.toc) }}
2 |
8 | {{ end }}
9 |
--------------------------------------------------------------------------------
/netlify.toml:
--------------------------------------------------------------------------------
1 | [build]
2 | publish = "public"
3 | command = "hugo --gc --minify"
4 |
5 | [context.production.environment]
6 | HUGO_VERSION = "0.56.3"
7 | HUGO_ENV = "production"
8 | HUGO_ENABLEGITINFO = "true"
9 |
10 | [context.split1]
11 | command = "hugo --gc --minify --enableGitInfo"
12 |
13 | [context.split1.environment]
14 | HUGO_VERSION = "0.56.3"
15 | HUGO_ENV = "production"
16 |
17 | [context.deploy-preview]
18 | command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL"
19 |
20 | [context.deploy-preview.environment]
21 | HUGO_VERSION = "0.56.3"
22 |
23 | [context.branch-deploy]
24 | command = "hugo --gc --minify -b $DEPLOY_PRIME_URL"
25 |
26 | [context.branch-deploy.environment]
27 | HUGO_VERSION = "0.56.3"
28 |
29 | [context.next.environment]
30 | HUGO_ENABLEGITINFO = "true"
31 |
--------------------------------------------------------------------------------
/static/css/theme-mine.css:
--------------------------------------------------------------------------------
1 | /* #chapter {
2 | display: flex;
3 | align-items: flex-start;
4 | justify-content: flex-start;
5 | height: 100%;
6 | padding: 2rem 0;
7 | } */
8 |
9 | /* #chapter p {
10 | text-align: justify;
11 | } */
12 |
13 | pre {
14 | padding: 1rem;
15 | margin: 2rem 0;
16 | background: #282c34;
17 | border: 0;
18 | border-radius: 2px;
19 | line-height: 1.15;
20 | }
21 |
22 | #chapter p {
23 | text-align: left;
24 | font-size: 1.2rem;
25 | }
26 |
27 | #chapter h3 {
28 | text-align: left;
29 | }
30 |
--------------------------------------------------------------------------------
/static/images/application-dns.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/application-dns.png
--------------------------------------------------------------------------------
/static/images/application-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/application-view.png
--------------------------------------------------------------------------------
/static/images/canary-deployment-code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/canary-deployment-code.png
--------------------------------------------------------------------------------
/static/images/canary-deployment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/canary-deployment.png
--------------------------------------------------------------------------------
/static/images/cloud-dns-update-ingress.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/cloud-dns-update-ingress.png
--------------------------------------------------------------------------------
/static/images/clouddnsnet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/clouddnsnet.png
--------------------------------------------------------------------------------
/static/images/cloudns-activation-confirm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/cloudns-activation-confirm.png
--------------------------------------------------------------------------------
/static/images/cloudns-activation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/cloudns-activation.png
--------------------------------------------------------------------------------
/static/images/cloudns-add-new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/cloudns-add-new.png
--------------------------------------------------------------------------------
/static/images/cloudns-domain-dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/cloudns-domain-dashboard.png
--------------------------------------------------------------------------------
/static/images/cloudns-domain-registration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/cloudns-domain-registration.png
--------------------------------------------------------------------------------
/static/images/cloudns-domain-update.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/cloudns-domain-update.png
--------------------------------------------------------------------------------
/static/images/cloudns-free-plan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/cloudns-free-plan.png
--------------------------------------------------------------------------------
/static/images/cloudns-free-zone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/cloudns-free-zone.png
--------------------------------------------------------------------------------
/static/images/cloudns-signup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/cloudns-signup.png
--------------------------------------------------------------------------------
/static/images/code-oriented-frameworks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/code-oriented-frameworks.png
--------------------------------------------------------------------------------
/static/images/csharp-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/csharp-logo.png
--------------------------------------------------------------------------------
/static/images/dashboard-change-port-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/dashboard-change-port-1.png
--------------------------------------------------------------------------------
/static/images/dashboard-change-port.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/dashboard-change-port.png
--------------------------------------------------------------------------------
/static/images/envoy-downstream-upstream.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/envoy-downstream-upstream.png
--------------------------------------------------------------------------------
/static/images/fault-injection-503-kiali.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/fault-injection-503-kiali.png
--------------------------------------------------------------------------------
/static/images/fault-injection-503-recommandation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/fault-injection-503-recommandation.png
--------------------------------------------------------------------------------
/static/images/fault-injection-delay-recommandation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/fault-injection-delay-recommandation.png
--------------------------------------------------------------------------------
/static/images/frontend-v0.12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/frontend-v0.12.png
--------------------------------------------------------------------------------
/static/images/frontend-v0.13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/frontend-v0.13.png
--------------------------------------------------------------------------------
/static/images/frontend-versions.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/frontend-versions.png
--------------------------------------------------------------------------------
/static/images/gcloud-authorize.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/gcloud-authorize.png
--------------------------------------------------------------------------------
/static/images/gcloud-dns-record-dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/gcloud-dns-record-dashboard.png
--------------------------------------------------------------------------------
/static/images/gcloud-project-id.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/gcloud-project-id.png
--------------------------------------------------------------------------------
/static/images/gcp-cloud-dns-create-record.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/gcp-cloud-dns-create-record.png
--------------------------------------------------------------------------------
/static/images/gcp-cloud-dns-create-zone-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/gcp-cloud-dns-create-zone-1.png
--------------------------------------------------------------------------------
/static/images/gcp-cloud-dns-create-zone-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/gcp-cloud-dns-create-zone-2.png
--------------------------------------------------------------------------------
/static/images/gcp-cloud-dns-create-zone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/gcp-cloud-dns-create-zone.png
--------------------------------------------------------------------------------
/static/images/gcp-cloud-dns-created-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/gcp-cloud-dns-created-1.png
--------------------------------------------------------------------------------
/static/images/gcp-cloud-dns-created.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/gcp-cloud-dns-created.png
--------------------------------------------------------------------------------
/static/images/gcp-cloud-dns-record-created.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/gcp-cloud-dns-record-created.png
--------------------------------------------------------------------------------
/static/images/gcp-cloud-dns-record-updated.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/gcp-cloud-dns-record-updated.png
--------------------------------------------------------------------------------
/static/images/gcp-cloud-dns.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/gcp-cloud-dns.png
--------------------------------------------------------------------------------
/static/images/gcp-redis-instance-details.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/gcp-redis-instance-details.png
--------------------------------------------------------------------------------
/static/images/go-logo-aqua.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/go-logo-aqua.png
--------------------------------------------------------------------------------
/static/images/go-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/go-logo.png
--------------------------------------------------------------------------------
/static/images/google-consent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/google-consent.png
--------------------------------------------------------------------------------
/static/images/googlecloud-projectdashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/googlecloud-projectdashboard.png
--------------------------------------------------------------------------------
/static/images/googlecloud-projectselected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/googlecloud-projectselected.png
--------------------------------------------------------------------------------
/static/images/googlecloud-selectproject.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/googlecloud-selectproject.png
--------------------------------------------------------------------------------
/static/images/googlecloud-shell.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/googlecloud-shell.png
--------------------------------------------------------------------------------
/static/images/googlecloud-shellboostmode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/googlecloud-shellboostmode.png
--------------------------------------------------------------------------------
/static/images/googlecloud-shellwindow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/googlecloud-shellwindow.png
--------------------------------------------------------------------------------
/static/images/googlecloud-startshell.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/googlecloud-startshell.png
--------------------------------------------------------------------------------
/static/images/googlecloud-terms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/googlecloud-terms.png
--------------------------------------------------------------------------------
/static/images/googlecloud-trialaccount.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/googlecloud-trialaccount.png
--------------------------------------------------------------------------------
/static/images/grafana-dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/grafana-dashboard.png
--------------------------------------------------------------------------------
/static/images/grafana-istio-dashboards.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/grafana-istio-dashboards.png
--------------------------------------------------------------------------------
/static/images/grafana-mesh-dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/grafana-mesh-dashboard.png
--------------------------------------------------------------------------------
/static/images/grafana-service-dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/grafana-service-dashboard.png
--------------------------------------------------------------------------------
/static/images/helm-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/helm-logo.png
--------------------------------------------------------------------------------
/static/images/hipster-app-ingress.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/hipster-app-ingress.png
--------------------------------------------------------------------------------
/static/images/hipster-app-permissive-mtls.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/hipster-app-permissive-mtls.gif
--------------------------------------------------------------------------------
/static/images/hipster-app-permissive-mtls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/hipster-app-permissive-mtls.png
--------------------------------------------------------------------------------
/static/images/hipster-application-architecture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/hipster-application-architecture.png
--------------------------------------------------------------------------------
/static/images/hipster-rbac-fails.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/hipster-rbac-fails.png
--------------------------------------------------------------------------------
/static/images/hipster-shop-demo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/hipster-shop-demo.png
--------------------------------------------------------------------------------
/static/images/incognito-window.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/incognito-window.png
--------------------------------------------------------------------------------
/static/images/istio-bluelogo-whitebackground-unframed.svg:
--------------------------------------------------------------------------------
1 |
2 |
10 |
--------------------------------------------------------------------------------
/static/images/istio-building-blocks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/istio-building-blocks.png
--------------------------------------------------------------------------------
/static/images/istio-circuit-breaker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/istio-circuit-breaker.png
--------------------------------------------------------------------------------
/static/images/istio-components-interaction.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/istio-components-interaction.png
--------------------------------------------------------------------------------
/static/images/istio-default-dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/istio-default-dashboard.png
--------------------------------------------------------------------------------
/static/images/istio-egress-example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/istio-egress-example.png
--------------------------------------------------------------------------------
/static/images/istio-egress-pattern.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/istio-egress-pattern.png
--------------------------------------------------------------------------------
/static/images/istio-icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/static/images/istio-ingress-diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/istio-ingress-diagram.png
--------------------------------------------------------------------------------
/static/images/istio-ingress.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/istio-ingress.png
--------------------------------------------------------------------------------
/static/images/istio-logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/static/images/istio-mixer-adapters.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/istio-mixer-adapters.png
--------------------------------------------------------------------------------
/static/images/istio-package-anatomy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/istio-package-anatomy.png
--------------------------------------------------------------------------------
/static/images/istio-performance-dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/istio-performance-dashboard.png
--------------------------------------------------------------------------------
/static/images/istio-rbac-auth.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/istio-rbac-auth.png
--------------------------------------------------------------------------------
/static/images/istio-retry-strategy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/istio-retry-strategy.png
--------------------------------------------------------------------------------
/static/images/istio-traffic-splitting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/istio-traffic-splitting.png
--------------------------------------------------------------------------------
/static/images/istio-upstream-downstream.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/istio-upstream-downstream.png
--------------------------------------------------------------------------------
/static/images/istio-whitelogo-bluebackground-unframed:
--------------------------------------------------------------------------------
1 |
2 |
10 |
--------------------------------------------------------------------------------
/static/images/istio-whitelogo-bluebackground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/istio-whitelogo-bluebackground.png
--------------------------------------------------------------------------------
/static/images/istio-whitelogo-nobackground-unframed.svg:
--------------------------------------------------------------------------------
1 |
2 |
9 |
--------------------------------------------------------------------------------
/static/images/jaeger-dag-graph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/jaeger-dag-graph.png
--------------------------------------------------------------------------------
/static/images/jaeger-dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/jaeger-dashboard.png
--------------------------------------------------------------------------------
/static/images/kiali-bug-version-label.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/kiali-bug-version-label.png
--------------------------------------------------------------------------------
/static/images/kiali-dashbaord.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/kiali-dashbaord.png
--------------------------------------------------------------------------------
/static/images/kiali-login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/kiali-login.png
--------------------------------------------------------------------------------
/static/images/kiali-missing-secret.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/kiali-missing-secret.png
--------------------------------------------------------------------------------
/static/images/kiali-missing-sidecar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/kiali-missing-sidecar.png
--------------------------------------------------------------------------------
/static/images/kiali-service-graph.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/kiali-service-graph.gif
--------------------------------------------------------------------------------
/static/images/kiali-service-graph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/kiali-service-graph.png
--------------------------------------------------------------------------------
/static/images/kiali-service-metrics.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/kiali-service-metrics.png
--------------------------------------------------------------------------------
/static/images/kiali-service-overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/kiali-service-overview.png
--------------------------------------------------------------------------------
/static/images/kiali-traffic-splitting-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/kiali-traffic-splitting-1.png
--------------------------------------------------------------------------------
/static/images/kiali-traffic-splitting-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/kiali-traffic-splitting-2.png
--------------------------------------------------------------------------------
/static/images/kiali-traffic-splitting-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/kiali-traffic-splitting-3.png
--------------------------------------------------------------------------------
/static/images/kiali-traffic-splitting-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/kiali-traffic-splitting-5.png
--------------------------------------------------------------------------------
/static/images/locust-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/locust-logo.png
--------------------------------------------------------------------------------
/static/images/microservices-building-blocks-istio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/microservices-building-blocks-istio.png
--------------------------------------------------------------------------------
/static/images/microservices-building-blocks-map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/microservices-building-blocks-map.png
--------------------------------------------------------------------------------
/static/images/microservices-building-blocks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/microservices-building-blocks.png
--------------------------------------------------------------------------------
/static/images/microservices-evolution.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/microservices-evolution.png
--------------------------------------------------------------------------------
/static/images/microservices-iceberg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/microservices-iceberg.png
--------------------------------------------------------------------------------
/static/images/prometheus-request-count.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/prometheus-request-count.png
--------------------------------------------------------------------------------
/static/images/promotheus-dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/promotheus-dashboard.png
--------------------------------------------------------------------------------
/static/images/python-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/python-logo.png
--------------------------------------------------------------------------------
/static/images/rafik-linkedin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/rafik-linkedin.png
--------------------------------------------------------------------------------
/static/images/rafik8-twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/rafik8-twitter.png
--------------------------------------------------------------------------------
/static/images/redis-circuit-breaker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/redis-circuit-breaker.png
--------------------------------------------------------------------------------
/static/images/redis-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/redis-logo.png
--------------------------------------------------------------------------------
/static/images/service-mesh-maturity-model-v0.1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/service-mesh-maturity-model-v0.1.png
--------------------------------------------------------------------------------
/static/images/servicemesh-highlevel-architecture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/servicemesh-highlevel-architecture.png
--------------------------------------------------------------------------------
/static/images/sidecar-oriented-pattern.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/sidecar-oriented-pattern.png
--------------------------------------------------------------------------------
/static/images/skaffold-on-gke.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/static/images/skaffold-on-gke.png
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/.editorconfig:
--------------------------------------------------------------------------------
1 | # https://editorconfig.org
2 |
3 | root = true
4 |
5 | [*]
6 | charset = utf-8
7 | end_of_line = lf
8 | indent_size = 2
9 | indent_style = space
10 | trim_trailing_whitespace = true
11 |
12 | [*.js]
13 | insert_final_newline = true
14 |
15 | [*.md]
16 | trim_trailing_whitespace = false
17 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | public/
3 | exampleSite/public
4 | releases/
5 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/.grenrc.yml:
--------------------------------------------------------------------------------
1 | ---
2 | dataSource: "prs"
3 | prefix: "v"
4 | onlyMilestones: false
5 | changelogFilename: "CHANGELOG.md"
6 | includeMessages: "all"
7 | ignoreIssuesWith:
8 | - "support"
9 | ignoreLabels:
10 | - "duplicate"
11 | - "invalid"
12 | - "wontfix"
13 | groupBy:
14 | New features:
15 | - "feature"
16 | Bug Fixes:
17 | - "bug"
18 | Enhancements:
19 | - "enhancement"
20 | Internationalisation:
21 | - "i18n"
22 | Theme Meta:
23 | - "meta"
24 | Uncategorised:
25 | - "closed"
26 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/LICENSE.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Grav
4 | Copyright (c) 2016 MATHIEU CORNIC
5 | Copyright (c) 2017 Valere JEANTET
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | this software and associated documentation files (the "Software"), to deal in
9 | the Software without restriction, including without limitation the rights to
10 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | the Software, and to permit persons to whom the Software is furnished to do so,
12 | subject to the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be included in all
15 | copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/README.md:
--------------------------------------------------------------------------------
1 | # Hugo Learn Theme
2 |
3 | This repository contains a theme for [Hugo](https://gohugo.io/), based on great [Grav Learn Theme](https://learn.getgrav.org/).
4 |
5 | Visit the [theme documentation](https://learn.netlify.com/en/) to see what is going on. It is actually built with this theme.
6 |
7 | [](https://app.wercker.com/project/byKey/233466a2be73fcea400e7dc02ef6adf9)
8 | [](https://app.fossa.io/projects/git%2Bgithub.com%2Fmatcornic%2Fhugo-theme-learn?ref=badge_shield)
9 |
10 | ## Main features
11 |
12 | - Automatic Search
13 | - Multilingual mode
14 | - Unlimited menu levels
15 | - Automatic next/prev buttons to navigate through menu entries
16 | - Image resizing, shadow…
17 | - Attachments files
18 | - List child pages
19 | - Mermaid diagram (flowchart, sequence, gantt)
20 | - Customizable look and feel and themes variants
21 | - Buttons, Tip/Note/Info/Warning boxes, Expand
22 |
23 | ## Installation
24 |
25 | Navigate to your themes folder in your Hugo site and use the following commands:
26 |
27 | ```
28 | $ cd themes
29 | $ git clone https://github.com/matcornic/hugo-theme-learn.git
30 | ```
31 |
32 | Check that your Hugo version is minimum `0.25` with `hugo version`.
33 |
34 | 
35 |
36 | ## Usage
37 |
38 | - [Visit the documentation](https://learn.netlify.com/en/)
39 |
40 | ## Download old versions (prior to 2.0.0)
41 |
42 | If you need old version for compatibility purpose, either download [theme source code from releases](https://github.com/matcornic/hugo-theme-learn/releases) or use the right git tag. For example, with `1.1.0`
43 |
44 | - Direct download way: https://github.com/matcornic/hugo-theme-learn/archive/1.1.0.zip
45 | - Git way:
46 |
47 | ```shell
48 | cd themes/hugo-theme-learn
49 | git checkout tags/1.1.0
50 | ```
51 |
52 | For both solutions, the documentation is available at https://github.com/matcornic/hugo-theme-learn/releases/download/1.1.0/hugo-learn-doc-1.1.0.zip
53 |
54 | ## Credits
55 |
56 | Many thanks to [@vjeantet](https://github.com/vjeantet/) for the fork [docdock](https://github.com/vjeantet/hugo-theme-docdock). The v2 of this theme is mainly based on his work !
57 |
58 |
59 | ## License
60 | [](https://app.fossa.io/projects/git%2Bgithub.com%2Fmatcornic%2Fhugo-theme-learn?ref=badge_large)
61 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/archetypes/chapter.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "{{ replace .Name "-" " " | title }}"
3 | date = {{ .Date }}
4 | weight = 5
5 | chapter = true
6 | pre = "X. "
7 | +++
8 |
9 | ### Chapter X
10 |
11 | # Some Chapter title
12 |
13 | Lorem Ipsum.
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/archetypes/default.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "{{ replace .Name "-" " " | title }}"
3 | date = {{ .Date }}
4 | weight = 5
5 | +++
6 |
7 | Lorem Ipsum.
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/LICENSE.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 MATHIEU CORNIC
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | the Software, and to permit persons to whom the Software is furnished to do so,
10 | subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/config.toml:
--------------------------------------------------------------------------------
1 | baseURL = "/"
2 | languageCode = "en-US"
3 | defaultContentLanguage = "en"
4 |
5 | title = "Hugo Learn Documentation"
6 | theme = "hugo-theme-learn"
7 | themesdir = "../.."
8 | metaDataFormat = "yaml"
9 | defaultContentLanguageInSubdir= true
10 |
11 | [params]
12 | editURL = "https://github.com/matcornic/hugo-theme-learn/edit/master/exampleSite/content/"
13 | description = "Documentation for Hugo Learn Theme"
14 | author = "Mathieu Cornic"
15 | showVisitedLinks = true
16 | disableBreadcrumb = false
17 | disableNextPrev = false
18 |
19 | [outputs]
20 | home = [ "HTML", "RSS", "JSON"]
21 |
22 | [Languages]
23 | [Languages.en]
24 | title = "Documentation for Hugo Learn Theme"
25 | weight = 1
26 | languageName = "English"
27 |
28 | [[Languages.en.menu.shortcuts]]
29 | name = " GitHub repo"
30 | identifier = "ds"
31 | url = "https://github.com/matcornic/hugo-theme-learn"
32 | weight = 10
33 |
34 | [[Languages.en.menu.shortcuts]]
35 | name = " Showcases"
36 | url = "showcase"
37 | weight = 11
38 |
39 | [[Languages.en.menu.shortcuts]]
40 | name = " Hugo Documentation"
41 | identifier = "hugodoc"
42 | url = "https://gohugo.io/"
43 | weight = 20
44 |
45 | [[Languages.en.menu.shortcuts]]
46 | name = " Credits"
47 | url = "/credits"
48 | weight = 30
49 |
50 | [Languages.fr]
51 | title = "Documentation du thème Hugo Learn"
52 | weight = 2
53 | languageName = "Français"
54 |
55 | [[Languages.fr.menu.shortcuts]]
56 | name = " Repo GitHub"
57 | identifier = "ds"
58 | url = "https://github.com/matcornic/hugo-theme-learn"
59 | weight = 10
60 |
61 | [[Languages.fr.menu.shortcuts]]
62 | name = " Vitrine"
63 | url = "/showcase"
64 | weight = 11
65 |
66 | [[Languages.fr.menu.shortcuts]]
67 | name = " Documentation Hugo"
68 | identifier = "hugodoc"
69 | url = "https://gohugo.io/"
70 | weight = 20
71 |
72 | [[Languages.fr.menu.shortcuts]]
73 | name = " Crédits"
74 | url = "/credits"
75 | weight = 30
76 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/_index.en.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Learn Theme for Hugo"
3 | ---
4 |
5 | # Hugo learn theme
6 |
7 | [Hugo-theme-learn](http://github.com/matcornic/hugo-theme-learn) is a theme for [Hugo](https://gohugo.io/), a fast and modern static website engine written in Go. Where Hugo is often used for blogs, this multilingual-ready theme is **fully designed for documentation**.
8 |
9 | This theme is a partial porting of the [Learn theme](http://learn.getgrav.org/) of [Grav](https://getgrav.org/), a modern flat-file CMS written in PHP.
10 |
11 | {{% notice tip %}}Learn theme works with a _page tree structure_ to organize content : All contents are pages, which belong to other pages. [read more about this]({{%relref "cont/pages/_index.md"%}})
12 | {{% /notice %}}
13 |
14 | ## Main features
15 |
16 | * [Automatic Search]({{%relref "basics/configuration/_index.md#activate-search" %}})
17 | * [Multilingual mode]({{%relref "cont/i18n/_index.md" %}})
18 | * **Unlimited menu levels**
19 | * **Automatic next/prev buttons to navigate through menu entries**
20 | * [Image resizing, shadow...]({{%relref "cont/markdown.en.md#images" %}})
21 | * [Attachments files]({{%relref "shortcodes/attachments.en.md" %}})
22 | * [List child pages]({{%relref "shortcodes/children/_index.md" %}})
23 | * [Mermaid diagram]({{%relref "shortcodes/mermaid.en.md" %}}) (flowchart, sequence, gantt)
24 | * [Customizable look and feel and themes variants]({{%relref "basics/style-customization/_index.md"%}})
25 | * [Buttons]({{%relref "shortcodes/button.en.md" %}}), [Tip/Note/Info/Warning boxes]({{%relref "shortcodes/notice.en.md" %}}), [Expand]({{%relref "shortcodes/expand.en.md" %}})
26 |
27 | 
28 |
29 | ## Contribute to this documentation
30 | Feel free to update this content, just click the **Edit this page** link displayed on top right of each page, and pullrequest it
31 |
32 | {{% notice info %}}
33 | Your modification will be deployed automatically when merged.
34 | {{% /notice %}}
35 |
36 | ## Documentation website
37 | This current documentation has been statically generated with Hugo with a simple command : `hugo -t hugo-theme-learn` -- source code is [available here at GitHub](https://github.com/matcornic/hugo-theme-learn)
38 |
39 | {{% notice note %}}
40 | Automatically published and hosted thanks to [Netlify](https://www.netlify.com/). Read more about [Automated HUGO deployments with Netlify](https://www.netlify.com/blog/2015/07/30/hosting-hugo-on-netlifyinsanely-fast-deploys/)
41 | {{% /notice %}}
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/_index.fr.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Learn Theme for Hugo"
3 | ---
4 |
5 | # Thème Hugo learn
6 |
7 | [Hugo-theme-learn](http://github.com/matcornic/hugo-theme-learn) est un thème pour [Hugo](https://gohugo.io/), un générateur de site statique, rapide et modern, écrit en Go. Tandis que Hugo est souvent utilisé pour des blogs, ce thème multi-langue est **entièrement conçu pour la documentation**.
8 |
9 | Ce thème est un portage partiel du [thème Learn](http://learn.getgrav.org/) de [Grav](https://getgrav.org/), un CMS modern écrit en PHP.
10 |
11 | {{% notice tip %}}Le thème Learn fonctionne grâce à la structure de page aborescentes pour organiser le contenu: tous les contenus sont des pages qui appartiennent à d'autres pages. [Plus d'infos]({{%relref "cont/pages/_index.md"%}})
12 | {{% /notice %}}
13 |
14 | ## Fonctionnalités principales
15 |
16 | * [Recherche automatique]({{%relref "basics/configuration/_index.md#activer-recherche" %}})
17 | * [Mode multi-langue]({{%relref "cont/i18n/_index.md" %}})
18 | * **Nombre de niveau infini dans le menu**
19 | * **Boutons suivant/précédent automatiquement générés pour naviguer entre les items du menu**
20 | * [Taille d'image, ombres...]({{%relref "cont/markdown.fr.md#images" %}})
21 | * [Fichiers joints]({{%relref "shortcodes/attachments.fr.md" %}})
22 | * [Lister les pages filles]({{%relref "shortcodes/children/_index.md" %}})
23 | * [Diagrammes Mermaid]({{%relref "shortcodes/mermaid.fr.md" %}}) (flowchart, sequence, gantt)
24 | * [Style configurable and variantes de couleurs]({{%relref "basics/style-customization/_index.md"%}})
25 | * [Boutons]({{%relref "shortcodes/button.fr.md" %}}), [Messages Astuce/Note/Info/Attention]({{%relref "shortcodes/notice.fr.md" %}}), [Expand]({{%relref "shortcodes/expand.fr.md" %}})
26 |
27 | 
28 |
29 | ## Contribuer à cette documentation
30 |
31 | N'hésitez pas à mettre à jour ce contenu en cliquant sur le lien **Modifier cette page** en haut de chaque page, et créer la Pull Request associée.
32 |
33 | {{% notice info %}}
34 | Votre modification sera déployée automatiquement quand elle sera mergée.
35 | {{% /notice %}}
36 |
37 | ## Site de documentation
38 |
39 | Cette documentation statique a été générée avec Hugo avec une simple commande : `hugo -t hugo-theme-learn` -- le code source est [disponible sur Github](https://github.com/matcornic/hugo-theme-learn)
40 |
41 | {{% notice note %}}
42 | Le site est auomatiquement publié et hébergé par [Netlify](https://www.netlify.com/). Plus d'infos sur le [déploiement de site Hugo avec Netlify](https://www.netlify.com/blog/2015/07/30/hosting-hugo-on-netlifyinsanely-fast-deploys/)(En anglais)
43 | {{% /notice %}}
44 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/basics/_index.en.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Basics
3 | weight: 5
4 | pre: "1. "
5 | chapter: true
6 | ---
7 |
8 | ### Chapter 1
9 |
10 | # Basics
11 |
12 | Discover what this Hugo theme is all about and the core-concepts behind it.
13 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/basics/_index.fr.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Démarrage
3 | weight: 5
4 | pre: "1. "
5 | chapter: true
6 | ---
7 |
8 | ### Chapitre 1
9 |
10 | # Démarrage
11 |
12 | Découvrez comment utiliser ce thème Hugo et apprenez-en les concepts
13 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/basics/configuration/_index.en.md:
--------------------------------------------------------------------------------
1 | ---
2 | date: 2016-04-09T16:50:16+02:00
3 | title: Configuration
4 | weight: 20
5 | ---
6 |
7 | ## Global site parameters
8 |
9 | On top of [Hugo global configuration](https://gohugo.io/overview/configuration/), **Hugo-theme-learn** lets you define the following parameters in your `config.toml` (here, values are default).
10 |
11 | Note that some of these parameters are explained in details in other sections of this documentation.
12 |
13 | ```toml
14 | [params]
15 | # Prefix URL to edit current page. Will display an "Edit this page" button on top right hand corner of every page.
16 | # Useful to give opportunity to people to create merge request for your doc.
17 | # See the config.toml file from this documentation site to have an example.
18 | editURL = ""
19 | # Author of the site, will be used in meta information
20 | author = ""
21 | # Description of the site, will be used in meta information
22 | description = ""
23 | # Shows a checkmark for visited pages on the menu
24 | showVisitedLinks = false
25 | # Disable search function. It will hide search bar
26 | disableSearch = false
27 | # Javascript and CSS cache are automatically busted when new version of site is generated.
28 | # Set this to true to disable this behavior (some proxies don't handle well this optimization)
29 | disableAssetsBusting = false
30 | # Set this to true to disable copy-to-clipboard button for inline code.
31 | disableInlineCopyToClipBoard = false
32 | # A title for shortcuts in menu is set by default. Set this to true to disable it.
33 | disableShortcutsTitle = false
34 | # When using mulitlingual website, disable the switch language button.
35 | disableLanguageSwitchingButton = false
36 | # Hide breadcrumbs in the header and only show the current page title
37 | disableBreadcrumb = true
38 | # Hide Next and Previous page buttons normally displayed full height beside content
39 | disableNextPrev = true
40 | # Order sections in menu by "weight" or "title". Default to "weight"
41 | ordersectionsby = "weight"
42 | # Change default color scheme with a variant one. Can be "red", "blue", "green".
43 | themeVariant = ""
44 | ```
45 |
46 | ## Activate search
47 |
48 | If not already present, add the follow lines in the same `config.toml` file.
49 |
50 | ```toml
51 | [outputs]
52 | home = [ "HTML", "RSS", "JSON"]
53 | ```
54 |
55 | Learn theme uses the last improvement available in hugo version 20+ to generate a json index file ready to be consumed by lunr.js javascript search engine.
56 |
57 | > Hugo generate lunrjs index.json at the root of public folder.
58 | > When you build the site with `hugo server`, hugo generates it internally and of course it doesn’t show up in the filesystem
59 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/basics/configuration/_index.fr.md:
--------------------------------------------------------------------------------
1 | ---
2 | date: 2016-04-09T16:50:16+02:00
3 | title: Configuration
4 | weight: 20
5 | ---
6 |
7 | ## Paramètres globaux du site
8 |
9 | En plus de la [configuration globale d'Hugo](https://gohugo.io/overview/configuration/), **Hugo-theme-learn** vous permet de définir les paramètres suivant dans votre fichier `config.toml` (ci-dessous sont affichées les valeurs par défaut).
10 |
11 | Notez que certains de ces paramètres sont expliqués en détails dans d'autres sections de cette documentation.
12 |
13 | ```toml
14 | [params]
15 | # L'URL préfixe pour éditer la page courante. Ce paramètre affichera un bouton "Modifier cette page" on haut de de chacune des pages.
16 | # Pratique pour donner les possibilité à vos utilisateurs de créer une merge request pour votre doc.
17 | # Allez voir le fichier config.toml de cette documentation pour avoir un exemple.
18 | editURL = ""
19 | # Autheur du site, est utilisé dans les informations meta
20 | author = ""
21 | # Description du site, est utilisé dans les informations meta
22 | description = ""
23 | # Affiche une icône lorsque la page a été visitée
24 | showVisitedLinks = false
25 | # Désactive la fonction de recherche. Une valeur à true cache la barre de recherche.
26 | disableSearch = false
27 | # Par défaut, le cache Javascript et CSS est automatiquement vidé lorsqu'une nouvelle version du site est générée.
28 | # Utilisez ce paramètre lorsque vous voulez désactiver ce comportement (c'est parfois incompatible avec certains proxys)
29 | disableAssetsBusting = false
30 | # Utilisez ce paramètre pour désactiver le bouton copy-to-clipboard pour le code formatté sur une ligne.
31 | disableInlineCopyToClipBoard = false
32 | # Un titre est défini par défaut lorsque vous utilisez un raccourci dans le menu. Utilisez ce paramètre pour le cacher.
33 | disableShortcutsTitle = false
34 | # Quand vous utilisez un site multi-langue, utilisez ce paramètre pour désactiver le bouton de changement de langue.
35 | disableLanguageSwitchingButton = false
36 | # Ordonne les sections dans menu par poids ("weight") ou titre ("title"). Défaut à "weight"
37 | ordersectionsby = "weight"
38 | # Utilisez ce paramètre pour modifier le schéma de couleur du site. Les valeurs par défaut sont "red", "blue", "green".
39 | themeVariant = ""
40 | ```
41 |
42 | ## Activer la recherche {#activer-recherche}
43 |
44 | Si ce n'est pas déjà présent, ajoutez les lignes suivantes dans le fichier `config.toml`.
45 |
46 | ```toml
47 | [outputs]
48 | home = [ "HTML", "RSS", "JSON"]
49 | ```
50 |
51 | Le thème *Learn* utilise les dernières amélioraions d'Hugo pour générer un fichier d'index JSON, prêt à être consommé par le moteur de recherche lunr.js.
52 |
53 | > Hugo génère lunrjs index.json à la racine du dossier `public`.
54 | > Quand vous générez le site avec `hugo server`, Hugo génère le fichier en mémoire, il n'est donc pas disponible sur le disque.
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/basics/installation/images/chapter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/basics/installation/images/chapter.png
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/basics/requirements/_index.en.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Requirements
3 | weight: 10
4 | disableToc: true
5 | ---
6 |
7 | Thanks to the simplicity of Hugo, this page is as empty as this theme needs requirements.
8 |
9 | Just download latest version of [Hugo binary (> 0.25)](https://gohugo.io/getting-started/installing/) for your OS (Windows, Linux, Mac) : it's that simple.
10 |
11 | 
12 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/basics/requirements/_index.fr.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Prérequis
3 | weight: 10
4 | disableToc: true
5 | ---
6 |
7 | Grâce à la simplicité d'Hugo, cette page est vide car il n'y a quasi pas de prérequis pour utiliser le thème.
8 |
9 | Téléchargez la dernière version du [binaire Hugo (> 0.25)](https://gohugo.io/getting-started/installing/) pour votre Système d'exploitation (Windows, Linux, Mac) : et c'est tout !
10 |
11 | 
12 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/basics/requirements/images/magic.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/basics/requirements/images/magic.gif
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/blue-variant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/blue-variant.png
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/green-variant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/green-variant.png
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/red-variant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/red-variant.png
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/cont/_index.en.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Content
3 | weight: 10
4 | chapter: true
5 | pre: "2. "
6 | ---
7 |
8 | ### Chapter 2
9 |
10 | # Content
11 |
12 | Find out how to create and organize your content quickly and intuitively.
13 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/cont/_index.fr.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Contenu
3 | weight: 10
4 | chapter: true
5 | pre: "2. "
6 | ---
7 |
8 | ### Chapitre 2
9 |
10 | # Contenu
11 |
12 | Découvrez comment créer et organiser votre contenu facilement et intuitivement.
13 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/cont/archetypes.en.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Archetypes
3 | weight: 10
4 | ---
5 |
6 | Using the command: `hugo new [relative new content path]`, you can start a content file with the date and title automatically set. While this is a welcome feature, active writers need more : [archetypes](https://gohugo.io/content/archetypes/).
7 |
8 | It is pre-configured skeleton pages with default front matter. Please refer to the documentation for types of page to understand the differences.
9 |
10 | ## Chapter {#archetypes-chapter}
11 |
12 | To create a Chapter page, run the following commands
13 |
14 | ```
15 | hugo new --kind chapter /_index.md
16 | ```
17 |
18 | It will create a page with predefined Front-Matter:
19 |
20 | ```markdown
21 | +++
22 | title = "{{ replace .Name "-" " " | title }}"
23 | date = {{ .Date }}
24 | weight = 5
25 | chapter = true
26 | pre = "X. "
27 | +++
28 |
29 | ### Chapter X
30 |
31 | # Some Chapter title
32 |
33 | Lorem Ipsum.
34 | ```
35 |
36 | ## Default
37 |
38 | To create a default page, run either one of the following commands
39 |
40 | ```
41 | # Either
42 | hugo new //_index.md
43 | # Or
44 | hugo new /.md
45 | ```
46 |
47 | It will create a page with predefined Front-Matter:
48 |
49 | ```markdown
50 | +++
51 | title = "{{ replace .Name "-" " " | title }}"
52 | date = {{ .Date }}
53 | weight = 5
54 | +++
55 |
56 | Lorem Ipsum.
57 | ```
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/cont/archetypes.fr.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Archétypes
3 | weight: 10
4 | ---
5 |
6 | En utilisant la commande: `hugo new [chemin vers nouveau contenu]`, vous pouvez créer un nouveau fichier avec la date et le title automatiquement initialisé. Même si c'est une fonctionnalité intéressante, elle reste limitée pour les auteurs actifs qui ont besoin de mieux : les [archetypes](https://gohugo.io/content/archetypes/).
7 |
8 | Les archétypes sont des squelettes de pages préconfigurées avec un Front Matter par défaut. Merci de vous référer à la documentation pour connaitre les différents types de page.
9 |
10 | ## Chapitre {#archetypes-chapter}
11 |
12 | Pour créer un chapitre, lancez les commandes suivantes
13 |
14 | ```
15 | hugo new --kind chapter /_index.md
16 | ```
17 |
18 | Cela crééra une page avec le Front Matter suivant:
19 |
20 | ```markdown
21 | +++
22 | title = "{{ replace .Name "-" " " | title }}"
23 | date = {{ .Date }}
24 | weight = 5
25 | chapter = true
26 | pre = "X. "
27 | +++
28 |
29 | ### Chapter X
30 |
31 | # Some Chapter title
32 |
33 | Lorem Ipsum.
34 | ```
35 |
36 | ## Défaut
37 |
38 | Pour créer une page classique, lancer l'une des deux commandes suivantes
39 |
40 | ```
41 | # Soit
42 | hugo new //_index.md
43 | # Ou
44 | hugo new /.md
45 | ```
46 |
47 | Cela crééra une page avec le Front Matter suivant:
48 |
49 | ```markdown
50 | +++
51 | title = "{{ replace .Name "-" " " | title }}"
52 | date = {{ .Date }}
53 | weight = 5
54 | +++
55 |
56 | Lorem Ipsum.
57 | ```
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/cont/i18n/_index.en.md:
--------------------------------------------------------------------------------
1 | ---
2 | date: 2016-04-09T16:50:16+02:00
3 | title: Multilingual and i18n
4 | weight: 30
5 | ---
6 |
7 | **Learn theme** is fully compatible with Hugo multilingual mode.
8 |
9 | It provides:
10 |
11 | - Translation strings for default values (English and French). Feel free to contribute !
12 | - Automatic menu generation from multilingual content
13 | - In-browser language switching
14 |
15 | 
16 |
17 | ## Basic configuration
18 |
19 | After learning [how Hugo handle multilingual websites](https://gohugo.io/content-management/multilingual), define your languages in your `config.toml` file.
20 |
21 | For example with current French and English website.
22 |
23 | ```toml
24 | # English is the default language
25 | defaultContentLanguage = "en"
26 | # Force to have /en/my-page and /fr/my-page routes, even for default language.
27 | defaultContentLanguageInSubdir= true
28 |
29 | [Languages]
30 | [Languages.en]
31 | title = "Documentation for Hugo Learn Theme"
32 | weight = 1
33 | languageName = "English"
34 |
35 | [Languages.fr]
36 | title = "Documentation du thème Hugo Learn"
37 | weight = 2
38 | languageName = "Français"
39 | ```
40 |
41 | Then, for each new page, append the *id* of the language to the file.
42 |
43 | - Single file `my-page.md` is split in two files:
44 | - in English: `my-page.en.md`
45 | - in French: `my-page.fr.md`
46 | - Single file `_index.md` is split in two files:
47 | - in English: `_index.en.md`
48 | - in French: `_index.fr.md`
49 |
50 | {{% notice info %}}
51 | Be aware that only translated pages are displayed in menu. It's not replaced with default language content.
52 | {{% /notice %}}
53 |
54 | {{% notice tip %}}
55 | Use [slug](https://gohugo.io/content-management/multilingual/#translate-your-content) Front Matter parameter to translate urls too.
56 | {{% /notice %}}
57 |
58 | ## Overwrite translation strings
59 |
60 | Translations strings are used for common default values used in the theme (*Edit this page* button, *Search placeholder* and so on). Translations are available in french and english but you may use another language or want to override default values.
61 |
62 | To override these values, create a new file in your local i18n folder `i18n/.toml` and inspire yourself from the theme `themes/hugo-theme-learn/i18n/en.toml`
63 |
64 | By the way, as these translations could be used by other people, please take the time to propose a translation by [making a PR](https://github.com/matcornic/hugo-theme-learn/pulls) to the theme !
65 |
66 | ## Disable language switching
67 |
68 | Switching the language in the browser is a great feature, but for some reasons you may want to disable it.
69 |
70 | Just set `disableLanguageSwitchingButton=true` in your `config.toml`
71 |
72 | ```toml
73 | [params]
74 | # When using mulitlingual website, disable the switch language button.
75 | disableLanguageSwitchingButton = true
76 | ```
77 |
78 | 
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/cont/i18n/images/i18n-menu.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/cont/i18n/images/i18n-menu.gif
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/cont/icons.en.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Icons and logos
3 | weight: 27
4 | ---
5 |
6 | The Learn theme for Hugo loads the [**Font Awesome**](https://fontawesome.com) library, allowing you to easily display any icon or logo available in the Font Awesome free collection.
7 |
8 | ## Finding an icon
9 |
10 | Browse through the available icons in the [Font Awesome Gallery](https://fontawesome.com/icons?d=gallery&m=free). Notice that the **free** filter is enabled, as only the free icons are available by default.
11 |
12 | Once on the Font Awesome page for a specific icon, for example the page for the [heart](https://fontawesome.com/icons/heart?style=solid), copy the HTML reference and paste into the markdown content.
13 |
14 | The HTML to include the heart icon is:
15 |
16 | ```
17 |
18 | ```
19 |
20 | ## Including in markdown
21 |
22 | Paste the `` HTML into markup and Font Awesome will load the relevant icon.
23 |
24 | ```
25 | Built with from Grav and Hugo
26 | ```
27 |
28 | Which appears as
29 |
30 | Built with from Grav and Hugo
31 |
32 | ## Customising icons
33 |
34 | Font Awesome provides many ways to modify the icon
35 |
36 | * Change colour (by default the icon will inherit the parent colour)
37 | * Increase or decrease size
38 | * Rotate
39 | * Combine with other icons
40 |
41 | Check the full documentation on [web fonts with CSS](https://fontawesome.com/how-to-use/web-fonts-with-css) for more.
42 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/frontmatter-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/frontmatter-icon.png
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/pages-chapter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/pages-chapter.png
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/pages-default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/pages-default.png
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/cont/tags.en.md:
--------------------------------------------------------------------------------
1 | ---
2 | date: 2018-11-29T08:41:44+01:00
3 | title: Tags
4 | weight: 40
5 | tags: ["documentation", "tutorial"]
6 | ---
7 |
8 | *Learn theme* support one default taxonomy of gohugo: the *tag* feature.
9 |
10 | ## Configuration
11 |
12 | Just add tags to any page:
13 |
14 | ```markdown
15 | ---
16 | date: 2018-11-29T08:41:44+01:00
17 | title: Theme tutorial
18 | weight: 15
19 | tags: ["tutorial", "theme"]
20 | ---
21 | ```
22 |
23 | ## Behavior
24 |
25 |
26 | The tags are displayed at the top of the page, in their insertion order.
27 |
28 | Each tag is a link to a *Taxonomy* page displaying all the articles with the given tag.
29 |
30 | ## List all the tags
31 |
32 | In the `config.toml` file you can add a shortcut to display all the tags
33 |
34 | ```toml
35 | [[menu.shortcuts]]
36 | name = " Tags"
37 | url = "/tags"
38 | weight = 30
39 | ```
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/cont/tags.fr.md:
--------------------------------------------------------------------------------
1 | ---
2 | date: 2018-11-29T08:41:44+01:00
3 | title: Tags
4 | weight: 40
5 | tags: ["documentation", "tutorial"]
6 | ---
7 |
8 |
9 | Le *thème Learn* supporte une des taxonomy par défaut de GoHugo : les tags.
10 |
11 | ## Configuration
12 |
13 | Il suffit d'ajouter un tableau de tags sur la page :
14 |
15 | ```markdown
16 | ---
17 | date: 2018-11-29T08:41:44+01:00
18 | title: Tutoriel pour le thème
19 | weight: 15
20 | tags: ["tutoriel", "theme"]
21 | ---
22 | ```
23 |
24 | ## Comportement
25 |
26 | Les tags sont affichés en haut de la page, dans l'ordre dans lequel ils ont été saisis.
27 |
28 | Chaque tag est un lien vers une page *Taxonomy*, qui affiche tous les article avec ce tag.
29 |
30 |
31 | ## Liste des tags
32 |
33 | Il est possible de rajouter un raccourci dans le fichier `config.toml` afin d'afficher une page listant tous les tags
34 |
35 | ```toml
36 | [[menu.shortcuts]]
37 | name = " Tags"
38 | url = "/tags"
39 | weight = 30
40 | ```
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/credits.en.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Credits
3 | disableToc: true
4 | ---
5 |
6 | ## Contributors
7 |
8 | Thanks to them for making Open Source Software a better place !
9 |
10 | {{% ghcontributors "https://api.github.com/repos/matcornic/hugo-theme-learn/contributors?per_page=100" %}}
11 |
12 | And a special thanks to [@vjeantet](https://github.com/vjeantet) for his work on [docdock](https://github.com/vjeantet/hugo-theme-docdock), a fork of hugo-theme-learn. v2.0.0 of this theme is inspired by his work.
13 |
14 | ## Packages and libraries
15 | * [mermaid](https://knsv.github.io/mermaid) - generation of diagram and flowchart from text in a similar manner as markdown
16 | * [font awesome](http://fontawesome.io/) - the iconic font and CSS framework
17 | * [jQuery](https://jquery.com) - The Write Less, Do More, JavaScript Library
18 | * [lunr](https://lunrjs.com) - Lunr enables you to provide a great search experience without the need for external, server-side, search services...
19 | * [horsey](https://bevacqua.github.io/horsey/) - Progressive and customizable autocomplete component
20 | * [clipboard.js](https://zenorocha.github.io/clipboard.js) - copy text to clipboard
21 | * [highlight.js](https://highlightjs.org) - Javascript syntax highlighter
22 | * [modernizr](https://modernizr.com) - A JavaScript toolkit that allows web developers to use new CSS3 and HTML5 features while maintaining a fine level of control over browsers that don't support
23 |
24 | ## Tooling
25 |
26 | * [Netlify](https://www.netlify.com) - Continuous deployement and hosting of this documentation
27 | * [Hugo](https://gohugo.io/)
28 |
29 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/credits.fr.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Crédits
3 | disableToc: true
4 | ---
5 |
6 | ## Contributeurs
7 |
8 | Merci à eux de rendre le monde Open Source meilleur !
9 |
10 | {{% ghcontributors "https://api.github.com/repos/matcornic/hugo-theme-learn/contributors?per_page=100" %}}
11 |
12 | Et un grand merci à [@vjeantet](https://github.com/vjeantet) pour son travail sur [docdock](https://github.com/vjeantet/hugo-theme-docdock), un fork de _hugo-theme-learn_. La v2.0.0 du thème est en grande partie inspirée de son travail.
13 |
14 | ## Packages et librairies
15 | * [mermaid](https://knsv.github.io/mermaid) - géneration de diagrames et graphiques à partir de texte similaire à Markdown
16 | * [font awesome](http://fontawesome.io/) - Le framework de polices iconiques
17 | * [jQuery](https://jquery.com) - La plus connue des librairies Javascript
18 | * [lunr](https://lunrjs.com) - Lunr fournit des fonctions de recherche sans service externe
19 | * [horsey](https://bevacqua.github.io/horsey/) - Autocomplétion de composants (utiliser pour les suggestions de recherche)
20 | * [clipboard.js](https://zenorocha.github.io/clipboard.js) - Copier le texte dans le presse-papier
21 | * [highlight.js](https://highlightjs.org) - Mise en valeur de syntaxes
22 | * [modernizr](https://modernizr.com) - Une boite à outil Javascript qui permet aux développeurs d'utiliser les dernières fonctionnalités de CSS et HTML5, même sur de vieux navigateurs.
23 |
24 | ## Outils
25 |
26 | * [Netlify](https://www.netlify.com) - Déploiement continue et hébergement de cette documentation
27 | * [Hugo](https://gohugo.io/)
28 |
29 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/_index.en.md:
--------------------------------------------------------------------------------
1 | ---
2 | date: 2016-04-09T16:50:16+02:00
3 | title: Shortcodes
4 | pre: "3. "
5 | weight: 15
6 | ---
7 |
8 | Hugo uses Markdown for its simple content format. However, there are a lot of things that Markdown doesn’t support well. You could use pure HTML to expand possibilities.
9 |
10 | But this happens to be a bad idea. Everyone uses Markdown because it's pure and simple to read even non-rendered. You should avoid HTML to keep it as simple as possible.
11 |
12 | To avoid this limitations, Hugo created [shortcodes](https://gohugo.io/extras/shortcodes/). A shortcode is a simple snippet inside a page.
13 |
14 | **Hugo-theme-learn** provides multiple shortcodes on top of existing ones.
15 |
16 | {{%children style="h2" description="true" %}}
17 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/_index.fr.md:
--------------------------------------------------------------------------------
1 | ---
2 | date: 2016-04-09T16:50:16+02:00
3 | title: Shortcodes
4 | pre: "3. "
5 | weight: 15
6 | ---
7 |
8 | Hugo utilise Markdown pour son format simple. Cependant, il y a beaucoup de chose que Markdown ne supporte pas bien. On pourrait utiliser du HTML pur pour améliorer les capacité du Markdown.
9 |
10 | Mais c'est probablement une mauvaise idée. Tout le monde utilise le Markdown parce que c'est pur et simple à lire même lorsqu'il est affiché en texte brut. Vous devez éviter le HTML autant que possible pour garder le contenu simple.
11 |
12 | Cependant, pour éviter les limitations, Hugo a créé les [shortcodes](https://gohugo.io/extras/shortcodes/). Un shortcode est un bout de code (*snippet*) dans une page.
13 |
14 | **Hugo-theme-learn** fournit de multiple shortcodes en plus de ceux existant.
15 |
16 | {{%children style="h2" description="true" %}}
17 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/BachGavotteShort.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/BachGavotteShort.mp3
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/Carroll_AliceAuPaysDesMerveilles.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/Carroll_AliceAuPaysDesMerveilles.pdf
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/adivorciarsetoca00cape.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/adivorciarsetoca00cape.pdf
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/hugo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/hugo.png
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/movieselectricsheep-flock-244-32500-2.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/movieselectricsheep-flock-244-32500-2.mp4
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Attachments
3 | description : "The Attachments shortcode displays a list of files attached to a page."
4 | ---
5 |
6 | The Attachments shortcode displays a list of files attached to a page.
7 |
8 | {{% attachments /%}}
9 |
10 | ## Usage
11 |
12 | The shortcurt lists files found in a **specific folder**.
13 | Currently, it support two implementations for pages
14 |
15 | 1. If your page is a markdown file, attachements must be place in a **folder** named like your page and ending with **.files**.
16 |
17 | > * content
18 | > * _index.md
19 | > * page.files
20 | > * attachment.pdf
21 | > * page.md
22 |
23 | 2. If your page is a **folder**, attachements must be place in a nested **'files'** folder.
24 |
25 | > * content
26 | > * _index.md
27 | > * page
28 | > * index.md
29 | > * files
30 | > * attachment.pdf
31 |
32 | Be aware that if you use a multilingual website, you will need to have as many folders as languages.
33 |
34 | That's all !
35 |
36 | ### Parameters
37 |
38 | | Parameter | Default | Description |
39 | |:--|:--|:--|
40 | | title | "Attachments" | List's title |
41 | | style | "" | Choose between "orange", "grey", "blue" and "green" for nice style |
42 | | pattern | ".*" | A regular expressions, used to filter the attachments by file name.
The **pattern** parameter value must be [regular expressions](https://en.wikipedia.org/wiki/Regular_expression).
43 |
44 | For example:
45 |
46 | * To match a file suffix of 'jpg', use **.*jpg** (not *.jpg).
47 | * To match file names ending in 'jpg' or 'png', use **.*(jpg|png)**
48 |
49 | ### Examples
50 |
51 | #### List of attachments ending in pdf or mp4
52 |
53 |
54 | {{%/*attachments title="Related files" pattern=".*(pdf|mp4)"/*/%}}
55 |
56 | renders as
57 |
58 | {{%attachments title="Related files" pattern=".*(pdf|mp4)"/%}}
59 |
60 | #### Colored styled box
61 |
62 | {{%/*attachments style="orange" /*/%}}
63 |
64 | renders as
65 |
66 | {{% attachments style="orange" /%}}
67 |
68 |
69 | {{%/*attachments style="grey" /*/%}}
70 |
71 | renders as
72 |
73 | {{% attachments style="grey" /%}}
74 |
75 | {{%/*attachments style="blue" /*/%}}
76 |
77 | renders as
78 |
79 | {{% attachments style="blue" /%}}
80 |
81 | {{%/*attachments style="green" /*/%}}
82 |
83 | renders as
84 |
85 | {{% attachments style="green" /%}}
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/BachGavotteShort.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/BachGavotteShort.mp3
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/Carroll_AliceAuPaysDesMerveilles.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/Carroll_AliceAuPaysDesMerveilles.pdf
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/adivorciarsetoca00cape.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/adivorciarsetoca00cape.pdf
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/hugo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/hugo.png
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/movieselectricsheep-flock-244-32500-2.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rafik8/istio-workshop/f37b460e1cab8f3804c9180f30e529d6e71eb2a5/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/movieselectricsheep-flock-244-32500-2.mp4
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Attachments (Pièces jointes)
3 | description : "The Attachments shortcode displays a list of files attached to a page."
4 | ---
5 |
6 | Le shortcode *Attachments* affiche une liste de pièces jointes d'une page.
7 |
8 | {{% attachments /%}}
9 |
10 | ## Utilisation
11 |
12 | Le shortcode affiche la liste de fichiers trouvés dans un **dossier spécifique**
13 | A l'heure actuelle, il supporte deux implémentations
14 |
15 | 1. Si votre page est un fichier Markdown, les pièces jointes doivent être placée dans un **dossier** nommé comme le nom de la page et suffixé par **.files**.
16 |
17 | > * content
18 | > * _index.md
19 | > * page.files
20 | > * attachment.pdf
21 | > * page.md
22 |
23 | 2. Si votre page est un **dossier**, les pièces jointes doivent être placées dans un dossier fils **'files'**.
24 |
25 | > * content
26 | > * _index.md
27 | > * page
28 | > * index.md
29 | > * files
30 | > * attachment.pdf
31 |
32 | Attention, si votre site est multi-langue, vous devrez avec autant de dossier qu'il y a de langues.
33 |
34 | C'est tout !
35 |
36 | ### Paramètres
37 |
38 | | Paramètre | Défaut | Description |
39 | |:--|:--|:--|
40 | | title | "Pièces jointes" | Titre de la liste |
41 | | style | "" | Choisir entre "orange", "grey", "blue" et "green" pour un style plus sympa |
42 | | pattern | ".*" | Une expression régulière, utilisée pour filtrer les pièces jointes par leur nom de fichier.
Le paramètre **pattern** doit être une [expression régulière](https://en.wikipedia.org/wiki/Regular_expression).
43 |
44 | Par exemple:
45 |
46 | * Pour trouver les fichiers avec le suffixe 'jpg', utilisez **.*jpg** (pas *.jpg).
47 | * Pour trouver les fichiers avec les suffixe 'jpg' ou 'png', utilisez **.*(jpg|png)**
48 |
49 | ### Exemples
50 |
51 | #### Lister les pièces jointes de type pdf ou mp4
52 |
53 |
54 | {{%/*attachments title="Fichiers associés" pattern=".*(pdf|mp4)"/*/%}}
55 |
56 | s'affiche comme
57 |
58 | {{%attachments title="Fichiers associés" pattern=".*(pdf|mp4)"/%}}
59 |
60 | #### Modifier le style
61 |
62 | {{%/*attachments style="orange" /*/%}}
63 |
64 | s'affiche comme
65 |
66 | {{% attachments style="orange" /%}}
67 |
68 |
69 | {{%/*attachments style="grey" /*/%}}
70 |
71 | s'affiche comme
72 |
73 | {{% attachments style="grey" /%}}
74 |
75 | {{%/*attachments style="blue" /*/%}}
76 |
77 | s'affiche comme
78 |
79 | {{% attachments style="blue" /%}}
80 |
81 | {{%/*attachments style="green" /*/%}}
82 |
83 | s'affiche comme
84 |
85 | {{% attachments style="green" /%}}
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/button.en.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Button
3 | description : "Nice buttons on your page."
4 | ---
5 |
6 | A button is a just a clickable button with optional icon.
7 |
8 | ```
9 | {{%/* button href="https://getgrav.org/" */%}}Get Grav{{%/* /button */%}}
10 | {{%/* button href="https://getgrav.org/" icon="fas fa-download" */%}}Get Grav with icon{{%/* /button */%}}
11 | {{%/* button href="https://getgrav.org/" icon="fas fa-download" icon-position="right" */%}}Get Grav with icon right{{%/* /button */%}}
12 | ```
13 |
14 | {{% button href="https://getgrav.org/" %}}Get Grav{{% /button %}}
15 | {{% button href="https://getgrav.org/" icon="fas fa-download" %}}Get Grav with icon{{% /button %}}
16 | {{% button href="https://getgrav.org/" icon="fas fa-download" icon-position="right" %}}Get Grav with icon right{{% /button %}}
17 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/button.fr.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Button (Bouton)
3 | description : "De beaux boutons sur votre page."
4 | ---
5 |
6 | Le shortcode *button* est simplement un bouton cliquable avec une icône optionnelle.
7 |
8 | ```
9 | {{%/* button href="https://getgrav.org/" */%}}Téléchargez Grav{{%/* /button */%}}
10 | {{%/* button href="https://getgrav.org/" icon="fas fa-download" */%}}Téléchargez Grav avec icône{{%/* /button */%}}
11 | {{%/* button href="https://getgrav.org/" icon="fas fa-download" icon-position="right" */%}}Téléchargez Grav avec icône à droite{{%/* /button */%}}
12 | ```
13 |
14 | {{% button href="https://getgrav.org/" %}}Téléchargez Grav{{% /button %}}
15 | {{% button href="https://getgrav.org/" icon="fas fa-download" %}}Téléchargez Grav avec icône{{% /button %}}
16 | {{% button href="https://getgrav.org/" icon="fas fa-download" icon-position="right" %}}Téléchargez Grav avec icône à droite{{% /button %}}
17 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/_index.en.md:
--------------------------------------------------------------------------------
1 | ---
2 | title : Children
3 | description : List the child pages of a page
4 | ---
5 |
6 | Use the children shortcode to list the child pages of a page and the further descendants (children's children). By default, the shortcode displays links to the child pages.
7 |
8 | ## Usage
9 |
10 | | Parameter | Default | Description |
11 | |:--|:--|:--|
12 | | page | _current_ | Specify the page name (section name) to display children for |
13 | | style | "li" | Choose the style used to display descendants. It could be any HTML tag name |
14 | | showhidden | "false" | When true, child pages hidden from the menu will be displayed |
15 | | description | "false" | Allows you to include a short text under each page in the list. when no description exists for the page, children shortcode takes the first 70 words of your content. [read more info about summaries on gohugo.io](https://gohugo.io/content/summaries/) |
16 | | depth | 1 | Enter a number to specify the depth of descendants to display. For example, if the value is 2, the shortcode will display 2 levels of child pages. **Tips:** set 999 to get all descendants|
17 | | sort | none | Sort Children By
Weight - to sort on menu order
Name - to sort alphabetically on menu label
Identifier - to sort alphabetically on identifier set in frontmatter
URL - URL
|
18 |
19 | ## Demo
20 |
21 | {{%/* children */%}}
22 |
23 | {{% children %}}
24 |
25 | {{%/* children description="true" */%}}
26 |
27 | {{%children description="true" %}}
28 |
29 | {{%/* children depth="3" showhidden="true" */%}}
30 |
31 | {{% children depth="3" showhidden="true" %}}
32 |
33 | {{%/* children style="h2" depth="3" description="true" */%}}
34 |
35 | {{% children style="h2" depth="3" description="true" %}}
36 |
37 | {{%/* children style="div" depth="999" */%}}
38 |
39 | {{% children style="div" depth="999" %}}
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/_index.fr.md:
--------------------------------------------------------------------------------
1 | ---
2 | title : Children (Pages filles)
3 | description : Liste les pages filles de la page
4 | ---
5 |
6 | Utilisez le shortcode *children* pour lister les pages filles de la page et tous ses déscendants (pages filles de pages filles). Par défaut, le shortcode affiche des liens vers les pages filles.
7 |
8 | ## Utilisation
9 |
10 | | Paramètre | Défaut | Description |
11 | |:--|:--|:--|
12 | | page | _current_ | Spécifie le nom de la page (nom de la section) à afficher |
13 | | style | "li" | Choisi le style à utiliser pour afficher les descendants. Cela peut être n'importe quel balise HTML |
14 | | showhidden | "false" | Quand *true*, pages filles cachées dans le menu seront affichées quand même |
15 | | description | "false" | Permet d'inclure le texte de la description de la page sous chaque entré de la liste. quand aucune description existe pour la page, le shortcode prend les 70 premiers mots du contenu. [plus d'infos sur gohugo.io](https://gohugo.io/content/summaries/) |
16 | | depth | 1 | Nombre de descendants à afficher. Par exemple, si la valeur est 2, le shortcode va afficher 2 niveaux de pages filels. **Astuce:** Utilisez 999 pour avoir tous les descendants|
17 | | sort | | Tri les pages filles par
Weight - Poids
Name - Nom
Identifier - Trier alphabétiquement par identifiant configuré dans le front matter
URL - URL
|
18 |
19 | ## Démo
20 |
21 | {{%/* children */%}}
22 |
23 | {{% children %}}
24 |
25 | {{%/* children description="true" */%}}
26 |
27 | {{%children description="true" %}}
28 |
29 | {{%/* children depth="3" showhidden="true" */%}}
30 |
31 | {{% children depth="3" showhidden="true" %}}
32 |
33 | {{%/* children style="h2" depth="3" description="true" */%}}
34 |
35 | {{% children style="h2" depth="3" description="true" %}}
36 |
37 | {{%/* children style="div" depth="999" */%}}
38 |
39 | {{% children style="div" depth="999" %}}
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/_index.en.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page 1"
3 | description = "This is a demo child page"
4 | +++
5 |
6 | This is a demo child page
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/_index.fr.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page 1"
3 | description = "Ceci est une page test"
4 | +++
5 |
6 | Ceci est une page de demo
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.en.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page 1-1"
3 | description = "This is a demo child page"
4 | +++
5 |
6 | This is a demo child page
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.fr.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page 1-1"
3 | description = "Ceci est une page test"
4 | +++
5 |
6 | Ceci est une page de demo
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/_index.en.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page 1-1-1"
3 | description = "This is a demo child page"
4 | +++
5 |
6 | This is a demo child page
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/_index.fr.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page 1-1-1"
3 | description = "Ceci est une page test"
4 | +++
5 |
6 | Ceci est une page de demo
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/_index.en.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page 1-1-1-1"
3 | description = "This is a demo child page"
4 | +++
5 |
6 | This is a demo child page
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/_index.fr.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page 1-1-1-1"
3 | description = "Ceci est une page test"
4 | +++
5 |
6 | Ceci est une page de demo
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/children-1-1-1-1-1/_index.en.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page 1-1-1-1-1"
3 | description = "This is a demo child page"
4 | +++
5 |
6 | This is a demo child page
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/children-1-1-1-1-1/_index.fr.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page 1-1-1-1-1"
3 | description = "Ceci est une page test"
4 | +++
5 |
6 | Ceci est une page de demo
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/_index.en.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page 2"
3 | description = ""
4 | +++
5 |
6 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
7 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
8 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
9 | consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
10 | cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
11 | proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/_index.fr.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page 2"
3 | description = ""
4 | +++
5 |
6 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
7 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
8 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
9 | consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
10 | cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
11 | proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/test3.en.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page test 3"
3 | description = "This is a page test"
4 | +++
5 |
6 | This is a test 3 demo child page
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/test3.fr.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page test 3"
3 | description = "Ceci est une page test"
4 | +++
5 |
6 | Ceci est une page de demo test 3
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-3/_index.en.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page 3"
3 | description = "This is a demo child page"
4 | +++
5 |
6 | This is a demo child page, not displayed in the menu
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-3/_index.fr.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page 3"
3 | description = "Ceci est une page test"
4 | +++
5 |
6 | Ceci est une page de demo
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-4/_index.en.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page 4"
3 | description = "This is a demo child page"
4 | hidden = true
5 | +++
6 |
7 | This is a demo child page, not displayed in the menu
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-4/_index.fr.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page 4"
3 | description = "Ceci est une page test"
4 | hidden = true
5 | +++
6 |
7 | Ceci est une page de demo
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/test.en.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page test"
3 | description = "This is a page test"
4 | +++
5 |
6 | This is a test demo child page
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/test.fr.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "page test"
3 | description = "Ceci est une page test"
4 | +++
5 |
6 | Ceci est une page de demo
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/expand.en.md:
--------------------------------------------------------------------------------
1 | ---
2 | title : Expand
3 | description : "Displays an expandable/collapsible section of text on your page"
4 | ---
5 |
6 | The Expand shortcode displays an expandable/collapsible section of text on your page.
7 | Here is an example
8 |
9 | {{%expand%}}
10 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
11 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
12 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
13 | consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
14 | cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
15 | proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
16 | {{%/expand%}}
17 |
18 |
19 | ## Usage
20 |
21 |
22 | this shortcode takes exactly one optional parameter to define the text that appears next to the expand/collapse icon. (default is "Expand me...")
23 |
24 | {{%/*expand "Is this learn theme rocks ?" */%}}Yes !.{{%/* /expand*/%}}
25 |
26 | {{%expand "Is this learn theme rocks ?" %}}Yes !{{% /expand%}}
27 |
28 | # Demo
29 |
30 | {{%/*expand*/%}}
31 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
32 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
33 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
34 | consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
35 | cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
36 | proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
37 | {{%/* /expand*/%}}
38 |
39 |
40 | {{%expand%}}Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
41 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
42 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
43 | consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
44 | cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
45 | proident, sunt in culpa qui officia deserunt mollit anim id est laborum.{{% /expand%}}
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/expand.fr.md:
--------------------------------------------------------------------------------
1 | ---
2 | title : Expand
3 | description : "Affiche une section de texte qui se plie et se déplie"
4 | ---
5 |
6 | Le shortcode *Expand* affiche une section de texte qui se plie et se déplie.
7 | Ci-dessous un exemple.
8 |
9 | {{%expand%}}
10 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
11 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
12 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
13 | consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
14 | cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
15 | proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
16 | {{%/expand%}}
17 |
18 |
19 | ## Utilisation
20 |
21 |
22 | Ce shortcode prends exactement un paramètre optionel pour définir le texte à côté de l'icone. (valeur par défaut est "Déroulez-moi...")
23 |
24 | {{%/*expand "Est-ce que ce thème envoie du pâté ?" */%}}Oui !.{{%/* /expand*/%}}
25 |
26 | {{%expand "Est-ce que ce thème envoie du pâté ?" %}}Oui !{{% /expand%}}
27 |
28 | # Demo
29 |
30 | {{%/*expand*/%}}
31 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
32 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
33 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
34 | consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
35 | cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
36 | proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
37 | {{%/* /expand*/%}}
38 |
39 |
40 | {{%expand%}}Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
41 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
42 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
43 | consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
44 | cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
45 | proident, sunt in culpa qui officia deserunt mollit anim id est laborum.{{% /expand%}}
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/notice.en.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Notice
3 | description : "Disclaimers to help you structure your page"
4 | ---
5 |
6 | The notice shortcode shows 4 types of disclaimers to help you structure your page.
7 |
8 | ### Note
9 |
10 | ```
11 | {{%/* notice note */%}}
12 | A notice disclaimer
13 | {{%/* /notice */%}}
14 | ```
15 |
16 | renders as
17 |
18 | {{% notice note %}}
19 | A notice disclaimer
20 | {{% /notice %}}
21 |
22 | ### Info
23 |
24 | ```
25 | {{%/* notice info */%}}
26 | An information disclaimer
27 | {{%/* /notice */%}}
28 | ```
29 |
30 | renders as
31 |
32 | {{% notice info %}}
33 | An information disclaimer
34 | {{% /notice %}}
35 |
36 | ### Tip
37 |
38 | ```
39 | {{%/* notice tip */%}}
40 | A tip disclaimer
41 | {{%/* /notice */%}}
42 | ```
43 |
44 | renders as
45 |
46 | {{% notice tip %}}
47 | A tip disclaimer
48 | {{% /notice %}}
49 |
50 | ### Warning
51 |
52 | ```
53 | {{%/* notice warning */%}}
54 | An warning disclaimer
55 | {{%/* /notice */%}}
56 | ```
57 |
58 | renders as
59 |
60 | {{% notice warning %}}
61 | A warning disclaimer
62 | {{% /notice %}}
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/notice.fr.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Notice
3 | description : "Message pour vous aider à structurer votre contenu"
4 | ---
5 |
6 | Le shortcode *Notice* permet d'afficher 4 types de message pour vous aider à structurer votre contenu.
7 |
8 | ### Note
9 |
10 | ```
11 | {{%/* notice note */%}}
12 | Une notice de type *note*
13 | {{%/* /notice */%}}
14 | ```
15 |
16 | s'affiche comme
17 |
18 | {{% notice note %}}
19 | Une notice de type *note*
20 | {{% /notice %}}
21 |
22 | ### Info
23 |
24 | ```
25 | {{%/* notice info */%}}
26 | Une notice de type *info*
27 | {{%/* /notice */%}}
28 | ```
29 |
30 | s'affiche comme
31 |
32 | {{% notice info %}}
33 | Une notice de type *info*
34 | {{% /notice %}}
35 |
36 | ### Tip
37 |
38 | ```
39 | {{%/* notice tip */%}}
40 | Une notice de type *tip*
41 | {{%/* /notice */%}}
42 | ```
43 |
44 | s'affiche comme
45 |
46 | {{% notice tip %}}
47 | Une notice de type *tip*
48 | {{% /notice %}}
49 |
50 | ### Warning
51 |
52 | ```
53 | {{%/* notice warning */%}}
54 | Une notice de type *warning*
55 | {{%/* /notice */%}}
56 | ```
57 |
58 | s'affiche comme
59 |
60 | {{% notice warning %}}
61 | Une notice de type *warning*
62 | {{% /notice %}}
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/siteparam.en.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Site param
3 | description : "Get value of site params variables in your page."
4 | ---
5 |
6 | `siteparam` shortcode is used to help you print values of site params.
7 |
8 | For instance, in this current site, the `editURL` variable is used in `config.toml`
9 |
10 | ```toml
11 | [params]
12 | editURL = "https://github.com/matcornic/hugo-theme-learn/edit/master/exampleSite/content/"
13 | ```
14 |
15 | Use the `siteparam` shortcode to display its value.
16 |
17 | ```
18 | `editURL` Value : {{%/* siteparam "editURL" */%}}
19 | ```
20 |
21 | is displayed as
22 |
23 | `editURL` Value : {{% siteparam "editURL" %}}
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/shortcodes/siteparam.fr.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Site param
3 | description : "Afficher la valeur d'un paramètre global du site dans votre page"
4 | ---
5 |
6 | Les shortcode `siteparam` est utilisé pour vous aider à afficher des valeurs provenant des paramètres globaux du site.
7 |
8 | Par exemple, dans ce site, le paramètre `editURL` est utilisé dans le fichier `config.toml`
9 |
10 | ```toml
11 | [params]
12 | editURL = "https://github.com/matcornic/hugo-theme-learn/edit/master/exampleSite/content/"
13 | ```
14 |
15 | Utilisez le shortcode `siteparam` pour affichier sa valeur.
16 |
17 | ```
18 | Valeur de `editURL` : {{%/* siteparam "editURL" */%}}
19 | ```
20 |
21 | s'affiche comme
22 |
23 | Valeur de `editURL` : {{% siteparam "editURL" %}}
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/showcase.en.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Showcase
3 | disableToc: true
4 | ---
5 |
6 | #### [TAT](https://ovh.github.io/tat/overview/) by OVH
7 | 
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/content/showcase.fr.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Vitrine
3 | disableToc: true
4 | slug: vitrine
5 | ---
6 |
7 | #### [TAT](https://ovh.github.io/tat/overview/) par OVH
8 | 
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/layouts/partials/custom-footer.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/themes/hugo-theme-learn/exampleSite/layouts/partials/menu-footer.html:
--------------------------------------------------------------------------------
1 |