Instalador do Sensedia Service Mesh
A fim de simplificar a instalação de todos os componentes do Sensedia Service Mesh, disponibilizamos o instalador installSensediaMesh
.
A partir da versão 1.2.0.0, o instalador está disponível em sensedia-mesh-installer.sensedia.com.
Nessa página, selecione a versão adequada e baixe o arquivo .tgz
.
Uma vez baixado o arquivo, execute os seguintes comandos para descompactá-lo e preparar os scripts a serem executados:
tar -xvzf sensedia-mesh-installer-1.2.0.0.tgz cd installer chmod +x *.sh
O instalador não foi desenvolvido para ser executado em Windows ou MacOS. Assim, alguns comandos podem não funcionar como previsto nesses sistemas operacionais. |
Para mais informações sobre como rodar o script, execute o seguinte comando:
./installSensediaMesh.sh -h
Você pode obter a versão do instalador com o seguinte comando:
./installSensediaMesh.sh -v
O script tem a seguinte estrutura:
|installSensediaMesh | ├── customer-files │ ├── prometheus │ │ └── prometheus-operator.yaml # Config file of Prometheus-Operator │ └── sensedia-mesh │ ├── helmfile.yaml # Versions of Sensedia Mesh helm charts │ ├── sensedia-mesh-manager │ │ └── values.yaml # Some default config of mesh-manager ├── default-files # directory with default files of dependencies ├── installSensediaMesh.sh # Sensedia Mesh installer ├── lib.sh # Script with general functions └── variables.sh # Variables of config customer files
Os únicos arquivos que você pode modificar são o arquivo |
Nas seções seguintes, serão apresentados exemplos de como executar o instalador para situações específicas.
Guia de instalação
Requisitos de serviços externos
MongoDB
A partir da versão 1.2.0.0, o Sensedia Service Mesh requer uma instância do MongoDB para armazenar dados de aplicação. Durante a instalação, uma conexão com o MongoDB deve ser configurada por meio dos arquivos de valores helm, como descrito na seção "Instalação personalizada".
Requisitos
-
Uma distribuição GNU/Linux para executar o instalador do Sensedia Service Mesh.
-
Um cluster Kubernetes.
-
As versões do Kubernetes suportadas são 1.21 - 1.23.
-
Acesse um cluster Kubernetes onde o Sensedia Service Mesh será instalado. Em seguida, verifique todos os requisitos com o seguinte comando:
-
./installSensediaMesh.sh -f variables.sh -a checkRequirements
-
Instale todos os binários com o seguinte comando:
sudo ./installSensediaMesh.sh -f variables.sh -a installAllBinaries
-
Quaisquer ferramentas necessárias para interagir com o seu Kubernetes ou fornecedor de ambiente em nuvem. Normalmente, isso inclui uma ferramenta de interface de linha de comando. Aqui estão alguns links úteis para obter essas ferramentas, bem como para verificar a documentação do seu fornecedor caso necessite de informações mais detalhadas:
Dependências
-
cert-manager
(o gerenciador de certificados nativo do Kubernetes). Está sendo configurado aqui pelo Helm, com configurações adicionais recomendadas pela documentação oficial. Tenha em mente que a infra-estrutura do Sensedia Mesh é atualmente suportada pela AWS.
Instale o cert-manager
com o seguinte comando:
./installSensediaMesh.sh -f variables.sh -a installCertManager
-
Para instalar todas as dependências com o instalador do Sensedia Mesh, execute o comando:
./installSensediaMesh.sh -f variables.sh -a installAllDependencies
Como alternativa, você pode instalar cada dependência individualmente com os seguintes comandos:
# Instala o Istio ./installSensediaMesh.sh -f variables.sh -a installIstio # Instala o Prometheus-Operator (instala e configura o Prometheus, o Alertmanager e o Grafana) ./installSensediaMesh.sh -f variables.sh -a installPrometheusOperator # Instala o Kiali ./installSensediaMesh.sh -f variables.sh -a installKiali # Instala o Jaeger ./installSensediaMesh.sh -f variables.sh -a installJaeger
Prometheus Operator
Se você desejar utilizar sua própria configuração para o Prometheus Operator, poderá pular a instalação padrão definindo essa variável como false
em variables.sh
:
INSTALL_PROMETHEUS_OPERATOR=false
No mesmo arquivo, você pode definir essas variáveis de acordo com a sua configuração:
PROMETHEUS_RELEASE_NAME=my-helm-release PROMETHEUS_URL="http://my-prometheus-endpoint.my-namespace:9090"
Sensedia Service Mesh
É possível realizar a instalação com as variáveis padrão ou modificando-as de acordo com os valores desejados.
Instalação padrão
Para instalar o Sensedia Service Mesh com os valores predefinidos, digite o comando abaixo no seu terminal:
./installSensediaMesh.sh -f variables.sh -a installOnlySensediaMesh
Para instalar todas as dependências (Istio, Kiali, Jaeger e Prometheus) e o Sensedia Service Mesh com os valores predefinidos, execute o seguinte comando:
./installSensediaMesh.sh -f variables.sh -a installAllServices
Instalação personalizada
Para realizar uma instalação personalizada, você pode modificar o conteúdo dos seguintes arquivos:
-
variables.sh
-
customer-files/prometheus/prometheus-operator.yaml
-
customer-files/sensedia-mesh/helmfile.yaml
-
customer-files/sensedia-mesh/sensedia-mesh-manager/values.yaml
Verifique os valores predefinidos de cada helm chart do Sensedia Service Mesh e modifique-os conforme necessário:
# Adiciona o repositório helm da Sensedia e atualiza a lista de charts # Nota: Entre em contato com a Sensedia para obter o URL do Sensedia Helm Repository. helm repo add sensedia $REPO helm repo update # Exibe os valores predefinidos do sensedia-mesh-manager helm show values sensedia/sensedia-mesh-manager --version 1.2.0 # Exibe os valores predefinidos do sensedia-mesh-operator helm show values sensedia/sensedia-mesh-operator --version 1.2.0
Não é necessário modificar o helm chart |
Seguem abaixo alguns parâmetros que você deve modificar de acordo com o seu ambiente.
-
No arquivo
customer-files/sensedia-mesh/sensedia-mesh-manager/values.yaml
:
manager:
mongodb: # parameters for MongoDB connection
host: "mesh-manager-mongodb"
port: "27017"
database: "mesh-manager"
user: "admin" # application's database user, used by mesh-manager
password: "admin"
migrationUser: "admin" # migration's database user with "dbAdmin" role, used to create the required collections and indexes for the application
migrationPassword: "admin"
mongodb: # demo feature. Creates a database automatically
auth:
rootPassword: "root" # sets the password for the root user
databases: ["mesh-manager"] # database's name
usernames: ["admin"] # initializes database with these users
passwords: ["admin"] # sets the password for the users above, respectively
Em produção, você deve desativar as configurações demo e fornecer a sua própria instância do MongoDB. Para desativar as configurações demo:
-
No arquivo
customer-files/sensedia-mesh/sensedia-mesh-manager/values.yaml
:
tags:
demo: false
Quando identificar o parâmetro que deseja alterar, basta copiá-lo para o arquivo acima mencionado e executar o seguinte comando para modificá-lo no cluster:
./installSensediaMesh.sh -f variables.sh -a installOnlySensediaMesh
-
Alternativamente, é possível instalar todas as dependências e o Sensedia Service Mesh com exceção do Istio (útil quando o Istio já existe no cluster):
# Instala Addons, cert-manager e Sensedia Mesh (com exceção do Istio) ./installSensediaMesh.sh -f variables.sh -a installAddonsAndSensediaMesh
Verificação da instalação
Para certificar-se de que as CRDs necessárias estão devidamente instaladas, execute o comando abaixo:
kubectl api-resources | grep sensedia meshes mesh management.sensedia.com/v1 true Mesh circuitbreakers cb networking.sensedia.com/v1 true CircuitBreaker externalserviceconfigs scfg,sen-scfg networking.sensedia.com/v1 true ExternalServiceConfig faultinjections fi networking.sensedia.com/v1 true FaultInjection retries rty,sen-rty networking.sensedia.com/v1 true Retry shadowtraffics sdw networking.sensedia.com/v1 true ShadowTraffic timeouts tmo networking.sensedia.com/v1 true Timeout trafficroutings tr networking.sensedia.com/v1 true TrafficRouting apiauthentications apiauth security.sensedia.com/v1 true ApiAuthentication policies plc security.sensedia.com/v1 true Policy
O seguinte comando verifica se as aplicações helm estão instaladas:
helm list -n sensedia-system NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION mesh-init sensedia-system 1 2022-03-08 16:04:25 -0300 -03 deployed sensedia-mesh-init-1.2.0 1.2.0.0 mesh-manager sensedia-system 1 2022-03-08 16:50:28 -0300 -03 deployed sensedia-mesh-manager-1.2.0 1.2.0.0 mesh-operator sensedia-system 1 2022-03-08 16:04:25 -0300 -03 deployed sensedia-mesh-operator-1.2.0 1.2.0.0
Verifica os deployments:
kubectl get deployments.apps -n sensedia-system NAME READY UP-TO-DATE AVAILABLE AGE manager 1/1 1 1 2d20h mesh-manager-mongodb 1/1 1 1 2d18h mesh-router 1/1 1 1 2d20h operator-controller-manager 1/1 1 1 2d20h web-ui 1/1 1 1 2d20h
Verifica se todos os pods estão operando:
kubectl get pods -n sensedia-system NAME READY STATUS RESTARTS AGE manager-795dc6b74b-kz78m 1/1 Running 0 2d18h mesh-manager-mongodb-79498f8997-67z6r 1/1 Running 0 2d18h mesh-router-5f6859656b-v7hb8 1/1 Running 0 2d20h operator-controller-manager-6f56cfc84-2xlzd 2/2 Running 0 2d18h web-ui-8d99468-vzxgv 1/1 Running 0 2d18h
Note que o estado do manager
e do web-ui
é Running
.
Se tudo estiver em funcionamento, prossiga para o passo seguinte; se não, tente repetir o processo ou entre em contato com o suporte da Sensedia.
Gerenciamento de secrets
O Sensedia Service Mesh não tem preferência sobre como os secrets devem ser gerenciados. Há muitas ferramentas e maneiras de o fazer. Seguem algumas das ferramentas que podem ser utilizadas para gerenciar secrets seguindo a abordagem GitOps:
-
-
Se optar por essa ferramenta, os parâmetros de configuração envolvendo informação sensível devem ser removidos do arquivo
values.yaml
e adicionados a um novo arquivo chamadosecrets.yaml
, o qual deve ser criptografado. -
Além disso, você também deverá adicionar as linhas abaixo na seção mesh-manager do arquivo
helmfile.yaml
. Em seguida, você precisará instalar ou atualizar o Sensedia Service Mesh como descrito na seção Instalação padrão.
-
secrets:
- sensedia-mesh-manager/secrets.yaml
Expondo a aplicação
A instalação do Sensedia Service Mesh não expõe a aplicação para fora do cluster Kubernetes. A razão disso é permitir que cada usuário decida qual abordagem utilizar para fazê-lo.
O ponto de entrada da aplicação é o serviço mesh-router
do namespace sensedia-system
.
Para expor a aplicação, basta expor esse serviço.
Para informações detalhadas para cada Provedor de Serviços de Nuvem, consulte as seguintes documentações:
Autenticação
O Sensedia Service Mesh requer um provedor OpenId Connect para autenticação.
Essa configuração pode ser feita no arquivo values.yaml
durante a instalação do chart.
OpenID Connect
Para o OpenID Connect, você precisará criar um novo Client no seu provedor OpenId e obter dele as seguintes informações:
-
Client Secret
-
Client Id
-
Provider URL
De posse dessas informações, basta substituir as variáveis OAuth e OpenID no arquivo customer-files/sensedia-mesh/sensedia-mesh-manager/values.yaml
, obtendo algo como:
...
manager:
oauth:
client:
# manager.oauth.client.id -- OAuth2 Client ID
id: "your-app-client-id"
# manager.oauth.client.secret -- OAuth2 Client Secret
secret: "your-app-client-secret"
openid:
# manager.openid.enabled -- Specifies whether OpenID Authentication should be enabled
enabled: true
# manager.openid.baseUrl -- OpenID Provider Issuer Base URL
baseUrl: "https://accounts.google.com"
# manager.openid.scopes -- Optional list of additional scopes
scopes: "profile;email"
# manager.openid.extraParams -- Optional list of query params used in OpenID authentication URL, key=value
extraParams: "hd=sensedia.com"
...
Note que os campos scopes
e extraParams
são opcionais.
A configuração de scopes
permite ao Sensedia Service Mesh obter o nome de usuário e o endereço de e-mail e utilizá-los para exibir informações do usuário na interface gráfica do produto.
O valor de extraParams
é específico a cada provedor OpenId.
No nosso exemplo, usamos hd=sensedia.com
para solicitar ao Google que aceite apenas contas sensedia.com
para iniciar uma sessão.
Acessando a interface Web de usuário
Obtenha o ingress mesh-manager
com este comando:
kubectl get ingress sensedia-mesh-manager -n sensedia-system NAME HOSTS ADDRESS PORTS AGE sensedia-mesh-manager manager-sensedia-mesh-api-platform-testing.sensedia-eng.com e1a0fd59-sensediasystem-se-6385-1406950746.us-east-1.elb.amazonaws.com 80, 443 43m
O host deve corresponder ao host configurado anteriormente quando da instalação do manager. Em seguida, poderá acessar a interface de usuário pelo seu navegador.
Se todo o processo tiver ocorrido bem, você verá todas as suas malhas (meshes) na tela principal.

Atualização
Atualize seu Sensedia Service Mesh para a última versão. Certifique-se de possuir as versões corretas das dependências, conforme a seção Dependências.
Este processo pressupõe que o Sensedia Service Mesh tenha sido instalado com Helm no namespace sensedia-system
.
Você pode verificar a sua instalação e a versão com o seguinte comando:
helm list -n sensedia-system
Consulte o time de suporte da Sensedia e modifique o conteúdo dos seguintes arquivos:
-
variables.sh
-
customer-files/prometheus/prometheus-operator.yaml
-
customer-files/sensedia-mesh/helmfile.yaml
-
customer-files/sensedia-mesh/sensedia-mesh-manager/values.yaml
Atualize o Helm para a versão desejada:
./installSensediaMesh.sh -f variables.sh -a installAllServices
Atualização para 1.2
A partir de agora, será necessária uma instância do MongoDB para armazenar dados de aplicação. Você precisará alterar algumas configurações, principalmente:
-
No arquivo
customer-files/sensedia-mesh/sensedia-mesh-manager/values.yaml
:
manager:
mongodb: # parameters for MongoDB connection
host: "mesh-manager-mongodb"
port: "27017"
database: "mesh-manager"
user: "admin" # application's database user, used by mesh-manager
password: "admin"
migrationUser: "admin" # migration's database user with "dbAdmin" role, used to create the required collections and indexes for the application
migrationPassword: "admin"
mongodb: # demo feature. Creates a database automatically
auth:
rootPassword: "root" # sets the password for the root user
databases: ["mesh-manager"] # database's name
usernames: ["admin"] # initializes database with these users
passwords: ["admin"] # sets the password for the users above, respectively
Em produção, você deve desabilitar as configurações demo e fornecer a sua própria instância do MongoDB. Para desabilitar as configurações demo:
-
No arquivo
customer-files/sensedia-mesh/sensedia-mesh-manager/values.yaml
:
tags:
demo: false
Se estiver atualizando da 1.1.0.0, uma indisponibilidade é prevista até que os novos gateways passem a operar. |
Consulte Atualização para os próximos passos.
Desinstalação
O instalador não solicita confirmação antes de remover os serviços.
Para se certificar de que deseja mesmo remover o Sensedia Service Mesh ou Istio, Kiali, Jaeger, Cert-Manager e o Prometheus-Operator, altere para O valor predefinido de |
Para desinstalar os componentes do Sensedia Service Mesh, execute:
./installSensediaMesh.sh -f variables.sh -a uninstallSensediaMesh
Para desinstalar Istio, Jaeger, Prometheus-Operator e Kiali, execute o seguinte comando:
./installSensediaMesh.sh -f variables.sh -a uninstallIstioAndAddons
Como os Addons estão normalmente no mesmo namespace do Istio, eles serão todos desinstalados juntamente com o Istio quando da remoção do namespace istio-system .
|
Para desinstalar todos os serviços, execute:
./installSensediaMesh.sh -f variables.sh -a uninstallAllServices