Remove _docs folder

This commit is contained in:
Carlos Rodriguez Hernandez
2020-05-28 07:16:31 +00:00
parent 609cd24afb
commit c6ab1de22e
9 changed files with 0 additions and 1361 deletions
-131
View File
@@ -1,131 +0,0 @@
# _Application_
- _Short introduction to the application deployed by the chart with link to the project homepage_
> **Sample**
>
> [MediaWiki](https://www.mediawiki.org) is an extremely powerful, scalable software and a feature-rich wiki implementation that uses PHP to process and display data stored in a database, such as MySQL.
## TL;DR;
- _List the `helm install` command required to deployed the chart_
> **Sample**
>
> ```bash
> $ helm install my-release stable/mediawiki
> ```
## Introduction
- _A brief introduction to the chart and the chart(s) it depends upon._
> **Sample**
>
> This chart bootstraps a MediaWiki deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. The chart depends upon the [MariaDB chart](https://github.com/helm/charts/tree/master/stable/mariadb) for the database requirements of MediaWiki.
>
> The chart uses the [Bitnami MediaWiki Docker Image](https://hub.docker.com/r/bitnami/mediawiki) for setting up the MediaWiki deployment and is developed, contributed and maintained by [Bitnami](https://bitnami.com).
## Prerequisites
_List the cluster requirements for a successful deployment of the chart_
> **Sample**
>
> - Kubernetes 1.4+ with Beta APIs enabled
> - PV provisioner support in the underlying infrastructure
## Installing
- _Provide chart deployment instructions. This may include steps to pull chart dependencies and so on._
- _Use a release name in the `helm install` commands and refer to it in the upgrading and uninstalling sections._
- _Link to the configuration section for customizing a chart deployment._
> **Sample**
>
> Install the chart using:
>
> ```bash
> $ helm install my-release stable/mediawiki
> ```
>
> The command deploys MediaWiki on the Kubernetes cluster in the default configuration and with the release name `my-release`. The deployment configuration can be customized by specifying the customization parameters with the `helm install` command using the `--values` or `--set` arguments. Find more information in the [configuration section](#configuration) of this document.
## Upgrading
- _Provide instructions to upgrade a chart deployment using the `helm upgrade` commands_
> **Sample**
>
> Upgrade the chart deployment using:
>
> ```bash
> $ helm upgrade my-release stable/mediawiki
> ```
>
> The command upgrades the existing `my-release` deployment with the most latest release of the chart.
>
> **TIP**: Use `helm repo update` to update information on available charts in the chart repositories.
## Uninstalling
- _Provide instructions to uninstall a chart deployment from the cluster_
> **Sample**
>
> Uninstall the `my-release` deployment using:
>
> ```bash
> $ helm delete my-release
> ```
>
> The command deletes the release named `my-release` and frees all the kubernetes resources associated with the release.
>
> **TIP**: _Specify the `--purge`_ argument to the above command to remove the release from the store and make its name free for later use.
## Configuration
- _Insert a table listing all the configurations that can be customized via the `values.yaml` file._
- _**TIP**: The `Table Editor` plugin for SublimeText is useful for creating and updating this table_
- _Provide information on how to specify these parameters, ie. using a `myvals.yml` file or using the `--set` option and possibly an example_
> **Sample**
>
> The following table lists all the configurable parameters expose by the MediaWiki chart and their default values.
>
> | Name | Decription | Default |
> |-------------------------------|------------------------------|------------------------------------------|
> | `mediawikiUser` | Admin user name | `user` |
> | `mediawikiPassword` | Admin user password | _randomly generated alphanumeric string_ |
> | `mediawikiEmail` | Admin user email | `user@example.com` |
> | `mariadb.mariadbRootPassword` | MariaDB admin password | _no password_ |
> | `persistence.enabled` | Enable persistence using PVC | `true` |
>
> Specify the parameters you which to customize using the `--set` argument to the `helm install` command. For instance,
>
> ```bash
> $ helm install my-release \
> --set mediawikiUser=admin,mediawikiPassword=password stable/mediawiki
> ```
>
> The above command sets the MediaWiki administrator account username and password to `admin` and `password` respectively.
>
> Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
>
> ```bash
> $ helm install my-release \
> --values values.yaml stable/mediawiki
> ```
>
> **Tip**: You can use the default [values.yaml](values.yaml).
## Persistence
- _Describe how the chart handles persistence and the options to enable/disable persistence_
> **Sample**
>
> The [Bitnami MediaWiki Docker Image](https://hub.docker.com/r/bitnami/mediawiki) saves persistent data in the `/bitnami/mediawiki` and `/bitnami/apache` paths of the container. The chart makes use of [Persistent Volumes Claims](http://kubernetes.io/docs/user-guide/persistent-volumes/#persistentvolumeclaims) to set up data persistence across chart upgrades and is known to work in GKE, AWS and Minikube Kubernetes cluster setups.
>
> See the [configuration section](#configuration) to configure the PVC or to disable persistence.
-167
View File
@@ -1,167 +0,0 @@
# Guidelines for writing Helm Classic Charts
A Chart is a unit of Kubernetes manifests describing one or more kubernetes objects (i.e. RC, Pod, Service, etc) that provides a recipe for installing and running a containerized application inside of Kubernetes.
This document describes guidelines for writing Helm Classic Charts and builds on the guidelines laid out by the [Authoring Kubernetes Manifests Guide](authoring-kubernetes-manifests.md).
## Chart Directory
A typical Chart directory consists of the following files:
```
foo
├── Chart.yaml
├── manifests
│   └── foo-svc.yaml
├── README.md
└── tpl
├── foo-rc.yaml
├── foo-secrets.yaml
└── values.toml
```
- The chart name is the top-level directory name.
- `manifests/` directory contains the kubernetes manifests.
- `tpl/` directory contains helmc generator templates and `values.toml`.
- Manifests are prefixed with the chart name.
- Replication controller manifests bear the `-rc` suffix.
- Service manifests bear the `-svc` suffix.
- Secrets manifests bear `-secret` suffix.
- Manifests should be written in `YAML` with 2 space indentation.
*Manifests can also be written in the JSON format. The `YAML` format is preferred for readability.*
## Chart.yaml
The [Chart.yaml](https://github.com/helm/helm-classic/blob/master/docs/awesome.md#the-chartyaml-file) format is defined by the [Helm Classic](https://github.com/helm/helm-classic) project and looks like this:
```yaml
name: <chart-name>
home: <project-homepage>
source:
- <links to images used in chart>
version: <version>
description: <short-description>
maintainers:
- Author <author@example.com>
dependencies:
- name: <chart-name>
repo: <git-clone-url>
version: <version>
details: |-
<one-paragraph-description>
```
- `name`: chart name, same as the top-level chart directory
- `home`: URL to the project homepage (eg. http://redmine.org)
- `source`: List of URL's to resource used in the chart, eg. https://github.com/bitnami/bitnami-docker-redmine
- `version`: version of the chart
- `description`: A short one line chart description
- `maintainers`: List of maintainers with their email
- `dependencies`: List of charts this chart depends on
+ `name`: Name of the chart
+ `repo`: Git URL to chart repo
+ `version`: Semver version filter
- `details`: One paragraph description of the chart
Refer to the [dependency resolution](https://github.com/helm/helm-classic/blob/master/docs/awesome.md#dependency-resolution) section of the Helm Classic docs to learn about how Helm Classic handles dependencies.
## Manifest Files
The [Authoring Kubernetes Manifests Guide](authoring-kubernetes-manifests.md) provides guidelines to write Kubernetes manifests files. The topics covered include Replication Controllers, Services, Secrets, Labels, Health Checks, Environment variables and so on. The same guidelines apply while authoring Charts.
In this section we only look at Labels and Generators.
### Labels
A cluster can be used to deploy multiple applications and services. To be able to correctly filter components in services and replication controllers we should define labels.
This section defines a set mandatory labels that should be used.
#### heritage
All manifests must specify the `heritage: bitnami` label in the metadata section. This enables querying a cluster to list all components deployed using manifests made available by Bitnami with:
```bash
kubectl get pods,rc,services -l heritage=bitnami
```
#### provider
The provider label indicates that the manifests provide a specific backend service, eg. `mysql`, `mariadb`, `postgresql`, `redis`, etc.
If the manifest configures an application server the provider should be suffixed with `-server`, eg. `redmine-server` in case of a Redmine application server or `wordpress-server` in the case of a `apache + php + wordpress`.
#### app (for applications)
When the manifests deploy more than one replication controller, the `app` label should be defined that groups all the components under one label.
For example, if in a GitLab deployment `gitlab-workhorse` and `sidekiq` are defined in different replication controllers then the manifests should have the `app: gitlab` label that groups these components.
Standalone backend services, eg. MariaDB, will not have a app label. If the MariaDB service is part of an applications manifests (not recommended), then it would have a `app` label.
#### version (when applicable)
To make rolling updates possible the `version` label should be defined and set to the version of the docker image in use. Note that we should ensure that versioned images are in use for making rolling updates possible.
**IMPORTANT:** Service manifests should not apply the `version` label filters on the `selector` field.
#### other
Custom labels can be be defined to provide fine-grained filtering of pods in services and replication controllers. For example, a MariaDB pod can have a `mode:` label to indicate if its a `master` or `slave` allowing the Services to correctly filter Pods.
### Generators
Helm Classic includes a templating solution to based on Go templates and supports most of the [Sprig](https://github.com/Masterminds/sprig) functions.
Running `helmc generate <chart-name>` compiles manifest files from the templates. The `tpl/` directory should be used for the templates and a `values.toml` file for customizing env variables and secrets.
`tpl/values.toml` provides a clean way for users configure environment variables, secrets, etc. The `values.toml` should define place holders for the configurable parameters with default values, which can be `nil`.
The following is an example of a `values.toml` file.
```toml
postgresUser = "postgres"
postgresPassword = ""
postgresDb = ""
```
Templates are manifests files with sprig functions that are evaluated during the compilation. The first line of a template should specify the command that should be executed to compile the template.
```
#helm:generate helmc tpl -d tpl/values.toml -o manifests/foo-rc.yaml $HELM_GENERATE_FILE
```
This instructs `helmc generate` to execute the listed command where the compiled output will be generated in the `manifests/` directory. `-d` specifies the file containing values to substitute into the template.
The following snippet demostrates the substitution of a value specified in `tpl/values.toml`.
```yaml
env:
- name: POSTGRES_USER
value: {{ .postgresUser | quote }}
```
When compiled, `.postgresUser` will be replaced with the value of `postgresUser` specified in `values.toml`.
All environment variables should be quoted as the kubernetes linter will error out if the value begins with a number or is a truth value. The sprig `quote` function ensures that the final evaluated output is quoted with double quotes.
Learn more about [Helm Classic Generate and Templates](https://github.com/helm/helm-classic/blob/master/docs/generate-and-template.md)
## Readme
The readme file should provide brief instructions on how to deploy the chart and its dependencies. It should avoid listing detailed setup and configuration instructions.
## Examples
Examples manifests following these guidelines can be found in the Official [Bitnami Helm Classic Charts Repo](https://github.com/bitnami/charts)
## References
- [Helm Classic](https://github.com/helm/helm-classic)
- [Helm Classic Charts](https://github.com/helm/charts)
- [Authoring Helm Classic Charts](https://github.com/helm/helm-classic/blob/master/docs/authoring_charts.md)
- [The Helm Classic Guide to Writing Awesome Charts](https://github.com/helm/helm-classic/blob/master/docs/awesome.md)
- [Helm Classic Generate and Template](https://github.com/helm/helm-classic/blob/master/docs/generate-and-template.md)
- [Authoring Kubernetes Manifests Guide](authoring-kubernetes-manifests.md)
-418
View File
@@ -1,418 +0,0 @@
# Guidelines for writing Kubernetes Templates
## Components
Provide the following minimal set of files.
- `foo-rc.yaml`
- `foo-svc.yaml`
- `README.md`
## Readme
The readme is intended to help users get started with using the bitnami images on their kubernetes clusters. It's function is to:
- Provide brief usage example
- Overview of the architecture (diagrams, screenshots, etc.)
- List Dependencies
- List exposed volumes
- Explain logging features
- List environment variables, secrets, labels, etc.
- Provide URLs to external sources that are helpful
- Licensing information (should be permissive)
## Manifest Files
The manifests should deploy one component. For example, to deploy Redmine the manifests would only deploy the Redmine application components. Dependent components such as MariaDB should be separated into their own repo for better reusability and maintenance.
All manifests should be written in YAML format
- Use `.yaml` extension
- Use 2 spaces for indentation
A good set of manifests typically include:
- A replication controller (`foo-rc.yaml`)
- A service definition (`foo-svc.yaml`)
- A secrets file (`foo-secrets.yaml`)
### Images
- Use versioned images, avoid using the `latest` tag
- If the `latest` tag is used, define `imagePullPolicy: Always`
### Labels
A cluster can be used to deploy multiple applications and services. To be able to correctly filter components in services and replication controllers we should define labels to achieve this.
This section defines a set of labels that should be used.
#### heritage (mandatory)
All manifests must specify the `heritage: bitnami` label in the metadata section. This enables querying a cluster to list all components deployed using manifests made available by Bitnami with:
```bash
kubectl get pods,rc,services -l heritage=bitnami
```
#### provider (mandatory)
The provider label indicates that the manifests provide a specific backend service, eg. `mysql`, `mariadb`, `postgresql`, `redis`, etc.
If the manifest configures an application server the provider should be suffixed with `-server`, eg. `redmine-server` in case of a Redmine application server or `wordpress-server` in the case of a `apache + php + wordpress`.
#### app (for applications)
When the manifests deploy more than one replication controller, the `app` label should be defined that groups all the components under one label.
For example, if in a GitLab deployment `gitlab-workhorse` and `sidekiq` are defined in different replication controllers then the manifests should have the `app: gitlab` label that groups these components.
Standalone backend services, eg. MariaDB, will not have a app label. If the MariaDB service is part of an applications manifests (not recommended), then it would have a `app` label.
#### version (when applicable)
To make rolling updates possible the `version` label should be defined and set to the version of the docker image in use. Note that additionally we should ensure that versioned images are also in use for making rolling updates possible.
**IMPORTANT:** Service manifests should not apply the `version` label filters on the `selector` field.
#### other
Custom labels can be be defined to provide fine-grained filtering of pods in services and replication controllers. For example, a MariaDB pod can have a `mode:` label to indicate if its a `master` or `slave` allowing the Services to correctly filter Pods.
### Ports
Always define named ports in the replication controller templates. Whenever possible name the ports with the IANA defined service name (eg. http://www.speedguide.net/port.php?port=80).
Avoid using `hostPort` in the manifests unless absolutely necessary. When you bind a Pod to a `hostPort`, there are a limited number of places that pod can be scheduled, due to port conflicts — you can only schedule as many such Pods as there are nodes in your Kubernetes cluster.
## Replication Controller
Pods aren't intended to be treated as durable. They won't survive scheduling failures, node failures, etc. A Replication Controller (RC) provides better lifecycle management. We recommend using a replication controller even if a single instance of the Pod will be deployed at any given time.
A replication controller ensures that a specified number of pods "replicas" are running at any one time. It replaces pods that are deleted or terminated for any reason.
The following in an sample of a simple `ReplicationController.yaml` manifest:
```yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: mariadb
labels:
provider: mariadb
version: 5.5.46-0-r01
heritage: bitnami
spec:
replicas: 1
selector:
provider: mariadb
version: 5.5.46-0-r01
heritage: bitnami
template:
metadata:
labels:
provider: mariadb
version: 5.5.46-0-r01
heritage: bitnami
spec:
containers:
- name: mariadb
image: bitnami/mariadb:5.5.46-0-r01
env:
- name: MARIADB_PASSWORD
value: my_password
ports:
- name: mysql
containerPort: 3306
```
Here weve set the `selector` field to filter based on the `provider`, `version` and `heritage` labels. This ensures that only Pods bearing these labels are under the purview of the replication controller.
If the manifest defines additional labels you may want to add them to the `selector` so that the replication controller correctly picks up the correct Pods at any give time.
### Environment Variables
The manifest file should include placeholders for configurable parameters exposed by images as environment variables. Defining environment variables for parameters that expose sensitive information should be avoided and instead be defined in a Secret manifest.
The README should appropriately document or link to the image documentation for information on the environment variables.
### Health Checks
For better lifecycle management the replication controller manifests should define liveness and readiness probes using the `livenessProbe` and `readinessProbe` fields respectively.
Three primitives are available for setting up these probes:
- HTTP check (`httpGet`)
A webhook is used to determine the healthiness of the container. The check is deemed successful if the hook returns with `200` or `399` status code.
- Container Execution Check (`exec`)
A command is executed inside the container. Exiting the check with status `0` is considered a success.
- TCP Socket Check (`tcpSocket`)
A connection to a TCP socket is attempted. The container is considered healthy if the connection can be established.
#### Liveness Probe
A liveness probe checks if the container is running and responding normally. If the liveness probe fails, the container is terminated and subject to the restart policy it will be restarted. In replication controllers the default restart policy is to always restart a terminated container.
The following example adds a `livenessProbe` to our sample RC manifest.
```yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: mariadb
labels:
provider: mariadb
version: 5.5.46-0-r01
heritage: bitnami
spec:
replicas: 1
selector:
provider: mariadb
version: 5.5.46-0-r01
heritage: bitnami
template:
metadata:
labels:
provider: mariadb
version: 5.5.46-0-r01
heritage: bitnami
spec:
containers:
- name: mariadb
image: bitnami/mariadb:5.5.46-0-r01
env:
- name: MARIADB_PASSWORD
value: my_password
ports:
- name: mysql
containerPort: 3306
livenessProbe:
exec:
command:
- mysqladmin
- ping
initialDelaySeconds: 30
timeoutSeconds: 5
```
Here an `exec` probe is setup to check the status of the MariaDB server at 5 second intervals using the `mysqladmin ping` command. The Pod will be restarted if the command returns an error for any reason.
To allow the container to boot up before the liveness probe kicks in the `initialDelaySeconds` should be configured. It's value should be high enough to allow the container to start or the container will be prematurely terminated by the probe.
#### Readiness Probe
When a Pod is started, regardless of its initialization state, it is configured to receive traffic. Ideally the Pod should receive traffic only when it's ready to avoid downtime, especially in horizontally scalable deployments.
A readiness probe checks if a container is ready to service requests and is used to signal to the endpoints controller that even though a container is running it should not receive any traffic from a proxy. Additionally it helps containers to recover from temporary service disruptions.
The setup of a readiness probe is similar to a liveness probe. Building on our sample replication controller manifest the following snippet adds a `readinessProbe`.
```yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: mariadb
labels:
provider: mariadb
version: 5.5.46-0-r01
heritage: bitnami
spec:
replicas: 1
selector:
provider: mariadb
version: 5.5.46-0-r01
heritage: bitnami
template:
metadata:
labels:
provider: mariadb
version: 5.5.46-0-r01
heritage: bitnami
spec:
containers:
- name: mariadb
image: bitnami/mariadb:5.5.46-0-r01
env:
- name: MARIADB_PASSWORD
value: my_password
ports:
- name: mysql
containerPort: 3306
livenessProbe:
exec:
command:
- mysqladmin
- ping
initialDelaySeconds: 30
timeoutSeconds: 5
readinessProbe:
exec:
command:
- mysqladmin
- ping
initialDelaySeconds: 5
timeoutSeconds: 1
```
Because we want the Pod to start receiving traffic as soon as it's ready a lower `initialDelaySeconds` value is specified.
A lower `timeoutSeconds` ensures that the Pod does not receive any traffic as soon as it becomes unresponsive. If the failure was temporary, the Pod would resume normal functioning after it has recovered.
### Lifecycle hooks
To terminate a container Kubernetes sends the `TERM` signal to `PID 1` of the container and if container is not terminated within a 10 second grace period a `KILL` signal is sent to forcefully terminate the container. In most cases this default behaviour is sufficient for the graceful termination of the daemons and processes running inside the container.
However, in some containerized applications may expect a custom termination sequence for its clean and graceful termination. For such cases a `preStop` hook can be setup to define a command that should be executed before the default container termination behaviour is executed.
For example, the NGINX daemon expects the `QUIT` signal to initiate a clean shutdown of the daemon. This can be achieved by setting up a `preStop` hook to initiate the shutdown with the command `nginx -s quit`.
The following snippet demonstrates the use of a `preStop` lifecycle hook.
```yaml
apiVersion: v1
kind: ReplicationController
...
spec:
containers:
- name: nginx
image: bitnami/nginx:1.9.9-0
...
lifecycle:
preStop:
exec:
command: ["nginx", "-s", "quit"]
```
Similarly a `postStart` hook can be specified to execute a command after a container has been started.
### Volumes
Volumes are required to persist a containers data and should be specified as `emptyDir` volumes in the replication controllers manifest. Continuing with our sample, the following snippet defines a volume named `data` for persistence of the MariaDB data.
```yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: mariadb
labels:
provider: mariadb
version: 5.5.46-0-r01
heritage: bitnami
spec:
replicas: 1
selector:
provider: mariadb
version: 5.5.46-0-r01
heritage: bitnami
template:
metadata:
labels:
provider: mariadb
version: 5.5.46-0-r01
heritage: bitnami
spec:
containers:
- name: mariadb
image: bitnami/mariadb:5.5.46-0-r01
env:
- name: MARIADB_PASSWORD
value: my_password
ports:
- name: mysql
containerPort: 3306
volumeMounts:
- name: data
mountPath: /bitnami/mariadb
livenessProbe:
exec:
command:
- mysqladmin
- ping
initialDelaySeconds: 30
timeoutSeconds: 5
readinessProbe:
exec:
command:
- mysqladmin
- ping
initialDelaySeconds: 5
timeoutSeconds: 1
volumes:
- name: data
emptyDir: {}
```
## Services
A Service is an abstraction which defines a logical set of Pods and a policy by which to access them - sometimes called a micro-service. The set of Pods targeted by a Service is determined by label selectors. The following is a sample of a simple `Service.yaml` manifest.
```yaml
apiVersion: v1
kind: Service
metadata:
name: mariadb
labels:
provider: mariadb
heritage: bitnami
spec:
ports:
- name: mysql
port: 3306
targetPort: mysql
selector:
provider: mariadb
heritage: bitnami
```
Weve specified the label selectors `provider` and `heritage`. This will ensure that only the desired Pods will receive traffic from this Service. Notice that the `version` label is not used in the label selectors as its inclusion will not allow for rolling updates. If your Pods use additional labels, such as `mode`, you may want to add them to the selector field of the Service manifest.
Lastly, named ports are used to specify the `targetPort` field. This enables us to change the port numbers in the replication controller manifests without the need to change the Service manifests.
#### Load Balancer
A backend Service is generally accessed by containers within the cluster and as such the Service is not required to be exposed outside the cluster.
A frontend Service on the other hand, would typically be accessed externally over the internet. Such Services should be configured as `type: LoadBalancer`.
### Secrets
Objects of type secret are intended to hold sensitive information, such as passwords, OAuth tokens, and ssh keys. Putting this information in a secret is safer and more flexible than putting it verbatim in a pod definition or in a docker image.
A simple `Secrets.yml` file would look like:
```yaml
apiVersion: v1
kind: Secret
metadata:
name: mariadb
labels:
provider: mariadb
heritage: bitnami
type: Opaque
data:
mariadb-password: dmFsdWUtMg0K
```
## Examples
Examples manifests following these guidelines can be found in the Official [Bitnami Helm Charts Repo](https://github.com/bitnami/charts)
## References
- [Kubernetes User Guide](http://kubernetes.io/v1.0/docs/user-guide/)
- [Replication Controller](http://kubernetes.io/v1.0/docs/user-guide/replication-controller.html)
- [Service](http://kubernetes.io/v1.0/docs/user-guide/services.html)
- [Labels](http://kubernetes.io/v1.0/docs/user-guide/labels.html)
- [Volumes](http://kubernetes.io/v1.0/docs/user-guide/volumes.html)
- [Health Checks](http://kubernetes.io/v1.0/docs/user-guide/production-pods.html#liveness-and-readiness-probes-aka-health-checks)
- [Lifecycle hooks](http://kubernetes.io/v1.0/docs/user-guide/production-pods.html#lifecycle-hooks-and-termination-notice)
- [Secrets](http://kubernetes.io/v1.0/docs/user-guide/secrets.html)
- [Lifetime of a Pod](http://kubernetes.io/v1.0/docs/user-guide/pod-states.html)
- [Helm Docs](https://github.com/helm/helm/tree/master/docs)
- [Helm Authoring Guide](https://github.com/helm/helm/blob/master/docs/authoring_charts.md)
- [Kubernetes Configuration Best Practices](http://kubernetes.io/docs/user-guide/config-best-practices/)
-362
View File
@@ -1,362 +0,0 @@
# Deploying Redmine on GKE using Bitnami Helm Classic Charts
- [TL;DR;](#tldr)
- [Introduction](#introduction)
- [Before you begin](#before-you-begin)
- [Kubernetes environment](#kubernetes-environment)
- [Helm Classic](#helm-classic)
- [Bitnami Charts](#bitnami-charts)
- [Create the cluster](#create-the-cluster)
- [Deploy MariaDB](#deploy-mariadb)
- [Deploy Redmine](#deploy-redmine)
- [Accessing the Redmine application](#accessing-the-redmine-application)
- [Uninstalling Redmine](#uninstalling-redmine)
- [Configuration](#configuration)
- [MariaDB persistence](#mariadb-persistence)
- [Redmine persistence](#redmine-persistence)
- [Redmine Language](#redmine-language)
- [Redmine Admin](#redmine-admin)
- [Email Delivery](#email-delivery)
## TL;DR;
**Step 1: Create a Kubernetes cluster**
```bash
$ gcloud container clusters create my-cluster
```
**Step 2: Add the Bitnami Charts repo to Helm Classic**
```bash
$ helmc repo add bitnami https://github.com/bitnami/charts
$ helmc update
```
**Step 3: Deploy MariaDB**
```bash
$ helmc fetch bitnami/mariadb
$ helmc install mariadb
```
**Step 4: Deploy Redmine**
```bash
$ helmc fetch bitnami/redmine
$ helmc install redmine
```
To learn how you can access the Redmine application please refer to the [Accessing the Redmine Instance](#accessing-the-redmine-application) section.
## Introduction
[Redmine](http://redmine.org) is a [feature-rich](http://www.redmine.org/projects/redmine/wiki/Features) open source project management web application written using the Ruby on Rails framwork and released under the terms of the [GNU General Public License v2](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) (GPL).
In this tutorial we walk through deploying Redmine on [Google Container Engine](https://cloud.google.com/container-engine/) (GKE) using [Helm Classic](http://helm.sh/) and the [Official Bitnami Helm Classic Charts](https://github.com/bitnami/charts). The following illustration provides an overview of the deployment.
![Architecture](images/architecture.png)
## Before you begin
### Kubernetes environment
[Kubernetes](http://kubernetes.io) is an open source container cluster manager by Google. It aims to provide a *"platform for automating deployment, scaling, and operations of application containers across clusters of hosts"*.
Before you create a Kubernetes cluster follow [these instructions](https://cloud.google.com/container-engine/docs/before-you-begin) to set up your GKE account.
### Helm
Dubbed as the Kubernetes Package Manager, Helm Classic bootstraps a Kubernetes cluster with Charts that provide ready-to-use workloads.
[Install Helm Classic](https://github.com/helm/helm-classic#installing-helm) with the following commands.
```bash
$ curl -s https://get.helm.sh | bash
$ sudo mv helmc /usr/local/bin
$ sudo chmod +x /usr/local/bin/helmc
```
### Bitnami Charts
The [Bitnami Helm Classic Charts](https://github.com/bitnami/charts) repo is the easiest way to deploy [Bitnami Docker Containers](https://bitnami.com/docker) on a Kubernetes cluster.
In addition to deploying containers on the cluster, the Bitnami Charts also set up [Container Probes](http://kubernetes.io/docs/user-guide/pod-states/#container-probes) to perform diagnostic checks on the containers to maximize the responsiveness and uptime of applications and services deployed on the cluster.
The Charts in this repo are actively developed and maintained by [Bitnami](https://bitnami.com/) so that you have a pleasant experience deploying applications on Kubernetes. So lets get started...
Add the Bitnami Charts repo to Helm Classic.
```bash
$ helmc repo add bitnami https://github.com/bitnami/charts
```
(Periodically) Update the Charts to get the latest and greatest Charts from Bitnami.
```bash
$ helmc update
```
## Create the cluster
*This is optional if you want to use an existing Kubernetes cluster.*
```bash
$ gcloud container clusters create my-cluster
```
The above command creates a cluster named `my-cluster` on GKE. You can name the cluster whatever you like.
> **Tip**:
>
> Multiple applications and services can be deployed on a single cluster and the various applications and services share the resources of the cluster thereby optimally utilizing the cluster resources. As the need arises resources can be added or removed by [resizing the cluster](https://cloud.google.com/container-engine/docs/resize-cluster).
## Deploy MariaDB
The [Bitnami Redmine Chart](https://github.com/bitnami/charts/tree/master/redmine) depends on the [Bitnami MariaDB Chart](https://github.com/bitnami/charts/tree/master/mariadb) for the database needs of the Redmine application. As such we'll first deploy the MariaDB Chart.
Begin by fetching the MariaDB Chart from the Bitnami Helm Classic Charts repo.
```bash
$ helmc fetch bitnami/mariadb
```
Bitnami Charts use [Helm Classic templates and generators](https://github.com/helm/helm-classic/blob/master/docs/generate-and-template.md) allowing users to easily update the deployment parameters. The configurable parameters are stored in the `~/.helmc/workspace/charts/mariadb/tpl/values.toml` file of the Chart and in the default configuration the administrative user `root` is created without a password. To change the defaults, update the relevant parameters.
> **Hint**:
>
> If your default editor is set to `vim` and you have issues running the following command, add `se autochdir` to your `~/.vimrc` profile and retry or directly edit `~/.helmc/workspace/charts/mariadb/tpl/values.toml` in your favourite editor.
```bash
$ helmc edit mariadb
```
> **Tip:**
>
> It's suggested to set up the administrative user `root` especially if you wish to share the MariaDB instance with other applications. This allows each application to create a database using the `root` credentials.
Refer to the [MariaDB persistence](#mariadb-persistence) section for setting up the persistence of MariaDB data.
Apply the changes.
```bash
$ helmc generate --force mariadb
```
It's time to deploy the MariaDB Chart.
```bash
$ helmc install mariadb
```
The above command deploys the MariaDB Chart on the cluster in the `default` namespace and will be accessible by any container running in the same namespace.
Using `kubectl` you can query the deployment status of the MariaDB [Replication Controller](http://kubernetes.io/docs/user-guide/replication-controller/), [Pods](http://kubernetes.io/docs/user-guide/pods/) and [Services](http://kubernetes.io/docs/user-guide/services/).
```bash
$ kubectl get rc,pods,services -l provider=mariadb,heritage=bitnami
```
*In the above command we are filtering the command output using labels used in the MariaDB Chart.*
## Deploy Redmine
With the MariaDB Chart deployed on the cluster, thus satisfying the dependencies of the Redmine Chart, we are now ready to deploy the Redmine Chart.
Fetch the Chart from the repo.
```bash
$ helmc fetch bitnami/redmine
```
Just like the MariaDB Chart, the Redmine Chart uses Helm Classic templates and generators with the configurable parameters stored in the `~/.helmc/workspace/charts/redmine/tpl/values.toml` file of the Chart.
Edit the deployment parameters.
```bash
$ helmc edit redmine
```
*or directly edit `~/.helmc/workspace/charts/redmine/tpl/values.toml` in your favourite text editor*
In the default configuration the Redmine administrator username and password credentials are `user` and `bitnami` respectively.
To configure Redmine data persistence refer to the [Redmine persistence](#redmine-persistence) section.
Refer to the [Redmine Language](#redmine-language) section to change the Redmine language which defaults to `en`.
To specify custom Redmine admin credentials, which default to `user` with password `bitnami`, refer to the [Redmine Admin](#redmine-admin) section.
For information on setting up email notifications please read the [Email Delivery](#email-delivery) section.
Once your done updating the deployment parameters, apply the changes with.
```bash
$ helmc generate --force redmine
```
And finally we're ready to deploy the Redmine Chart.
```bash
$ helmc install redmine
```
The above command deploys the Redmine Chart under the `default` namespace and the deployment status of the Redmine Replication Controller, Pods and Services can be queried.
```bash
$ kubectl get rc,pods,services -l app=redmine,heritage=bitnami
```
> **Bonus Tip**
>
> `kubectl get rc,pods,services -l heritage=bitnami` will list all the Pods and Services deployed using the Bitnami components.
## Accessing the Redmine application
The Redmine Chart exposes the HTTP interface of the Redmine application so that
the application can be accessed over the internet using the external IP address of the Redmine service.
Get the external IP address.
```bash
$ kubectl get services -l app=redmine,heritage=bitnami
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
redmine 10.63.248.111 104.197.247.57 80/TCP 43
```
> **Note:**
>
> You may need to execute the above command a couple of times as it could take a while for GKE to assign an external IP address to the service.
Point your web browser to the IP address listed in the `EXTERNAL-IP` column of the command output and login using the Redmine administrator account credentials as you may have configured while deploying the Redmine Chart. If the defaults were not changed, then the login credentials are
- Username: `user`
- Password: `bitnami`
## Uninstalling Redmine
The Redmine deployment can easily be uninstalled with Helm Classic.
```bash
$ helmc uninstall --namespace default redmine
```
The command uninstalls the Kubernetes components set up by the Redmine Chart in the `default` namespace.
Similarly, if the MariaDB deployment is not being used for any other application, you can uninstall the MariaDB Chart as well:
```bash
$ helmc uninstall --namespace default mariadb
```
To destroy the cluster in it's entirety use the following command. Note that any applications and services running on the cluster will also be removed.
```bash
$ gcloud container clusters delete my-cluster
```
If you had created `gcePersistentDisk`'s for setting up [MariaDB persistence](#mariadb-persistence) and [Redmine persistence](#redmine-persistence) you should be able to restore the deployment by simply redeploying the respective Charts with the existing disks.
However, to delete these disks:
```bash
$ gcloud compute disks delete redmine-data-disk mariadb-data-disk
```
The above command will delete both the `redmine-data-disk` and `mariadb-data-disk` disks and the data therein will be lost forever.
## Configuration
### MariaDB persistence
By default the MariaDB Chart mounts a [emptyDir](http://kubernetes.io/docs/user-guide/volumes/#emptydir) volume for the data. When a Pod is removed for any reason, the data in the `emptyDir` is deleted forever.
To persist the data across Pod shutdown and startup we should replace the `emptyDir` data volume with a persistent [storage volume](http://kubernetes.io/v1.0/docs/user-guide/volumes.html). For demonstration purposes we'll use a [gcePersistentDisk](http://kubernetes.io/docs/user-guide/volumes/#gcepersistentdisk).
Begin by creating a GCE persistent disk.
```bash
$ gcloud compute disks create mariadb-data-disk
```
Next you'll need to update the `data` volume specification in `~/.helmc/workspace/charts/mariadb/tpl/mariadb-rc.yaml` to:
```yaml
volumes:
- name: data
gcePersistentDisk:
pdName: mariadb-data-disk
fsType: ext4
```
Apply the changes before [deploying the MariaDB Chart](#deploy-mariadb).
### Redmine persistence
Like the MariaDB Chart, the the Redmine Chart mounts a [emptyDir](http://kubernetes.io/docs/user-guide/volumes/#emptydir) volume for the Redmine data by default.
For the persistence of data across Pod shutdown and startup we should replace the `emptyDir` data volume with a persistent storage volume. We'll use a `gcePersistentDisk` for demonstration purposes.
Create the GCE persistent disk.
```bash
$ gcloud compute disks create redmine-data-disk
```
Update the `data` volume specification in `~/.helmc/workspace/charts/redmine/tpl/redmine-rc.yaml` to:
```yaml
volumes:
- name: data
gcePersistentDisk:
pdName: redmine-data-disk
fsType: ext4
```
Apply the changes before [deploying the Redmine Chart](#deploy-redmine).
### Redmine Language
The Redmine application language defaults to English and can be configured using the `redmineLanguage` deployment parameter.
Please refer to the [IANA Language Subtag Registry](http://www.iana.org/assignments/language-subtag-registry) for your language code. The accepted values for the `redmineLanguage` parameter are `bg`, `cs`, `de`, `en`, `es`, `fr`, `he`, `it`, `ja`, `ko`, `nl`, `pl`, `pt`, `pt_br`, `ro`, `ru`, `sr`, `sv`, `zh` and `zh_tw`.
For example, to configure the Redmine language to Español, edit the `~/.helmc/workspace/charts/redmine/tpl/values.toml` file of the Redmine Chart and specify the following configuration.
```toml
redmineLanguage = "es"
```
Apply the changes before [deploying the Redmine Chart](#deploy-redmine).
### Redmine Admin
The default Redmine admin username and password credentials are `user` and `bitnami` respectively and the email address is set up as `user@example.com`. These parmeters can be configured using the `redmineUser`, `redminePassword` and `redmineEmail` parameters in the `~/.helmc/workspace/charts/redmine/tpl/values.toml` file of the Redmine Chart.
For example, if you want to create the admin user `jon.snow` with password `winteriscoming` and email address `jon.snow@thenightswatch.com`.
```toml
redmineUser = "jon.snow"
redminePassword = "winteriscoming"
redmineEmail = "jon.snow@thenightswatch.com"
```
Apply the changes before [deploying the Redmine Chart](#deploy-redmine).
### Email Delivery
The Redmine Chart exposes deployment parameters to easily and effortlessly enable email notifications in Redmine. By default email delivery is disabled and can be enabled by simply providing the SMTP details of the mail delivery service.
For example, to configure email delivery via Gmail, edit the `~/.helmc/workspace/charts/redmine/tpl/values.toml` file of the Redmine Chart and specify the following configuration.
```toml
smtpHost = "smtp.gmail.com"
smtpPort = "587"
smtpUser = "notifications@example.com"
smtpPassword = "secret-password"
smtpTls = "true"
```
Remember to update `notifications@example.com` and `secret-password` in the above configuration with the Gmail username and password respectively.
That's all there is to it. Go ahead and apply the changes before [deploying the Redmine Chart](#deploy-redmine).
Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

-283
View File
@@ -1,283 +0,0 @@
<?xml version="1.0"?>
<Document xmlns="http://www.evolus.vn/Namespace/Pencil"><Properties/><Pages><Page><Properties><Property name="name">Untitled Page</Property><Property name="id">1460446566515_7698</Property><Property name="width">1120</Property><Property name="height">560</Property><Property name="dimBackground"/><Property name="transparentBackground">true</Property><Property name="backgroundColor">#FFFFFFFF</Property><Property name="background">transparent</Property></Properties><Content><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:pane" id="b2771a90210f47e39846c172ee5c064a" transform="matrix(1,0,0,1,278,18)"><p:metadata><p:property name="radius"><![CDATA[41.44999999999998,0]]></p:property><p:property name="textPadding"><![CDATA[0,16.166666666666664]]></p:property><p:property name="fillColor"><![CDATA[#EEEEEE00]]></p:property><p:property name="shadowStyle"><![CDATA[0|0|3]]></p:property><p:property name="shadowColor"><![CDATA[#00000000]]></p:property><p:property name="strokeColor"><![CDATA[#999999FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|8,4,1,4]]></p:property><p:property name="textContent"><![CDATA[]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property><p:property name="box"><![CDATA[828.9999999999997,484.9999999999999]]></p:property><p:property name="cornerStyle"><![CDATA[none]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="-3" y="-3" width="834.9999999999997" height="490.9999999999999" p:name="htmlObject" id="7317d72904a84e6087eabdec1df9a16c" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1;">
<div xmlns="http://www.w3.org/1999/xhtml" style="-moz-box-sizing: border-box; overflow: hidden; box-shadow: none; width: 829px; height: 485px; padding: 16.1667px; background-color: rgba(238, 238, 238, 0); border-radius: 0px 0px 0px 0px; border: 1px solid rgb(153, 153, 153); margin-left: 3px; margin-top: 3px;" p:name="div" id="e33f74ac79e2438895be8bf440dcd584"><div xmlns="http://www.w3.org/1999/xhtml"></div></div>
</foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:pane" id="21f9a7f1047a4ac8a2f354ecbaa613fd" transform="matrix(1,0,0,1,604.7999877929688,297.6000061035156)"><p:metadata><p:property name="radius"><![CDATA[9.75,0]]></p:property><p:property name="textPadding"><![CDATA[0,5.806666666666672]]></p:property><p:property name="fillColor"><![CDATA[#EEEEEEFF]]></p:property><p:property name="shadowStyle"><![CDATA[0|0|3]]></p:property><p:property name="shadowColor"><![CDATA[#00000000]]></p:property><p:property name="strokeColor"><![CDATA[#999999FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property><p:property name="box"><![CDATA[195,174.20000000000005]]></p:property><p:property name="cornerStyle"><![CDATA[all]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="-3" y="-3" width="201" height="180.20000000000005" p:name="htmlObject" id="56032ef542954847a3bd73c5f96cce1b" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1;">
<div xmlns="http://www.w3.org/1999/xhtml" style="-moz-box-sizing: border-box; overflow: hidden; box-shadow: none; width: 195px; height: 174.2px; padding: 5.80667px; background-color: rgb(238, 238, 238); border-radius: 9.75px 9.75px 9.75px 9.75px; border: 1px solid rgb(153, 153, 153); margin-left: 3px; margin-top: 3px;" p:name="div" id="db98684256a14379a1d50575281da56d"><div xmlns="http://www.w3.org/1999/xhtml"></div></div>
</foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:pane" id="1b7ffe85b310474e8be01f2720cb4456" transform="matrix(1,0,0,1,604.7999877929688,76.60000610351562)"><p:metadata><p:property name="radius"><![CDATA[9.75,0]]></p:property><p:property name="textPadding"><![CDATA[0,5.5066666666666695]]></p:property><p:property name="fillColor"><![CDATA[#EEEEEEFF]]></p:property><p:property name="shadowStyle"><![CDATA[0|0|3]]></p:property><p:property name="shadowColor"><![CDATA[#00000000]]></p:property><p:property name="strokeColor"><![CDATA[#999999FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property><p:property name="box"><![CDATA[195,165.20000000000005]]></p:property><p:property name="cornerStyle"><![CDATA[all]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="-3" y="-3" width="201" height="171.20000000000005" p:name="htmlObject" id="8f798c67457344ff8de60fec81945125" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1;">
<div xmlns="http://www.w3.org/1999/xhtml" style="-moz-box-sizing: border-box; overflow: hidden; box-shadow: none; width: 195px; height: 165.2px; padding: 5.50667px; background-color: rgb(238, 238, 238); border-radius: 9.75px 9.75px 9.75px 9.75px; border: 1px solid rgb(153, 153, 153); margin-left: 3px; margin-top: 3px;" p:name="div" id="17f5f336a34449f688689e45c08eb4e7"><div xmlns="http://www.w3.org/1999/xhtml"></div></div>
</foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:pane" id="057caa13d3304f54b27947e45165f2fb" transform="matrix(1,0,0,1,297.79998779296875,231.60000610351562)"><p:metadata><p:property name="radius"><![CDATA[10,0]]></p:property><p:property name="textPadding"><![CDATA[0,7.373333333333335]]></p:property><p:property name="fillColor"><![CDATA[#EEEEEEFF]]></p:property><p:property name="shadowStyle"><![CDATA[0|0|3]]></p:property><p:property name="shadowColor"><![CDATA[#00000000]]></p:property><p:property name="strokeColor"><![CDATA[#999999FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property><p:property name="box"><![CDATA[200,221.2]]></p:property><p:property name="cornerStyle"><![CDATA[all]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="-3" y="-3" width="206" height="227.2" p:name="htmlObject" id="d3e6b938efda4f11b933b47715ea4f4d" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1;">
<div xmlns="http://www.w3.org/1999/xhtml" style="-moz-box-sizing: border-box; overflow: hidden; box-shadow: none; width: 200px; height: 221.2px; padding: 7.37333px; background-color: rgb(238, 238, 238); border-radius: 10px 10px 10px 10px; border: 1px solid rgb(153, 153, 153); margin-left: 3px; margin-top: 3px;" p:name="div" id="68d32f42d56b472aab7884822cce78a2"><div xmlns="http://www.w3.org/1999/xhtml"></div></div>
</foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:pane" id="c338d4160b0d483386e822ff3249db0c" transform="matrix(1,0,0,1,901.7999267578125,139.03997802734375)"><p:metadata><p:property name="radius"><![CDATA[8.319999999999997,0]]></p:property><p:property name="textPadding"><![CDATA[0,10.434666666666661]]></p:property><p:property name="fillColor"><![CDATA[#EEEEEEFF]]></p:property><p:property name="shadowStyle"><![CDATA[0|0|3]]></p:property><p:property name="shadowColor"><![CDATA[#00000000]]></p:property><p:property name="strokeColor"><![CDATA[#999999FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property><p:property name="box"><![CDATA[166.40000000000003,313.0399999999999]]></p:property><p:property name="cornerStyle"><![CDATA[all]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="-3" y="-3" width="172.40000000000003" height="319.0399999999999" p:name="htmlObject" id="13d6f66ccc18412fab3d1a7c9a1a952d" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1;">
<div xmlns="http://www.w3.org/1999/xhtml" style="-moz-box-sizing: border-box; overflow: hidden; box-shadow: none; width: 166.4px; height: 313.04px; padding: 10.4347px; background-color: rgb(238, 238, 238); border-radius: 8.32px 8.32px 8.32px 8.32px; border: 1px solid rgb(153, 153, 153); margin-left: 3px; margin-top: 3px;" p:name="div" id="547b485b0dde4abe93554de2b47609c2"><div xmlns="http://www.w3.org/1999/xhtml"></div></div>
</foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Flowchart:MagneticDisk" id="cf414b9cfc794455a1d0e99267974508" transform="matrix(1,0,0,1,920.9599609375,171)"><p:metadata><p:property name="box"><![CDATA[129.16,35.36000000000002]]></p:property><p:property name="outputPin1Origin"><![CDATA[64.58,0]]></p:property><p:property name="outputPin1"><![CDATA[64.58,0]]></p:property><p:property name="outputPin2Origin"><![CDATA[129.16,17.68000000000001]]></p:property><p:property name="outputPin2"><![CDATA[128.9450915141431,18]]></p:property><p:property name="outputPin3Origin"><![CDATA[64.58,35.36000000000002]]></p:property><p:property name="outputPin3"><![CDATA[64.58,35.627204030226714]]></p:property><p:property name="outputPin4Origin"><![CDATA[0,17.68000000000001]]></p:property><p:property name="outputPin4"><![CDATA[0,17.68000000000001]]></p:property><p:property name="fillColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeColor"><![CDATA[#999999FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[]]></p:property><p:property name="textFont"><![CDATA[Abyssinica SIL|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<path stroke="none" style="stroke-linejoin: round; fill: rgb(204, 204, 204); fill-opacity: 1;" p:name="fill" id="e40a3053c99a4ebb83fe16f4fef2b9bf" transform="translate(0.5,0.5)" d="M 0 5.893333333333337 L 0 29.466666666666683 C 0 32.413333333333355 32.29 35.36000000000002 64.58 35.36000000000002 S 129.16 32.413333333333355 129.16 29.466666666666683 L 129.16 5.893333333333337 C 129.16 2.9466666666666685 96.87 0 64.58 0 S 0 2.9466666666666685 0 5.893333333333337 z"/>
<path fill="none" style="stroke-linejoin: round; stroke: rgb(153, 153, 153); stroke-opacity: 1; stroke-width: 1;" p:name="path" id="8370aaec92484e1b843c1a8c6e61ee7c" transform="translate(0.5,0.5)" d="M 0 5.893333333333337 L 0 29.466666666666683 C 0 32.413333333333355 32.29 35.36000000000002 64.58 35.36000000000002 S 129.16 32.413333333333355 129.16 29.466666666666683 L 129.16 5.893333333333337 C 129.16 8.840000000000005 96.87 11.786666666666674 64.58 11.786666666666674 S 0 8.840000000000005 0 5.893333333333337 C 0 2.9466666666666685 32.29 0 64.58 0 S 129.16 2.9466666666666685 129.16 5.893333333333337"/>
<text text-anchor="start" xml:space="preserve" p:name="text" id="350e4f5bd67a4e3491971d49b2e6f353" style="font-family: Abyssinica SIL; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(65,24)"/>
<path style="stroke-linejoin: round; fill: none; stroke: rgb(153, 153, 153); stroke-opacity: 1; stroke-width: 1;" p:name="outputArrrow1" id="2992a921f0aa4f679ef50f411c083b2e" d=""/>
<path style="stroke-linejoin: round; fill: none; stroke: rgb(153, 153, 153); stroke-opacity: 1; stroke-width: 1;" p:name="outputArrrow2" id="355a2d28af784420a7172191fa1df34b" d=""/>
<path style="stroke-linejoin: round; fill: none; stroke: rgb(153, 153, 153); stroke-opacity: 1; stroke-width: 1;" p:name="outputArrrow3" id="4dbcb28afd4e4d2f9045d1ff4b65f12e" d=""/>
<path style="stroke-linejoin: round; fill: none; stroke: rgb(153, 153, 153); stroke-opacity: 1; stroke-width: 1;" p:name="outputArrrow4" id="3887a604621048b19c1f448c742aee20" d=""/>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:arrow" p:sc="Straight Connector" id="dbf162861d514afaab902de5c44aaf02" transform="matrix(1,0,0,1,841.8399658203125,305.9599914550781)"><p:metadata><p:property name="startPin" p:connectedShapeId="a8e3ccdf025c4113b0907f3663960879" p:connectedOutletId="middle-right" p:viax="-62.83995361328127" p:viay="-117.95999145507812"><![CDATA[-72.83995361328127,-117.95999145507812]]></p:property><p:property name="endPin" p:connectedShapeId="cf414b9cfc794455a1d0e99267974508" p:connectedOutletId="middle-left" p:viax="69.1199951171875" p:viay="-117.27999145507812"><![CDATA[79.1199951171875,-117.27999145507812]]></p:property><p:property name="withStartArrow"><![CDATA[false]]></p:property><p:property name="withEndArrow"><![CDATA[true]]></p:property><p:property name="mode"><![CDATA[straight]]></p:property><p:property name="detached"><![CDATA[false]]></p:property><p:property name="strokeColor"><![CDATA[#999999FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[]]></p:property><p:property name="textFont"><![CDATA[Abyssinica SIL|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<defs>
<path style="stroke-linejoin: round; fill: none;" p:name="path" id="ffb771b2d1cf4230ba1f2ee40edcbb80" d="M -72.83995361328127 -117.95999145507812 L 69.12009523769233 -117.3247396402076 L 79.1199951171875 -117.27999145507812 M 75 -122 L 79.1199951171875 -117.27999145507812 L 75 -113"/>
</defs>
<use xlink:href="#ffb771b2d1cf4230ba1f2ee40edcbb80" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-width="10" stroke-opacity="0" stroke="#FF0000"/>
<use xlink:href="#ffb771b2d1cf4230ba1f2ee40edcbb80" xmlns:xlink="http://www.w3.org/1999/xlink" p:name="outArrow1" id="afb76a6f22a14e59864a24f6223dd58a" style="stroke: rgb(153, 153, 153); stroke-opacity: 1; stroke-width: 1;"/>
<text p:name="text" id="2e52995c806745ca9b293bad85fe53ca" style="fill: rgb(0, 0, 0); fill-opacity: 1; font-family: Abyssinica SIL; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none;">
<textPath xlink:href="#ffb771b2d1cf4230ba1f2ee40edcbb80" xmlns:xlink="http://www.w3.org/1999/xlink" startOffset="50%" text-anchor="middle" alignment-baseline="middle">
<tspan dy="-4" p:name="textSpan" id="2a6c74fab6e1446185e086884ff440d9" dx="-12"/>
</textPath>
</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:arrow" p:sc="Straight Connector" id="dbf6c99367d644a582739b2bc781efaf" transform="matrix(1,0,0,1,835.4400024414062,412.280029296875)"><p:metadata><p:property name="startPin" p:viay="1.719970703125" p:viax="-56.43999023437502" p:connectedOutletId="middle-right" p:connectedShapeId="5756e5e1739e4290b78c13da01f2a5cf"><![CDATA[-66.43999023437502,1.719970703125]]></p:property><p:property name="endPin" p:viay="-0.6000292968749896" p:viax="75.51995849609375" p:connectedOutletId="middle-left" p:connectedShapeId="0be88b3f64174126a6c42aa43dab1907"><![CDATA[85.51995849609375,-0.6000292968749896]]></p:property><p:property name="withStartArrow"><![CDATA[false]]></p:property><p:property name="withEndArrow"><![CDATA[true]]></p:property><p:property name="mode"><![CDATA[straight]]></p:property><p:property name="detached"><![CDATA[false]]></p:property><p:property name="strokeColor"><![CDATA[#999999FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[]]></p:property><p:property name="textFont"><![CDATA[Abyssinica SIL|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<defs>
<path style="stroke-linejoin: round; fill: none;" p:name="path" id="b080464ac8a542fb850de5a71299eef6" d="M -66.43999023437502 1.719970703125 L 75.52112372643406 -0.44737527942230276 L 85.51995849609375 -0.6000292968749896 M 81 -5 L 85.51995849609375 -0.6000292968749896 L 81 4"/>
</defs>
<use xlink:href="#b080464ac8a542fb850de5a71299eef6" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-width="10" stroke-opacity="0" stroke="#FF0000"/>
<use xlink:href="#b080464ac8a542fb850de5a71299eef6" xmlns:xlink="http://www.w3.org/1999/xlink" p:name="outArrow1" id="03ca9369ed524281935b66875493295c" style="stroke: rgb(153, 153, 153); stroke-opacity: 1; stroke-width: 1;"/>
<text p:name="text" id="b2c3674090a647978a52bae25438011b" style="fill: rgb(0, 0, 0); fill-opacity: 1; font-family: Abyssinica SIL; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none;">
<textPath xlink:href="#b080464ac8a542fb850de5a71299eef6" xmlns:xlink="http://www.w3.org/1999/xlink" startOffset="50%" text-anchor="middle" alignment-baseline="middle">
<tspan dy="-4" p:name="textSpan" id="0074eec23f224898afc520d44e0a5a33" dx="-12"/>
</textPath>
</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:arrow" p:sc="Straight Connector" id="42507c60072044c9b977a89ad48616c1" transform="matrix(1,0,0,1,506.6400146484375,421.52001953125)"><p:metadata><p:property name="startPin" p:connectedShapeId="a1aec2a25ef044b5bb5087406128a6ba" p:connectedOutletId="middle-right" p:viax="-27.040014648437506" p:viay="-45.12001953124999"><![CDATA[-37.040014648437506,-45.12001953124999]]></p:property><p:property name="endPin" p:viay="-44.68001953125" p:viax="109.3599853515625" p:connectedOutletId="middle-left" p:connectedShapeId="1ecb0ffe4df74f5297d5726c45f3108d"><![CDATA[119.3599853515625,-44.68001953125]]></p:property><p:property name="withStartArrow"><![CDATA[false]]></p:property><p:property name="withEndArrow"><![CDATA[true]]></p:property><p:property name="mode"><![CDATA[straight]]></p:property><p:property name="detached"><![CDATA[false]]></p:property><p:property name="strokeColor"><![CDATA[#999999FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[]]></p:property><p:property name="textFont"><![CDATA[Abyssinica SIL|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<defs>
<path style="stroke-linejoin: round; fill: none;" p:name="path" id="e5fce60454e94ca69929e5a4add01a25" d="M -37.040014648437506 -45.12001953124999 L 109.36002492459046 -44.70815241224659 L 119.3599853515625 -44.68001953125 M 115 -49 L 119.3599853515625 -44.68001953125 L 115 -40"/>
</defs>
<use xlink:href="#e5fce60454e94ca69929e5a4add01a25" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-width="10" stroke-opacity="0" stroke="#FF0000"/>
<use xlink:href="#e5fce60454e94ca69929e5a4add01a25" xmlns:xlink="http://www.w3.org/1999/xlink" p:name="outArrow1" id="a28fbcf168db436080bb7fb04873173c" style="stroke: rgb(153, 153, 153); stroke-opacity: 1; stroke-width: 1;"/>
<text p:name="text" id="83691743482f478fb8748ea533ebb0e4" style="fill: rgb(0, 0, 0); fill-opacity: 1; font-family: Abyssinica SIL; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none;">
<textPath xlink:href="#e5fce60454e94ca69929e5a4add01a25" xmlns:xlink="http://www.w3.org/1999/xlink" startOffset="50%" text-anchor="middle" alignment-baseline="middle">
<tspan dy="-4" p:name="textSpan" id="9060b56769b3441cbfa9bde33b90f9d1" dx="-12"></tspan>
</textPath>
</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:arrow" p:sc="Multi-segment Connector" id="a86964f86c114e37968d4feb8b88a7ac" transform="matrix(1,0,0,1,482.32000732421875,276.79998779296875)"><p:metadata><p:property name="startPin" p:viay="37.000012207031276" p:viax="-85.02000732421875" p:connectedOutletId="bottom-center" p:connectedShapeId="5de31130479a475eae612f49f192572c"><![CDATA[-85.02000732421875,27.000012207031276]]></p:property><p:property name="endPin" p:connectedShapeId="1ecb0ffe4df74f5297d5726c45f3108d" p:connectedOutletId="top-center" p:viax="218.67999267578125" p:viay="35.20001220703125"><![CDATA[218.67999267578125,45.20001220703125]]></p:property><p:property name="withStartArrow"><![CDATA[true]]></p:property><p:property name="withEndArrow"><![CDATA[false]]></p:property><p:property name="mode"><![CDATA[multi-straight]]></p:property><p:property name="detached"><![CDATA[false]]></p:property><p:property name="strokeColor"><![CDATA[#999999FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[SQL]]></p:property><p:property name="textFont"><![CDATA[Ubuntu|normal|normal|8px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<defs>
<path style="stroke-linejoin: round; fill: none;" p:name="path" id="0c1f312db7204ff48f5ac60358650137" d="M -89 31 L -85.02000732421875 27.000012207031276 L -81 31 M -85.02000732421875 27.000012207031276 L -85 37 L 219 35 L 218.9935706848672 35.204929974642276 L 218.67999267578125 45.20001220703125"/>
</defs>
<use xlink:href="#0c1f312db7204ff48f5ac60358650137" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-width="10" stroke-opacity="0" stroke="#FF0000"/>
<use xlink:href="#0c1f312db7204ff48f5ac60358650137" xmlns:xlink="http://www.w3.org/1999/xlink" p:name="outArrow1" id="60895a13f86f42f99e3df6f6a31d999f" style="stroke: rgb(153, 153, 153); stroke-opacity: 1; stroke-width: 1;"/>
<text p:name="text" id="5f22a7670dd448b99101b6863217e90c" style="fill: rgb(0, 0, 0); fill-opacity: 1; font-family: Ubuntu; font-size: 8px; font-weight: normal; font-style: normal; text-decoration: none;">
<textPath xlink:href="#0c1f312db7204ff48f5ac60358650137" xmlns:xlink="http://www.w3.org/1999/xlink" startOffset="50%" text-anchor="middle" alignment-baseline="middle">
<tspan dy="-2.6666666666666665" p:name="textSpan" id="98ea5840c80d491f95c8b01dd0ae4086" dx="12">SQL</tspan>
</textPath>
</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Group" xmlns:p="http://www.evolus.vn/Namespace/Pencil" transform="matrix(1,0,0,1,322,250)" id="0767e492d6474330a77d5d90117822f5" p:sizing-gow="150.60000610351562" p:sizing-goh="56.79999923706055"><g p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:pane" id="5de31130479a475eae612f49f192572c" transform="matrix(1,0,0,1,3,3)" p:sizing-ox="0" p:sizing-oy="0" p:sizing-ow="144.6" p:sizing-oh="50.800000000000026"><p:metadata><p:property name="radius"><![CDATA[7.230000000000002,0]]></p:property><p:property name="textPadding"><![CDATA[0,1.6933333333333338]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="shadowStyle"><![CDATA[0|0|3]]></p:property><p:property name="shadowColor"><![CDATA[#00000000]]></p:property><p:property name="strokeColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property><p:property name="box"><![CDATA[144.6,50.800000000000026]]></p:property><p:property name="cornerStyle"><![CDATA[all]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="-3" y="-3" width="150.6" height="56.800000000000026" p:name="htmlObject" id="b59442fb0cd245308e58326256e40b73" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1;">
<div xmlns="http://www.w3.org/1999/xhtml" style="-moz-box-sizing: border-box; overflow: hidden; box-shadow: none; width: 144.6px; height: 50.8px; padding: 1.69333px; background-color: rgb(255, 255, 255); border-radius: 7.23px 7.23px 7.23px 7.23px; border: 1px solid rgb(204, 204, 204); margin-left: 3px; margin-top: 3px;" p:name="div" id="b76efa685f7f4399986e971f2fda96c5"><div xmlns="http://www.w3.org/1999/xhtml"></div></div>
</foreignObject>
</g><g p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:heading" p:sc="Heading 5" id="f3dd841f9e0d46f984b8856733b19a23" transform="matrix(1,0,0,1,11,26.999984741210938)" p:sizing-ox="11" p:sizing-oy="26.999984741210938" p:sizing-ow="64" p:sizing-oh="21"><p:metadata><p:property name="textContent"><![CDATA[<span style="font-family: Ubuntu;"><span style="font-size: large;">Service</span></span>]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="0" y="0" width="65" height="21" p:name="htmlObject" id="ecced6cce8484d2dabef58885357f588" style="color: rgb(0, 0, 0); opacity: 1; font-family: &quot;Liberation Sans&quot;,Arial,sans-serif; font-size: 12px; font-weight: bold; font-style: normal; text-decoration: none;">
<div xmlns="http://www.w3.org/1999/xhtml" p:name="textDiv" id="83f3125fd86840e58bbde961e49721d6" style="white-space: nowrap; display: inline-block !important"><div xmlns="http://www.w3.org/1999/xhtml"><span style="font-family: Ubuntu;"><span style="font-size: large;">Service</span></span></div></div>
</foreignObject>
</g><g p:type="Shape" p:def="Evolus.Common:Bitmap" id="a95f956cb0d946b8b888bcc0c97a8983" transform="matrix(1,0,0,1,92.04000854492188,9.039962768554688)" p:sizing-ox="92.04000854492188" p:sizing-oy="9.039962768554688" p:sizing-ow="49.279999999999994" p:sizing-oh="37.75999999999999"><p:metadata><p:property name="box"><![CDATA[49.279999999999994,37.75999999999999]]></p:property><p:property name="imageData"><![CDATA[246,185,logo-Mariadb.png]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFF00]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[0|]]></p:property></p:metadata>
<defs>
<filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="imageShading" id="3bceae3815f044588e12f799ab4f2ae7">
<feGaussianBlur stdDeviation="1.3325" in="SourceAlpha"/>
</filter>
<g p:name="container" id="11bd4634e500464a95f99088915e19fb">
<rect style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 0; fill-opacity: 0;" p:name="bgRect" id="341ccae9b029480185c979859b95d085" width="49.28" height="37.76" transform="translate(0,0)"/>
<g p:name="imageContainer" id="65f99d507b524e1bac2852eefd3448ce" transform="scale(0.20032520325203249,0.20410810810810806)">
<image x="0" y="0" p:name="image" id="69be40c0a7ca4977ad7837f7f1866841" xlink:href="logo-Mariadb.png" xmlns:xlink="http://www.w3.org/1999/xlink" width="246" height="185"/>
</g>
</g>
</defs>
<use xlink:href="#11bd4634e500464a95f99088915e19fb" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(1, 1)" p:filter="url(#3bceae3815f044588e12f799ab4f2ae7)" style="opacity: 0.6; visibility: hidden; display: none;" p:name="bgCopy" id="2a9d7dfb3735447c8d54b22b3c2cd127"/>
<use xlink:href="#11bd4634e500464a95f99088915e19fb" xmlns:xlink="http://www.w3.org/1999/xlink"/>
</g></g><g xmlns="http://www.w3.org/2000/svg" p:type="Group" xmlns:p="http://www.evolus.vn/Namespace/Pencil" transform="matrix(1,0,0,1,322,348)" id="eeefaecb55d14f0cbd969f1c4147d7ef" p:sizing-gow="150.60000610351562" p:sizing-goh="56.79999923706055"><g p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:pane" id="a1aec2a25ef044b5bb5087406128a6ba" transform="matrix(1,0,0,1,3,3)" p:sizing-ox="0" p:sizing-oy="0" p:sizing-ow="144.6" p:sizing-oh="50.800000000000026"><p:metadata><p:property name="radius"><![CDATA[7.230000000000002,0]]></p:property><p:property name="textPadding"><![CDATA[0,1.6933333333333338]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="shadowStyle"><![CDATA[0|0|3]]></p:property><p:property name="shadowColor"><![CDATA[#00000000]]></p:property><p:property name="strokeColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property><p:property name="box"><![CDATA[144.6,50.800000000000026]]></p:property><p:property name="cornerStyle"><![CDATA[all]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="-3" y="-3" width="150.6" height="56.800000000000026" p:name="htmlObject" id="0dd22330252240eb911888e1491f55d9" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1;">
<div xmlns="http://www.w3.org/1999/xhtml" style="-moz-box-sizing: border-box; overflow: hidden; box-shadow: none; width: 144.6px; height: 50.8px; padding: 1.69333px; background-color: rgb(255, 255, 255); border-radius: 7.23px 7.23px 7.23px 7.23px; border: 1px solid rgb(204, 204, 204); margin-left: 3px; margin-top: 3px;" p:name="div" id="d361d0e409154706be868bd0461fc6d4"><div xmlns="http://www.w3.org/1999/xhtml"></div></div>
</foreignObject>
</g><g p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:heading" p:sc="Heading 5" id="a8bd53ff07c1474e9d18237576661b42" transform="matrix(1,0,0,1,11,27)" p:sizing-ox="11" p:sizing-oy="27" p:sizing-ow="64" p:sizing-oh="21"><p:metadata><p:property name="textContent"><![CDATA[<span style="font-family: Ubuntu;"><span style="font-size: large;">Service</span></span>]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="0" y="0" width="65" height="21" p:name="htmlObject" id="3f33d864bb3a4eb5a2ef92e0264e09b1" style="color: rgb(0, 0, 0); opacity: 1; font-family: &quot;Liberation Sans&quot;,Arial,sans-serif; font-size: 12px; font-weight: bold; font-style: normal; text-decoration: none;">
<div xmlns="http://www.w3.org/1999/xhtml" p:name="textDiv" id="c8c974f6b8104052b5ab69051898f8b3" style="white-space: nowrap; display: inline-block !important"><div xmlns="http://www.w3.org/1999/xhtml"><span style="font-family: Ubuntu;"><span style="font-size: large;">Service</span></span></div></div>
</foreignObject>
</g><g p:type="Shape" p:def="Evolus.Common:Bitmap" id="0d4b3d230c794571a05bec58f7405f09" transform="matrix(1,0,0,1,96.20001220703125,6.79998779296875)" p:sizing-ox="96.20001220703125" p:sizing-oy="6.79998779296875" p:sizing-ow="45" p:sizing-oh="42"><p:metadata><p:property name="box"><![CDATA[45,42]]></p:property><p:property name="imageData"><![CDATA[300,264,Redmine_logo_0.png]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFF00]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[0|]]></p:property></p:metadata>
<defs>
<filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="imageShading" id="acdb97abb5aa4ba1abfff4896f370a75">
<feGaussianBlur stdDeviation="1.3325" in="SourceAlpha"/>
</filter>
<g p:name="container" id="f782cafef8d948e0b6d1a386146c57aa">
<rect style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 0; fill-opacity: 0;" p:name="bgRect" id="ed966064b2c14e678788e5eb2291ad12" width="45" height="42" transform="translate(0,0)"/>
<g p:name="imageContainer" id="c344d4787be74bf88c4fdde7a7da37dc" transform="scale(0.15,0.1590909090909091)">
<image x="0" y="0" p:name="image" id="ca1c3205831740ea857607fd2604dce1" xlink:href="Redmine_logo_0.png" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" height="264"/>
</g>
</g>
</defs>
<use xlink:href="#f782cafef8d948e0b6d1a386146c57aa" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(1, 1)" p:filter="url(#acdb97abb5aa4ba1abfff4896f370a75)" style="opacity: 0.6; visibility: hidden; display: none;" p:name="bgCopy" id="d174ec7fb79b4c8d9a20f89fd19041fd"/>
<use xlink:href="#f782cafef8d948e0b6d1a386146c57aa" xmlns:xlink="http://www.w3.org/1999/xlink"/>
</g></g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:heading" p:sc="Heading 3" id="f69816a819cf44ab8655f7842b4bab6a" transform="matrix(1,0,0,1,327.20001220703125,422)"><p:metadata><p:property name="textContent"><![CDATA[<span style="font-family: Ubuntu;"><span style="font-weight: normal;">Kubernetes Master<br /></span></span>]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|16px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="0" y="0" width="137" height="19" p:name="htmlObject" id="e1c75c32547d4b7ba28a5f63de6e368b" style="color: rgb(0, 0, 0); opacity: 1; font-family: &quot;Liberation Sans&quot;,Arial,sans-serif; font-size: 16px; font-weight: bold; font-style: normal; text-decoration: none;">
<div xmlns="http://www.w3.org/1999/xhtml" p:name="textDiv" id="f07642ecaf674d40932ffd64ec1361d1" style="white-space: nowrap; display: inline-block !important"><div xmlns="http://www.w3.org/1999/xhtml"><span style="font-family: Ubuntu;"><span style="font-weight: normal;">Kubernetes Master<br /></span></span></div></div>
</foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:heading" p:sc="Heading 3" id="1b55893d489b4bef96db64fc60b867b4" transform="matrix(1,0,0,1,627.2000122070312,212)"><p:metadata><p:property name="textContent"><![CDATA[<div style="text-align: center;"><span style="font-family: Ubuntu;"><span style="font-weight: normal;">Kubernetes Minion 1</span><br /><span style="font-weight: normal;"></span></span></div>]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|16px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="0" y="0" width="149" height="19" p:name="htmlObject" id="6f55303de1514d02b2992c0f34842602" style="color: rgb(0, 0, 0); opacity: 1; font-family: &quot;Liberation Sans&quot;,Arial,sans-serif; font-size: 16px; font-weight: bold; font-style: normal; text-decoration: none;">
<div xmlns="http://www.w3.org/1999/xhtml" p:name="textDiv" id="4a2eee9c1ab944c782a3d78bd4fcf885" style="white-space: nowrap; display: inline-block !important"><div xmlns="http://www.w3.org/1999/xhtml"><div style="text-align: center;"><span style="font-family: Ubuntu;"><span style="font-weight: normal;">Kubernetes Minion 1</span><br /><span style="font-weight: normal;"></span></span></div></div></div>
</foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:heading" p:sc="Heading 3" id="a1e200c7056140bc92900b0494b6f176" transform="matrix(1,0,0,1,625.2000122070312,443)"><p:metadata><p:property name="textContent"><![CDATA[<div style="text-align: center;"><span style="font-weight: normal;">Kubernetes Minion 2</span><br /><span style="font-weight: normal;"></span></div>]]></p:property><p:property name="textFont"><![CDATA[Ubuntu|bold|normal|16px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="0" y="0" width="149" height="19" p:name="htmlObject" id="894c9a8df4e54ccca8d4e2af4659bac5" style="color: rgb(0, 0, 0); opacity: 1; font-family: Ubuntu; font-size: 16px; font-weight: bold; font-style: normal; text-decoration: none;">
<div xmlns="http://www.w3.org/1999/xhtml" p:name="textDiv" id="880c27ef52c14ba08d682b2d5dc7c7c8" style="white-space: nowrap; display: inline-block !important"><div xmlns="http://www.w3.org/1999/xhtml"><div style="text-align: center;"><span style="font-weight: normal;">Kubernetes Minion 2</span><br /><span style="font-weight: normal;"></span></div></div></div>
</foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Flowchart:MagneticDisk" id="0be88b3f64174126a6c42aa43dab1907" transform="matrix(1,0,0,1,920.9599609375,394)"><p:metadata><p:property name="box"><![CDATA[129.16,35.36000000000002]]></p:property><p:property name="outputPin1Origin"><![CDATA[64.58,0]]></p:property><p:property name="outputPin1"><![CDATA[64.58,0]]></p:property><p:property name="outputPin2Origin"><![CDATA[129.16,17.68000000000001]]></p:property><p:property name="outputPin2"><![CDATA[128.9450915141431,18]]></p:property><p:property name="outputPin3Origin"><![CDATA[64.58,35.36000000000002]]></p:property><p:property name="outputPin3"><![CDATA[64.58,35.627204030226714]]></p:property><p:property name="outputPin4Origin"><![CDATA[0,17.68000000000001]]></p:property><p:property name="outputPin4"><![CDATA[0,17.68000000000001]]></p:property><p:property name="fillColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeColor"><![CDATA[#999999FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[]]></p:property><p:property name="textFont"><![CDATA[Abyssinica SIL|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<path stroke="none" style="stroke-linejoin: round; fill: rgb(204, 204, 204); fill-opacity: 1;" p:name="fill" id="87f72c2cc1a04d9c984e73fc9289a7a6" transform="translate(0.5,0.5)" d="M 0 5.893333333333337 L 0 29.466666666666683 C 0 32.413333333333355 32.29 35.36000000000002 64.58 35.36000000000002 S 129.16 32.413333333333355 129.16 29.466666666666683 L 129.16 5.893333333333337 C 129.16 2.9466666666666685 96.87 0 64.58 0 S 0 2.9466666666666685 0 5.893333333333337 z"/>
<path fill="none" style="stroke-linejoin: round; stroke: rgb(153, 153, 153); stroke-opacity: 1; stroke-width: 1;" p:name="path" id="964befc767154d48969d5a48f6627628" transform="translate(0.5,0.5)" d="M 0 5.893333333333337 L 0 29.466666666666683 C 0 32.413333333333355 32.29 35.36000000000002 64.58 35.36000000000002 S 129.16 32.413333333333355 129.16 29.466666666666683 L 129.16 5.893333333333337 C 129.16 8.840000000000005 96.87 11.786666666666674 64.58 11.786666666666674 S 0 8.840000000000005 0 5.893333333333337 C 0 2.9466666666666685 32.29 0 64.58 0 S 129.16 2.9466666666666685 129.16 5.893333333333337"/>
<text text-anchor="start" xml:space="preserve" p:name="text" id="3fc49612f4ad44da83efc84fb939f45d" style="font-family: Abyssinica SIL; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(65,24)"/>
<path style="stroke-linejoin: round; fill: none; stroke: rgb(153, 153, 153); stroke-opacity: 1; stroke-width: 1;" p:name="outputArrrow1" id="05fcfe8eee7647f4a047a8c05d61f954" d=""/>
<path style="stroke-linejoin: round; fill: none; stroke: rgb(153, 153, 153); stroke-opacity: 1; stroke-width: 1;" p:name="outputArrrow2" id="9cd4f116e1ec405fa53d027b6017869d" d=""/>
<path style="stroke-linejoin: round; fill: none; stroke: rgb(153, 153, 153); stroke-opacity: 1; stroke-width: 1;" p:name="outputArrrow3" id="8de443447d434c2480e0d0fcdbb679b6" d=""/>
<path style="stroke-linejoin: round; fill: none; stroke: rgb(153, 153, 153); stroke-opacity: 1; stroke-width: 1;" p:name="outputArrrow4" id="a279e686c5a64b4d8fcf73503f010e43" d=""/>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Group" xmlns:p="http://www.evolus.vn/Namespace/Pencil" transform="matrix(1,0,0,1,8,338)" id="7c84acc77be043f782903d23b1f0dfde" p:sizing-gow="159" p:sizing-goh="78"><g p:type="Shape" p:def="Evolus.BasicWebElements:pane" id="75ffb97cedfb488bb2b662f84b9511f5" transform="matrix(1,0,0,1,3,3)" p:sizing-ox="0" p:sizing-oy="0" p:sizing-ow="153.00000000000003" p:sizing-oh="72.0000000000001"><p:metadata><p:property name="radius"><![CDATA[7.650000000000001,0]]></p:property><p:property name="textPadding"><![CDATA[0,2.4000000000000035]]></p:property><p:property name="fillColor"><![CDATA[#FFFF99FF]]></p:property><p:property name="shadowStyle"><![CDATA[0|0|3]]></p:property><p:property name="shadowColor"><![CDATA[#00000000]]></p:property><p:property name="strokeColor"><![CDATA[#999999FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property><p:property name="box"><![CDATA[153.00000000000003,72.0000000000001]]></p:property><p:property name="cornerStyle"><![CDATA[none]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="-3" y="-3" width="159.00000000000003" height="78.0000000000001" p:name="htmlObject" id="dc6210def8364a369b61bc9cad09d878" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1;">
<div xmlns="http://www.w3.org/1999/xhtml" style="-moz-box-sizing: border-box; overflow: hidden; box-shadow: none; width: 153px; height: 72px; padding: 2.4px; background-color: rgb(255, 255, 153); border-radius: 0px 0px 0px 0px; border: 1px solid rgb(153, 153, 153); margin-left: 3px; margin-top: 3px;" p:name="div" id="dccba19df3c149479ddefce8fe11b05e"><div xmlns="http://www.w3.org/1999/xhtml"></div></div>
</foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:heading" p:sc="Heading 3" id="d8d48cf8df8e4272bca5fa07af921c1d" transform="matrix(1,0,0,1,46.20001220703125,49)" p:sizing-ox="46.20001220703125" p:sizing-oy="49" p:sizing-ow="99" p:sizing-oh="20"><p:metadata><p:property name="textContent"><![CDATA[<span style="font-family: Ubuntu;"><span style="font-size: small;"><span style="font-weight: normal;">Browser Request<br /></span></span></span>]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|17px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="0" y="0" width="100" height="20" p:name="htmlObject" id="498a11fb26e74fbe9dfd8195d737e412" style="color: rgb(0, 0, 0); opacity: 1; font-family: &quot;Liberation Sans&quot;,Arial,sans-serif; font-size: 17px; font-weight: bold; font-style: normal; text-decoration: none;">
<div xmlns="http://www.w3.org/1999/xhtml" p:name="textDiv" id="61b5414a26d042ab8a05e80cec21f5d4" style="white-space: nowrap; display: inline-block !important"><div xmlns="http://www.w3.org/1999/xhtml"><span style="font-family: Ubuntu;"><span style="font-size: small;"><span style="font-weight: normal;">Browser Request<br /></span></span></span></div></div>
</foreignObject>
</g><g p:type="Shape" p:def="Evolus.Sketchy.GUI:line" p:sc="Horizontal Line" id="fca6fce8115c420c98ede9f13f368ad7" transform="matrix(1,0,0,1,2,16)" p:sizing-ox="3" p:sizing-oy="16.25" p:sizing-ow="153" p:sizing-oh="0.75"><p:metadata><p:property name="a"><![CDATA[0,0]]></p:property><p:property name="b"><![CDATA[153,0]]></p:property><p:property name="mode"><![CDATA[horizontal]]></p:property><p:property name="strokeColor"><![CDATA[#999999FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property></p:metadata>
<g p:name="rect" id="cd2f0d6e08914693a90a4bbad8cceb6e" transform="translate(0.5,0.5)" style="stroke: rgb(153, 153, 153); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke: #FFFFFF; stroke-opacity: 0; stroke-width: 8px; fill: none;" p:name="bg" id="e7754c867d3341129fbb99b2e4700fe5" transform="translate(0.5,0.5)" d="M 0 0 C 51 -1 102 -1 153 0"/>
<path style="stroke-linejoin: round; fill: none;" p:name="line1" id="00353a2dcb2046f090fd6172a767fff5" transform="translate(0.5,0.5)" d="M 0 0 C 51 -1 102 -1 153 0"/>
</g>
</g><g p:type="Shape" p:def="Evolus.Sketchy.GUI:line" p:sc="Vertical Line" id="2a057d20327140c99e351064e7711700" transform="matrix(1,0,0,1,15,2)" p:sizing-ox="15.25" p:sizing-oy="3" p:sizing-ow="0.75" p:sizing-oh="72"><p:metadata><p:property name="a"><![CDATA[0,0]]></p:property><p:property name="b"><![CDATA[0,72]]></p:property><p:property name="mode"><![CDATA[vertical]]></p:property><p:property name="strokeColor"><![CDATA[#999999FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property></p:metadata>
<g p:name="rect" id="06dee54874db43098fe7e5d7e34f3cbe" transform="translate(0.5,0.5)" style="stroke: rgb(153, 153, 153); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke: #FFFFFF; stroke-opacity: 0; stroke-width: 8px; fill: none;" p:name="bg" id="1589135fb8404e16baa86951e68208a1" transform="translate(0.5,0.5)" d="M 0 0 C -1 24 -1 48 0 72"/>
<path style="stroke-linejoin: round; fill: none;" p:name="line1" id="157d51b7c3b24ca5ab4f7f068f2a3ffb" transform="translate(0.5,0.5)" d="M 0 0 C -1 24 -1 48 0 72"/>
</g>
</g></g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:arrow" p:sc="Straight Connector" id="79b9df2740cd4584afbb604b0a166f50" transform="matrix(1,0,0,1,58,347)"><p:metadata><p:property name="startPin" p:connectedShapeId="75ffb97cedfb488bb2b662f84b9511f5" p:connectedOutletId="middle-right" p:viax="116.00000000000003" p:viay="30.00000000000005"><![CDATA[106.00000000000003,30.00000000000005]]></p:property><p:property name="endPin" p:connectedShapeId="a1aec2a25ef044b5bb5087406128a6ba" p:connectedOutletId="middle-left" p:viax="257" p:viay="29.400000000000013"><![CDATA[267,29.400000000000013]]></p:property><p:property name="withStartArrow"><![CDATA[false]]></p:property><p:property name="withEndArrow"><![CDATA[true]]></p:property><p:property name="mode"><![CDATA[straight]]></p:property><p:property name="detached"><![CDATA[false]]></p:property><p:property name="strokeColor"><![CDATA[#999999FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[HTTP]]></p:property><p:property name="textFont"><![CDATA[Ubuntu|normal|normal|8px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[2,2]]></p:property></p:metadata>
<defs>
<path style="stroke-linejoin: round; fill: none;" p:name="path" id="92be9b5d8358456c83545f812296a61e" d="M 106.00000000000003 30.00000000000005 L 257.00006944104206 29.437266821958865 L 267 29.400000000000013 M 263 25 L 267 29.400000000000013 L 263 34"/>
</defs>
<use xlink:href="#92be9b5d8358456c83545f812296a61e" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-width="10" stroke-opacity="0" stroke="#FF0000"/>
<use xlink:href="#92be9b5d8358456c83545f812296a61e" xmlns:xlink="http://www.w3.org/1999/xlink" p:name="outArrow1" id="b35b95328b8f48a4b7e2e82fe3a7dd35" style="stroke: rgb(153, 153, 153); stroke-opacity: 1; stroke-width: 1;"/>
<text p:name="text" id="566586b14b484b6dbbe753db124c4955" style="fill: rgb(0, 0, 0); fill-opacity: 1; font-family: Ubuntu; font-size: 8px; font-weight: normal; font-style: normal; text-decoration: none;">
<textPath xlink:href="#92be9b5d8358456c83545f812296a61e" xmlns:xlink="http://www.w3.org/1999/xlink" startOffset="50%" text-anchor="middle" alignment-baseline="middle">
<tspan dy="-2.6666666666666665" p:name="textSpan" id="fb69366c140247aa849f419826ad6384" dx="-12">HTTP</tspan>
</textPath>
</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:arrow" p:sc="Multi-segment Connector" id="eec5f0b16cfe4b8792aacb82e9c48ef4" transform="matrix(1,0,0,1,375,453)"><p:metadata><p:property name="startPin" p:connectedShapeId="5de31130479a475eae612f49f192572c" p:connectedOutletId="top-center" p:viax="22.299999999999997" p:viay="-210"><![CDATA[22,-200]]></p:property><p:property name="endPin" p:connectedShapeId="1b7ffe85b310474e8be01f2720cb4456" p:connectedOutletId="middle-left" p:viax="219.79998779296875" p:viay="-293.79999389648435"><![CDATA[230,-294]]></p:property><p:property name="withStartArrow"><![CDATA[false]]></p:property><p:property name="withEndArrow"><![CDATA[true]]></p:property><p:property name="mode"><![CDATA[multi-straight]]></p:property><p:property name="detached"><![CDATA[false]]></p:property><p:property name="strokeColor"><![CDATA[#999999FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[]]></p:property><p:property name="textFont"><![CDATA[Abyssinica SIL|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<defs>
<path style="stroke-linejoin: round; fill: none;" p:name="path" id="83c5f0e2db2c4fa7825bad731144d4d6" d="M 22 -200 L 22 -294 L 220 -294 L 230 -294 M 226 -298 L 230 -294 L 226 -290"/>
</defs>
<use xlink:href="#83c5f0e2db2c4fa7825bad731144d4d6" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-width="10" stroke-opacity="0" stroke="#FF0000"/>
<use xlink:href="#83c5f0e2db2c4fa7825bad731144d4d6" xmlns:xlink="http://www.w3.org/1999/xlink" p:name="outArrow1" id="76ee466b1112410595bccafa2a19fb90" style="stroke: rgb(153, 153, 153); stroke-opacity: 1; stroke-width: 1;"/>
<text p:name="text" id="17f72d9e1a6b4be79a447e8238188e1b" style="fill: rgb(0, 0, 0); fill-opacity: 1; font-family: Abyssinica SIL; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none;">
<textPath xlink:href="#83c5f0e2db2c4fa7825bad731144d4d6" xmlns:xlink="http://www.w3.org/1999/xlink" startOffset="50%" text-anchor="middle" alignment-baseline="middle">
<tspan dy="-4" p:name="textSpan" id="09d7c9e1a5424878840398c6b77ca444" dx="-12"/>
</textPath>
</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:heading" p:sc="Heading 3" id="c81d300c40a54737a8fa1313a7346077" transform="matrix(1,0,0,1,931.0798950195312,280)"><p:metadata><p:property name="textContent"><![CDATA[<div style="text-align: center;"><span style="font-family: Ubuntu;"><span style="font-weight: normal;">Persistent Disk <br />Storage</span><br /><span style="font-weight: normal;"></span></span></div>]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|16px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="0" y="0" width="106" height="38" p:name="htmlObject" id="64d220bc1d584028bf2a0eae3ec53dca" style="color: rgb(0, 0, 0); opacity: 1; font-family: &quot;Liberation Sans&quot;,Arial,sans-serif; font-size: 16px; font-weight: bold; font-style: normal; text-decoration: none;">
<div xmlns="http://www.w3.org/1999/xhtml" p:name="textDiv" id="2ee44c1f75c046c194a9509d0c2056c2" style="white-space: nowrap; display: inline-block !important"><div xmlns="http://www.w3.org/1999/xhtml"><div style="text-align: center;"><span style="font-family: Ubuntu;"><span style="font-weight: normal;">Persistent Disk <br />Storage</span><br /><span style="font-weight: normal;"></span></span></div></div></div>
</foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:Bitmap" id="6a610395e9ab43bba89954ce398cde4f" transform="matrix(1,0,0,1,247,12)"><p:metadata><p:property name="box"><![CDATA[149.99999999999994,87.99999999999996]]></p:property><p:property name="imageData"><![CDATA[280,163,Kubernetes.png]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFF00]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[0|]]></p:property></p:metadata>
<defs>
<filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="imageShading" id="7c716cf99d3e4ffda34d822b32086e6f">
<feGaussianBlur stdDeviation="1.3325" in="SourceAlpha"/>
</filter>
<g p:name="container" id="46e69310eb4e4104adcfe0f4949d49e6">
<rect style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 0; fill-opacity: 0;" p:name="bgRect" id="32c253f5f7084f3ca013ea8ade7e2632" width="150" height="88" transform="translate(0,0)"/>
<g p:name="imageContainer" id="410b8ae7361544178e47dc5262f75333" transform="scale(0.5357142857142855,0.5398773006134967)">
<image x="0" y="0" p:name="image" id="4a6832441f5e44f382874682122966c6" xlink:href="Kubernetes.png" xmlns:xlink="http://www.w3.org/1999/xlink" width="280" height="163"/>
</g>
</g>
</defs>
<use xlink:href="#46e69310eb4e4104adcfe0f4949d49e6" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(1, 1)" p:filter="url(#7c716cf99d3e4ffda34d822b32086e6f)" style="opacity: 0.6; visibility: hidden; display: none;" p:name="bgCopy" id="0c679628d7964d428e25e68a59180375"/>
<use xlink:href="#46e69310eb4e4104adcfe0f4949d49e6" xmlns:xlink="http://www.w3.org/1999/xlink"/>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:PlainTextV2" id="1eaba4a9c82a4630a364d8d3b77e9669" transform="matrix(1,0,0,1,363,74)"><p:metadata><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="width"><![CDATA[100,0]]></p:property><p:property name="fixedWidth"><![CDATA[false]]></p:property><p:property name="label"><![CDATA[Kubernetes Cluster]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textFont"><![CDATA[Ubuntu|bold|normal|20px|none]]></p:property><p:property name="textAlign"><![CDATA[0,0]]></p:property></p:metadata>
<rect x="0" y="0" style="fill: none; stroke: none; visibility: hidden; display: none;" p:name="bgRect" id="b4eb8e38f263434eb82b436e3baa7460" width="0" height="0"/>
<text xml:space="preserve" p:name="text" id="639fe1f1dc40426cb634bf6e892667c6" style="fill: rgb(0, 0, 0); fill-opacity: 1; font-family: Ubuntu; font-size: 20px; font-weight: bold; font-style: normal; text-decoration: none;"><tspan x="0" y="0">Kubernetes Cluster</tspan></text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:pane" id="1ecb0ffe4df74f5297d5726c45f3108d" transform="matrix(1,0,0,1,626,322)" p:sizing-ox="0" p:sizing-oy="0" p:sizing-ow="150" p:sizing-oh="109.68"><p:metadata><p:property name="radius"><![CDATA[7.500000000000002,0]]></p:property><p:property name="textPadding"><![CDATA[0,3.6559999999999997]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="shadowStyle"><![CDATA[0|0|3]]></p:property><p:property name="shadowColor"><![CDATA[#00000000]]></p:property><p:property name="strokeColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property><p:property name="box"><![CDATA[150,109.68]]></p:property><p:property name="cornerStyle"><![CDATA[all]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="-3" y="-3" width="156" height="115.68" p:name="htmlObject" id="7cb0d72c54954b749204fba994c46307" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1;">
<div xmlns="http://www.w3.org/1999/xhtml" style="-moz-box-sizing: border-box; overflow: hidden; box-shadow: none; width: 150px; height: 109.68px; padding: 3.656px; background-color: rgb(255, 255, 255); border-radius: 7.5px 7.5px 7.5px 7.5px; border: 1px solid rgb(204, 204, 204); margin-left: 3px; margin-top: 3px;" p:name="div" id="b64f9aaf1f974cea8c0dd1ae28f70e20"><div xmlns="http://www.w3.org/1999/xhtml"></div></div>
</foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Group" xmlns:p="http://www.evolus.vn/Namespace/Pencil" transform="matrix(1,0,0,1,623,93)" id="7739c3cdc9ad4b608c4c3a41192d32e1" p:sizing-gow="156" p:sizing-goh="115.68000030517578"><g p:type="Shape" p:def="Evolus.BasicWebElements:pane" id="77e683b2d3f644789b0657fe8ea41662" transform="matrix(1,0,0,1,3,3)" p:sizing-ox="0" p:sizing-oy="0" p:sizing-ow="150" p:sizing-oh="109.68"><p:metadata><p:property name="radius"><![CDATA[7.500000000000002,0]]></p:property><p:property name="textPadding"><![CDATA[0,3.6559999999999997]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="shadowStyle"><![CDATA[0|0|3]]></p:property><p:property name="shadowColor"><![CDATA[#00000000]]></p:property><p:property name="strokeColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property><p:property name="box"><![CDATA[150,109.68]]></p:property><p:property name="cornerStyle"><![CDATA[all]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="-3" y="-3" width="156" height="115.68" p:name="htmlObject" id="89440827e103497c852cbe7bfcfe5bd7" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1;">
<div xmlns="http://www.w3.org/1999/xhtml" style="-moz-box-sizing: border-box; overflow: hidden; box-shadow: none; width: 150px; height: 109.68px; padding: 3.656px; background-color: rgb(255, 255, 255); border-radius: 7.5px 7.5px 7.5px 7.5px; border: 1px solid rgb(204, 204, 204); margin-left: 3px; margin-top: 3px;" p:name="div" id="d570a5731d95464d8f035a2488f5e04f"><div xmlns="http://www.w3.org/1999/xhtml"></div></div>
</foreignObject>
</g><g p:type="Shape" p:def="Evolus.BasicWebElements:heading" p:sc="Heading 5" id="10f07d0ff936446c9e0e0590c8c8d16c" transform="matrix(1,0,0,1,13,7)" p:sizing-ox="13" p:sizing-oy="7" p:sizing-ow="34" p:sizing-oh="21"><p:metadata><p:property name="textContent"><![CDATA[<span style="font-family: Ubuntu;"><span style="font-size: large;">Pod</span></span>]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="0" y="0" width="34" height="21" p:name="htmlObject" id="2fcdcd8fc1fb4c8e93088210472f6929" style="color: rgb(0, 0, 0); opacity: 1; font-family: &quot;Liberation Sans&quot;,Arial,sans-serif; font-size: 12px; font-weight: bold; font-style: normal; text-decoration: none;">
<div xmlns="http://www.w3.org/1999/xhtml" p:name="textDiv" id="6b76f240d4aa49f4a1d4260e9643c166" style="white-space: nowrap; display: inline-block !important"><div xmlns="http://www.w3.org/1999/xhtml"><span style="font-family: Ubuntu;"><span style="font-size: large;">Pod</span></span></div></div>
</foreignObject>
</g><g p:type="Shape" p:def="Evolus.Common:Bitmap" id="972b1de3cf7a48cd9f2a59e020131e43" transform="matrix(1,0,0,1,47.20001220703125,7.0399932861328125)" p:sizing-ox="47.20001220703125" p:sizing-oy="7.0399932861328125" p:sizing-ow="97.27999999999997" p:sizing-oh="72.95999999999998"><p:metadata><p:property name="box"><![CDATA[97.27999999999997,72.95999999999998]]></p:property><p:property name="imageData"><![CDATA[246,185,logo-Mariadb.png]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFF00]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[0|]]></p:property></p:metadata>
<defs>
<filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="imageShading" id="bd2ec072d1344564a0136f484e73b830">
<feGaussianBlur stdDeviation="1.3325" in="SourceAlpha"/>
</filter>
<g p:name="container" id="1280bbb0a59b4b46b589984e76566d9a">
<rect style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 0; fill-opacity: 0;" p:name="bgRect" id="0ec02c73d0e94692a07cf4c5ec88c99a" width="97.28" height="72.96" transform="translate(0,0)"/>
<g p:name="imageContainer" id="d8eff5b428fe461f9f162e4522785c65" transform="scale(0.3954471544715446,0.39437837837837825)">
<image x="0" y="0" p:name="image" id="9d968df5b4614597a995f69e618fd7af" xlink:href="logo-Mariadb.png" xmlns:xlink="http://www.w3.org/1999/xlink" width="246" height="185"/>
</g>
</g>
</defs>
<use xlink:href="#1280bbb0a59b4b46b589984e76566d9a" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(1, 1)" p:filter="url(#bd2ec072d1344564a0136f484e73b830)" style="opacity: 0.6; visibility: hidden; display: none;" p:name="bgCopy" id="d308b04e064f4a6c81b3a5e9e6be4eba"/>
<use xlink:href="#1280bbb0a59b4b46b589984e76566d9a" xmlns:xlink="http://www.w3.org/1999/xlink"/>
</g><g p:type="Shape" p:def="Evolus.BasicWebElements:pane" id="a8e3ccdf025c4113b0907f3663960879" transform="matrix(1,0,0,1,10.20001220703125,83)" p:sizing-ox="7.20001220703125" p:sizing-oy="80" p:sizing-ow="135.79999999999998" p:sizing-oh="24"><p:metadata><p:property name="radius"><![CDATA[6.789999999999999,0]]></p:property><p:property name="textPadding"><![CDATA[0,0.8]]></p:property><p:property name="fillColor"><![CDATA[#FFFF99FF]]></p:property><p:property name="shadowStyle"><![CDATA[0|0|3]]></p:property><p:property name="shadowColor"><![CDATA[#00000000]]></p:property><p:property name="strokeColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property><p:property name="box"><![CDATA[135.79999999999998,24]]></p:property><p:property name="cornerStyle"><![CDATA[none]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="-3" y="-3" width="141.79999999999998" height="30" p:name="htmlObject" id="e983ae946db84cd9957e96017168abe8" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1;">
<div xmlns="http://www.w3.org/1999/xhtml" style="-moz-box-sizing: border-box; overflow: hidden; box-shadow: none; width: 135.8px; height: 24px; padding: 0.8px; background-color: rgb(255, 255, 153); border-radius: 0px 0px 0px 0px; border: 1px solid rgb(204, 204, 204); margin-left: 3px; margin-top: 3px;" p:name="div" id="b7d58a8875c54660b5895f519a6919c6"><div xmlns="http://www.w3.org/1999/xhtml"></div></div>
</foreignObject>
</g><g p:type="Shape" p:def="Evolus.Common:RichTextBoxV2" p:sc="HTML Texts" id="082910cf9fe744d9a3a2b31e5b0926eb" transform="matrix(1,0,0,1,47,87)" p:sizing-ox="47" p:sizing-oy="87" p:sizing-ow="57" p:sizing-oh="16"><p:metadata><p:property name="width"><![CDATA[200,0]]></p:property><p:property name="fixedWidth"><![CDATA[false]]></p:property><p:property name="textContent"><![CDATA[<span style="font-family: Ubuntu;"><span style="font-size: small;">Container</span></span>]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="customStyle"><![CDATA[
]]></p:property></p:metadata>
<foreignObject x="0" y="0" width="57" height="16" p:name="htmlObject" id="3496569b0ec4410d999509a5c2119bbe" style="color: rgb(0, 0, 0); opacity: 1; font-family: &quot;Liberation Sans&quot;,Arial,sans-serif; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none;">
<div xmlns="http://www.w3.org/1999/xhtml" p:name="textDiv" id="aa24318a7f9e41ffa8ee3959b3790849" style="display: inline-block; white-space: nowrap; text-decoration: none;"><div xmlns="http://www.w3.org/1999/xhtml"><span style="font-family: Ubuntu;"><span style="font-size: small;">Container</span></span></div></div>
</foreignObject>
</g></g><g xmlns="http://www.w3.org/2000/svg" p:type="Group" xmlns:p="http://www.evolus.vn/Namespace/Pencil" transform="matrix(1,0,0,1,630.2000122070312,322.3999938964844)" id="3752f44a04c84c589df6c5ebe1f9b93a" p:sizing-gow="141.8000030517578" p:sizing-goh="106.60000610351562"><g p:type="Shape" p:def="Evolus.BasicWebElements:heading" p:sc="Heading 5" id="a02210f67c834f4481a64dc26e7c3934" transform="matrix(1,0,0,1,5.79998779296875,3.600006103515625)" p:sizing-ox="5.79998779296875" p:sizing-oy="3.600006103515625" p:sizing-ow="34" p:sizing-oh="21"><p:metadata><p:property name="textContent"><![CDATA[<span style="font-family: Ubuntu;"><span style="font-size: large;">Pod</span></span>]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="0" y="0" width="34" height="21" p:name="htmlObject" id="6ce23615acdd48a8a5750b07e1660db8" style="color: rgb(0, 0, 0); opacity: 1; font-family: &quot;Liberation Sans&quot;,Arial,sans-serif; font-size: 12px; font-weight: bold; font-style: normal; text-decoration: none;">
<div xmlns="http://www.w3.org/1999/xhtml" p:name="textDiv" id="df9abe00d8764dd68e534d72b5e9441b" style="white-space: nowrap; display: inline-block !important"><div xmlns="http://www.w3.org/1999/xhtml"><span style="font-family: Ubuntu;"><span style="font-size: large;">Pod</span></span></div></div>
</foreignObject>
</g><g p:type="Shape" p:def="Evolus.BasicWebElements:pane" id="5756e5e1739e4290b78c13da01f2a5cf" transform="matrix(1,0,0,1,3,79.60000610351562)" p:sizing-ox="0" p:sizing-oy="76.60000610351562" p:sizing-ow="135.79999999999998" p:sizing-oh="24"><p:metadata><p:property name="radius"><![CDATA[6.789999999999999,0]]></p:property><p:property name="textPadding"><![CDATA[0,0.8]]></p:property><p:property name="fillColor"><![CDATA[#FFFF99FF]]></p:property><p:property name="shadowStyle"><![CDATA[0|0|3]]></p:property><p:property name="shadowColor"><![CDATA[#00000000]]></p:property><p:property name="strokeColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property><p:property name="box"><![CDATA[135.79999999999998,24]]></p:property><p:property name="cornerStyle"><![CDATA[none]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="-3" y="-3" width="141.79999999999998" height="30" p:name="htmlObject" id="e096bda59d8a45229e2b4500663cbaeb" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1;">
<div xmlns="http://www.w3.org/1999/xhtml" style="-moz-box-sizing: border-box; overflow: hidden; box-shadow: none; width: 135.8px; height: 24px; padding: 0.8px; background-color: rgb(255, 255, 153); border-radius: 0px 0px 0px 0px; border: 1px solid rgb(204, 204, 204); margin-left: 3px; margin-top: 3px;" p:name="div" id="a577339297c442b591d998c6ba1a84d1"><div xmlns="http://www.w3.org/1999/xhtml"></div></div>
</foreignObject>
</g><g p:type="Shape" p:def="Evolus.Common:RichTextBoxV2" p:sc="HTML Texts" id="ea5ae7d4903149ceb8b1f7e4b29f101e" transform="matrix(1,0,0,1,39.79998779296875,84.60000610351562)" p:sizing-ox="39.79998779296875" p:sizing-oy="84.60000610351562" p:sizing-ow="57" p:sizing-oh="16"><p:metadata><p:property name="width"><![CDATA[200,0]]></p:property><p:property name="fixedWidth"><![CDATA[false]]></p:property><p:property name="textContent"><![CDATA[<span style="font-size: small;">Container</span>]]></p:property><p:property name="textFont"><![CDATA[Ubuntu|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="customStyle"><![CDATA[
]]></p:property></p:metadata>
<foreignObject x="0" y="0" width="57" height="16" p:name="htmlObject" id="a60ec373692848caa5c9e5277d64b9bb" style="color: rgb(0, 0, 0); opacity: 1; font-family: Ubuntu; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none;">
<div xmlns="http://www.w3.org/1999/xhtml" p:name="textDiv" id="5edf2fc2104a41129c52b256ea5dea13" style="display: inline-block; white-space: nowrap; text-decoration: none;"><div xmlns="http://www.w3.org/1999/xhtml"><span style="font-size: small;">Container</span></div></div>
</foreignObject>
</g><g p:type="Shape" p:def="Evolus.Common:Bitmap" id="34ef2a912b2a418c900cdeb72a50003c" transform="matrix(1,0,0,1,51,5.684341886080802e-14)" p:sizing-ox="51" p:sizing-oy="0" p:sizing-ow="87.67999999999998" p:sizing-oh="77.43999999999997"><p:metadata><p:property name="box"><![CDATA[87.67999999999998,77.43999999999997]]></p:property><p:property name="imageData"><![CDATA[300,264,Redmine_logo_0.png]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFF00]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[0|]]></p:property></p:metadata>
<defs>
<filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="imageShading" id="9226019ae5e04159af9940d876003180">
<feGaussianBlur stdDeviation="1.3325" in="SourceAlpha"/>
</filter>
<g p:name="container" id="2c0e9a52c606437b88f625d5b0955327">
<rect style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 0; fill-opacity: 0;" p:name="bgRect" id="53ac514c905f40469548a5ecbf11b32e" width="87.68" height="77.44" transform="translate(0,0)"/>
<g p:name="imageContainer" id="e7e65dc27ee64bd9a09960f0207d67d6" transform="scale(0.2922666666666666,0.2933333333333332)">
<image x="0" y="0" p:name="image" id="6de4c15b12c646f488ac3d5aae4d1e57" xlink:href="Redmine_logo_0.png" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" height="264"/>
</g>
</g>
</defs>
<use xlink:href="#2c0e9a52c606437b88f625d5b0955327" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(1, 1)" p:filter="url(#9226019ae5e04159af9940d876003180)" style="opacity: 0.6; visibility: hidden; display: none;" p:name="bgCopy" id="48511ab8444f4ae999118c40e28f1c5f"/>
<use xlink:href="#2c0e9a52c606437b88f625d5b0955327" xmlns:xlink="http://www.w3.org/1999/xlink"/>
</g></g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:PlainTextV2" id="3394cc3e147b480cbce1c5428eaf7287" transform="matrix(1,0,0,1,420,530)"><p:metadata><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="width"><![CDATA[100,0]]></p:property><p:property name="fixedWidth"><![CDATA[false]]></p:property><p:property name="label"><![CDATA[Fig 1. Deployment Architecture]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textFont"><![CDATA[Ubuntu|normal|normal|24px|none]]></p:property><p:property name="textAlign"><![CDATA[0,0]]></p:property></p:metadata>
<rect x="0" y="0" style="fill: none; stroke: none; visibility: hidden; display: none;" p:name="bgRect" id="dcc2b054036b4902877cecf401ac0a06" width="0" height="0"/>
<text xml:space="preserve" p:name="text" id="4ce003e50dc64f21b88d11d560873ddf" style="fill: rgb(0, 0, 0); fill-opacity: 1; font-family: Ubuntu; font-size: 24px; font-weight: normal; font-style: normal; text-decoration: none;"><tspan x="0" y="0">Fig 1. Deployment Architecture</tspan></text>
</g></Content></Page></Pages></Document>