Pular para o conteúdo principal
Este guia o ajudará a implantar uma instância do AirysChat pronta para produção com Helm Charts. Para experimentar rapidamente os charts, siga as duas etapas abaixo. Para uma implantação em produção, certifique-se de passar os argumentos necessários para o helm usando seu arquivo values.yaml personalizado.
helm repo add airyschat https://airyschat.github.io/charts
helm install airyschat airyschat/airyschat

Pré-requisitos

  • Kubernetes 1.16+
  • Helm 3.1.0+
  • Suporte a provisionador de PV na infraestrutura subjacente
A instalação do helm criará 3 “Persistent Volume Claims” para redis, rails e postgres. Configure um “Storage Class” padrão (para PV automático) ou crie 3 “Persistent Volumes” com o tamanho de 8 GB, antes de instalar o airyschat. Se os “Persistent Volume Claims” não reivindicarem os “Persistent Volumes”, deixe o storageClassName em branco (dentro dos arquivos .yaml do PV).

Instalando o chart

Para instalar o chart com o nome da release airyschat, use o seguinte. Para implantá-lo no namespace airyschat, passe -n airyschat no comando.
helm install airyschat airyschat/airyschat -f <your-custom-values.yaml> #-n airyschat
O comando implanta o AirysChat no cluster Kubernetes na configuração padrão. A seção de parâmetros lista os parâmetros que podem ser configurados durante a instalação.
Liste todos os releases usando helm list

Desinstalando o chart

Para desinstalar/excluir a implantação airyschat:
helm delete airyschat
O comando remove todos os componentes do Kubernetes associados ao chart e exclui a release.
Volumes persistentes não são excluídos automaticamente. Eles precisam ser removidos manualmente.

Parâmetros

Parâmetros da imagem do AirysChat

NomeDescriçãoValor
image.repositoryRepositório da imagem do AirysChatairyschat/airyschat
image.tagTag da imagem do AirysChat (tags imutáveis são recomendadas)v2.16.0
image.pullPolicyPolítica de pull da imagem do AirysChatIfNotPresent

Variáveis de Ambiente do AirysChat

NomeTipoValor Padrão
env.ACTIVE_STORAGE_SERVICEServiço de armazenamento. local para disco. amazon para s3."local"
env.ASSET_CDN_HOSTDefinir se um CDN é usado para entrega de assets.""
env.INSTALLATION_ENVDefine o método de instalação do airyschat."helm"
env.ENABLE_ACCOUNT_SIGNUPtrue : permite cadastros, false : (opção padrão) desativa todos os endpoints relacionados a cadastros, api_only: desativa a interface do usuário para cadastro, mas você pode criar cadastros por meio das APIs da conta."false"
env.FORCE_SSLForçar todo acesso ao aplicativo por SSL, o padrão é definido como false."false"
env.FRONTEND_URLSubstitua pela URL que você planeja usar para o seu aplicativo."http://0.0.0.0:3000/"
env.IOS_APP_IDAltere esta variável apenas se estiver usando uma build personalizada para o aplicativo móvel."6C953F3RX2.com.airyschat.app"
env.ANDROID_BUNDLE_IDAltere esta variável apenas se estiver usando uma build personalizada para o aplicativo móvel."com.airyschat.app"
env.ANDROID_SHA256_CERT_FINGERPRINTAltere esta variável apenas se estiver usando uma build personalizada para o aplicativo móvel."AC:73:8E:DE:EB:5............"
env.MAILER_SENDER_EMAILO e-mail do qual todos os e-mails de saída são enviados.""
env.RAILS_ENVDefine o ambiente rails."production"
env.RAILS_MAX_THREADSNúmero de threads que cada worker usará."5"
env.SECRET_KEY_BASEUsado para verificar a integridade de cookies assinados. Certifique-se de definir um valor seguro.replace_with_your_super_duper_secret_key_base
env.SENTRY_DSNNome da fonte de dados do Sentry.""
env.SMTP_ADDRESSDefina seu endereço smtp.""
env.SMTP_AUTHENTICATIONValores permitidos: plain, login, cram_md5"plain"
env.SMTP_ENABLE_STARTTLS_AUTOPadrão é true."true"
env.SMTP_OPENSSL_VERIFY_MODEPode ser: none, peer, client_once, fail_if_no_peer_cert"none"
env.SMTP_PASSWORDSenha SMTP""
env.SMTP_PORTPorta SMTP"587"
env.SMTP_USERNAMENome de usuário SMTP""
env.USE_INBOX_AVATAR_FOR_BOTPersonalizações do bot"true"

Configuração de e-mail para continuidade da conversa (e-mails recebidos)

NomeTipoValor Padrão
env.MAILER_INBOUND_EMAIL_DOMAINEste é o domínio definido para os e-mails de resposta quando a continuidade da conversa está habilitada.""
env.RAILS_INBOUND_EMAIL_SERVICEDefina isso para o canal de entrada apropriado em relação aos e-mails recebidos. Valores possíveis são relay, mailgun, mandrill, postmark e sendgrid.""
env.RAILS_INBOUND_EMAIL_PASSWORDSenha para o serviço de e-mail.""
env.MAILGUN_INGRESS_SIGNING_KEYDefina se estiver usando mailgun para conversas recebidas.""
env.MANDRILL_INGRESS_API_KEYDefina se estiver usando mandrill para conversas recebidas.""

Variáveis do Postgres

NomeTipoValor Padrão
postgresql.enabledDefina como false se usar postgres externo e modifique as variáveis abaixo.true
postgresql.auth.databaseNome do banco de dados do AirysChatairyschat_production
postgresql.postgresqlHostHost do Postgres. Edite se usar postgres externo.""
postgresql.auth.postgresPasswordSenha do Postgres. Edite se usar postgres externo.postgres
postgresql.postgresqlPortPorta do Postgres5432
postgresql.auth.usernameNome de usuário do Postgres.postgres

Variáveis do Redis

NomeTipoValor Padrão
redis.auth.passwordSenha usada para o cluster redis internoredis
redis.enabledDefina como false se usar redis externo e modifique as variáveis abaixo.true
redis.hostNome do host Redis""
redis.portPorta Redis""
redis.passwordSenha Redis""
env.REDIS_TLSDefina como true se o TLS (rediss://) for necessáriofalse
env.REDIS_SENTINELSO Sentinel do Redis pode ser usado passando uma lista de hosts e portas do sentinel.""
env.REDIS_SENTINEL_MASTER_NAMEO nome mestre do sentinel do Redis é necessário ao usar o sentinel.""

Variáveis de registro (Logging)

NomeTipoValor Padrão
env.RAILS_LOG_TO_STDOUTstring"true"
env.LOG_LEVELstring"info"
env.LOG_SIZEstring"500"

Credenciais de terceiros

NomeTipoValor Padrão
env.S3_BUCKET_NAMENome do bucket S3""
env.AWS_ACCESS_KEY_IDID da chave de acesso da Amazon""
env.AWS_REGIONRegião da Amazon""
env.AWS_SECRET_ACCESS_KEYChave secreta da Amazon""
env.FB_APP_IDPara canal do facebook https://www.airyschat.com/docs/facebook-setup""
env.FB_APP_SECRETPara canal do facebook""
env.FB_VERIFY_TOKENPara canal do facebook""
env.SLACK_CLIENT_IDPara integração do slack""
env.SLACK_CLIENT_SECRETPara integração do slack""
env.TWITTER_APP_IDPara canal do twitter""
env.TWITTER_CONSUMER_KEYPara canal do twitter""
env.TWITTER_CONSUMER_SECRETPara canal do twitter""
env.TWITTER_ENVIRONMENTPara canal do twitter""

Escalonamento Automático (Autoscaling)

NomeTipoValor Padrão
web.hpa.enabledHorizontal Pod Autoscaling para o web do AirysChatfalse
web.hpa.cputhresholdLimite de CPU para o web do AirysChat80
web.hpa.minpodsNúmero mínimo de pods para o web do AirysChat1
web.hpa.maxpodsNúmero máximo de pods para o web do AirysChat10
web.replicaCountNº de pods web se o hpa não estiver habilitado1
worker.hpa.enabledHorizontal Pod Autoscaling para o worker do AirysChatfalse
worker.hpa.cputhresholdLimite de CPU para o worker do AirysChat80
worker.hpa.minpodsNúmero mínimo de pods para o worker do AirysChat2
worker.hpa.maxpodsNúmero máximo de pods para o worker do AirysChat10
worker.replicaCountNº de pods worker se o hpa não estiver habilitado1

Instalar com parâmetros personalizados

Especifique cada parâmetro usando o argumento --set key=value[,key=value] no helm install. Por exemplo,
helm install my-release \
  --set env.FRONTEND_URL="chat.yourdomain.com"\
    airyschat/airyschat
O comando acima define a URL do frontend do servidor AirysChat para chat.yourdomain.com. Como alternativa, um arquivo YAML que especifica os valores para os parâmetros pode ser fornecido durante a instalação do chart. Por exemplo,
helm install my-release -f values.yaml airyschat/airyschat
Você pode usar o arquivo values.yaml padrão.

Postgres

O PostgreSQL é instalado junto com o chart se você escolher a configuração padrão. Para usar um BD Postgres externo, defina postgresql.enabled como false e defina as variáveis na seção do Postgres acima.

Redis

O Redis é instalado junto com o chart se você escolher a configuração padrão. Para usar um BD Redis externo, defina redis.enabled como false e defina as variáveis na seção do Redis acima.

Escalonamento Automático

Para habilitar o escalonamento horizontal de pods, defina web.hpa.enabled e worker.hpa.enabled como true. Certifique-se também de descomentar os valores em, resources.limits e resources.requests. Isso pressupõe que o seu cluster k8s já tenha um metrics-server. Caso contrário, implante o metrics-server com o seguinte comando.
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

Atualizando

Faça helm repo update e verifique a versão dos charts que será instalada. Os Helm charts seguem o versionamento semântico, portanto, se a versão MAIOR (MAJOR) for diferente da versão instalada, pode haver alterações de quebra (breaking changes). Consulte o changelog antes de atualizar.
# atualizar repositórios helm
helm repo update
# listar a versão instalada atualmente
helm list
# mostrar a versão mais recente dos charts que será instalada
helm search repo airyschat
# se for uma atualização de versão maior, consulte o changelog antes de prosseguir
helm upgrade airyschat airyschat/airyschat -f <your-custom-values>.yaml

Solução de problemas

pod has unbound immediate PersistentVolumeClaims

Certifique-se de que os “Persistent Volume Claims” possam ser satisfeitos. Consulte pré-requisitos.

ActionController::InvalidAuthenticityToken HTTP Origin header

ActionController::InvalidAuthenticityToken HTTP Origin header (https://mydomain.com) didn't match request.base_url (http://mydomain.com)
Se você estiver recebendo o erro acima ao tentar acessar o painel de superadmin, configure seu ingress controller para encaminhar o protocolo da solicitação de origem. Para o ingress nginx, você pode fazer isso definindo a configuração proxy_set_header X-Forwarded-Proto https;. Consulte esta issue para saber mais.