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 variables.sh e aqueles contidos no diretório customer-files. Os demais arquivos contêm configurações padrão que não devem ser alteradas para evitar problemas durante o processo de instalação ou operação do Sensedia Service Mesh.

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 sensedia-mesh-init. Ele instala as CRDs (Custom Resources Definition) importantes para o correto funcionamento do Sensedia Service Mesh.

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:

  • Helm secrets

    • 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 chamado secrets.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.

successful install
Tela principal da interface gráfica do Sensedia Service Mesh

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 true o valor da variável FORCE_UNINSTALL_SERVICES no arquivo variables.sh.

O valor predefinido de FORCE_UNINSTALL_SERVICES é false para evitar que serviços sejam removidos por acidente.

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
Thanks for your feedback!
EDIT
How useful was this article to you?