- Visão geral
- Requisitos
- Pré-instalação
- Preparação da instalação
- Baixando os pacotes de instalação
- Configuração do registro compatível com OCI
- Concessão de permissões de instalação com funções de cluster
- Concessão de permissões de instalação sem funções de cluster
- Disaster Recovery: configurações Ativo/Passivo
- Gerar o arquivo de configuração usando um assistente
- Exemplo do input.json
- Configurando um segredo do Kubernetes como um Secretstore
- Configurando o Azure Key Vault como um Secretstore
- Configurando o HashiCorp Vault como um Secretstore
- Configurando o AWS Secrets Manager como um Secretstore
- Instalação e configuração do service mesh
- Instalando e configurando a ferramenta GitOps
- Instalando o operador de segredos externos
- Implantação do Redis pelo OperatorHub
- Aplicação de configurações diversas
- Executando o uipathctl
- Instalação
- Pós-instalação
- Migração e atualização
- Monitoramento e alertas
- Administração de cluster
- Configuração específica do produto
- Configuração avançada do Orchestrator
- Configuração de parâmetros do Orchestrator
- Configuração do AppSettings
- Configuração do tamanho máximo da solicitação
- Substituição da configuração de armazenamento no nível do cluster
- Configuração do NLog
- Salvando logs do robô no Elasticsearch
- Configuração dos repositórios de credenciais
- Configuração da chave de criptografia por tenant
- Limpeza do banco de dados do Orchestrator
- Ignorar a instalação da biblioteca do host
- AI Trust Layer
- Solução de problemas
- Como desinstalar o Automation Suite
- Como resolver a falha de verificação de conectividade pré-requisito no OpenShift 4.16–4.18
- Como implantar o Insights em um cluster habilitado para FIPS
- Como desabilitar a habilitação automática do CDI no operador de GPU Nvidia
- Como codificar para URL uma senha da string de conexão do PostgreSQL
- 500 erros e limitação de taxa em solicitações do S3 no ODF
- Solução de problemas de segredos externos
- Configurando tolerâncias de driver CSI para ODF 4.20
- Solução de problemas de Temporal como um serviço
- Os pods do AI Center e do Document Understanding falham ao iniciar com a verificação do certificado TLS habilitada
- O Studio Desktop não pode carregar conectores e atividades do Integration Service
- Erros de validação de certificado TLS
- Migreção manual do ArgoCD NetworkPolicy (GHSA-47m3-95c7-g2g8)
- Configuração de solicitações e limites de recursos para cargas de trabalho criadas pelo uipathctl
Configurando o Azure Key Vault como um Secretstore
Configure o Azure Key Vault como segredo usando a autenticação de entidade de serviço no Automation Suite no OpenShift.
Você pode configurar o Azure Key Vault como um armazenamento secreto usando o método de autenticação da Entidade de Serviço.
Por padrão, todos os dados confidenciais são definidos em input.json. Você pode separar esses dados em duas partes:
input.json- contém apenas dados de configuração.- Azure Key Vault — armazena credenciais com segurança.
Você não pode armazenar caminhos de certificados ou credenciais relacionadas a certificados como parte do Secretstore.
Todas as credenciais referenciadas em input.json devem existir como segredos no Azure Key Vault antes de você configurar o Secretstore. Se alguma credencial referenciada estiver ausente no Azure Key Vault, a instalação falhará.
Usando a autenticação da entidade de serviço
Para configurar o Azure Key Vault como armazenamento secreto usando a autenticação de entidade de serviço, siga as seguintes etapas:.
-
Para que
uipathctlidentifique que as credenciais são armazenadas no Azure Key Vault, você deve adicionar a seção Secretstore ainput.json, conforme mostrado no exemplo a seguir:"secret_store": { "enabled": true, "provider_configs": [ { "type": "azure", "credentials_secret_name": "azure-service-principal-secret", "refresh_interval": "5m", "name": "azure-secret-store", "azure_kv": { "vault_url": "https://eso-azure-kv.vault.azure.net/", "tenant_id": "00000000-0000-0000-0000-000000000000" } } ] }"secret_store": { "enabled": true, "provider_configs": [ { "type": "azure", "credentials_secret_name": "azure-service-principal-secret", "refresh_interval": "5m", "name": "azure-secret-store", "azure_kv": { "vault_url": "https://eso-azure-kv.vault.azure.net/", "tenant_id": "00000000-0000-0000-0000-000000000000" } } ] } -
Crie um segredo do Kubernetes que armazene as credenciais da entidade de serviço do Azure, conforme mostrado no exemplo a seguir:
apiVersion: v1 kind: Secret metadata: name: azure-service-principal-secret type: Opaque stringData: clientId: <client-id> clientSecret: <client-secret>apiVersion: v1 kind: Secret metadata: name: azure-service-principal-secret type: Opaque stringData: clientId: <client-id> clientSecret: <client-secret> -
Implante o segredo no namespace
uipathusando o seguinte comando:kubectl apply -f azure-service-principal-secret -n uipathkubectl apply -f azure-service-principal-secret -n uipath -
Atualize os valores das credenciais em
input.jsonpara fazer referência aos segredos armazenados no Azure Key Vault usando o seguinte formato:vault/<vault-name>/<key-stored-in-the-vault>vault/<vault-name>/<key-stored-in-the-vault>Onde:
vault– palavra-chave estática.vault-name- o valor desecret_store.provider_configs[i].name(por exemplo,azure-secret-store).key-stored-in-the-vault- o nome do segredo conforme armazenado no Azure Key Vault. Antes da alteração, suas credenciais podem ser semelhantes a isto:
"admin_username": "admin", "admin_password": "password","admin_username": "admin", "admin_password": "password",Após atualizá-los para fazer referência ao Azure Key Vault, eles devem ficar assim:
"admin_username": "vault/azure-secret-store/admin-username-1234", "admin_password": "vault/azure-secret-store/admin-password-1234","admin_username": "vault/azure-secret-store/admin-username-1234", "admin_password": "vault/azure-secret-store/admin-password-1234",
A imagem a seguir mostra os segredos armazenados no Azure Key Vault.
O exemplo a seguir exibe uma configuração input.json com credenciais armazenadas no Azure Key Vault.
{
"action_center": {
"enabled": true
},
"admin_password": "vault/azure-secret-store/admin-password-1234",
"admin_username": "vault/azure-secret-store/admin-username-1234",
"aicenter": {
"enabled": true
},
"apps": {
"enabled": true
},
"argocd": {
"application_namespace": "uipath",
"project": "uipath"
},
"automation_hub": {
"enabled": true
},
"automation_ops": {
"enabled": true
},
"dataservice": {
"enabled": true
},
"documentunderstanding": {
"enabled": true
},
"exclude_components": [
"argocd",
"monitoring",
"istio",
"logging",
"gatekeeper",
"network-policies",
"velero",
"alerts",
"cert-manager",
"dapr",
"external-secrets"
],
"external_object_storage": {
"access_key": "vault/azure-secret-store/external-object-storage-access-key-1234",
"enabled": true,
"fqdn": "s3storage.mycompany.com",
"port": 443,
"region": "us-east-2",
"secret_key": "vault/azure-secret-store/external-object-storage-secret-key-1234",
"storage_type": "s3"
},
"fabric": {
"redis": {
"hostname": "redis.mycompany.com",
"password": "vault/azure-secret-store/fabric-redis-password-1234",
"port": 6380,
"tls": true
}
},
"fqdn": "automationsuite.mycompany.com",
"ingress": {
"gateway_selector": {
"istio": "ingressgateway"
},
"ingress_gateway_secret": "istio-ingressgateway-certs",
"namespace": "\u003cistio-system\u003e"
},
"insights": {
"enabled": true
},
"istioMinProtocolVersion": "TLSV1_3",
"kubernetes_distribution": "openshift",
"namespace": "uipath",
"orchestrator": {
"enabled": true
},
"platform": {
"enabled": true
},
"postgresql_connection_string_template_sqlalchemy_pyodbc": "vault/azure-secret-store/postgresql-connection-string-template-sqlalchemy-pyodbc-1234",
"processmining": {
"enabled": true
},
"profile": "default",
"registries": {
"docker": {
"password": "",
"pull_secret_name": "registry-credentials",
"pull_secret_value": "",
"url": "registry.mycompany.com",
"username": ""
},
"helm": {
"password": "",
"url": "registry.mycompany.com",
"username": ""
}
},
"secret_store": {
"enabled": true,
"secret_name": "",
"provider_configs": [
{
"type": "azure",
"credentials_secret_name": "azure-service-principal-secret",
"refresh_interval": "5m",
"name": "azure-secret-store",
"azure_kv": {
"vault_url": "https://eso-azure-kv.vault.azure.net/",
"tenant_id": "00000000-0000-0000-0000-000000000000"
}
}
]
},
"sql": {
"create_db": true,
"password": "vault/azure-secret-store/sql-password-1234",
"port": "1433",
"server_url": "sql.mycompany.com",
"username": "vault/azure-secret-store/sql-username-1234"
},
"sql_connection_string_template": "vault/azure-secret-store/sql-connection-string-template-1234",
"sql_connection_string_template_jdbc": "vault/azure-secret-store/sql-connection-string-template-jdbc-1234",
"sql_connection_string_template_odbc": "vault/azure-secret-store/sql-connection-string-template-odbc-1234",
"sql_connection_string_template_sqlalchemy_pyodbc": "vault/azure-secret-store/sql-connection-string-template-sqlalchemy-pyodbc-1234",
"storage_class": "managed-premium",
"storage_class_single_replica": "managed-premium",
"telemetry_optout": true,
"test_manager": {
"enabled": true
}
}
{
"action_center": {
"enabled": true
},
"admin_password": "vault/azure-secret-store/admin-password-1234",
"admin_username": "vault/azure-secret-store/admin-username-1234",
"aicenter": {
"enabled": true
},
"apps": {
"enabled": true
},
"argocd": {
"application_namespace": "uipath",
"project": "uipath"
},
"automation_hub": {
"enabled": true
},
"automation_ops": {
"enabled": true
},
"dataservice": {
"enabled": true
},
"documentunderstanding": {
"enabled": true
},
"exclude_components": [
"argocd",
"monitoring",
"istio",
"logging",
"gatekeeper",
"network-policies",
"velero",
"alerts",
"cert-manager",
"dapr",
"external-secrets"
],
"external_object_storage": {
"access_key": "vault/azure-secret-store/external-object-storage-access-key-1234",
"enabled": true,
"fqdn": "s3storage.mycompany.com",
"port": 443,
"region": "us-east-2",
"secret_key": "vault/azure-secret-store/external-object-storage-secret-key-1234",
"storage_type": "s3"
},
"fabric": {
"redis": {
"hostname": "redis.mycompany.com",
"password": "vault/azure-secret-store/fabric-redis-password-1234",
"port": 6380,
"tls": true
}
},
"fqdn": "automationsuite.mycompany.com",
"ingress": {
"gateway_selector": {
"istio": "ingressgateway"
},
"ingress_gateway_secret": "istio-ingressgateway-certs",
"namespace": "\u003cistio-system\u003e"
},
"insights": {
"enabled": true
},
"istioMinProtocolVersion": "TLSV1_3",
"kubernetes_distribution": "openshift",
"namespace": "uipath",
"orchestrator": {
"enabled": true
},
"platform": {
"enabled": true
},
"postgresql_connection_string_template_sqlalchemy_pyodbc": "vault/azure-secret-store/postgresql-connection-string-template-sqlalchemy-pyodbc-1234",
"processmining": {
"enabled": true
},
"profile": "default",
"registries": {
"docker": {
"password": "",
"pull_secret_name": "registry-credentials",
"pull_secret_value": "",
"url": "registry.mycompany.com",
"username": ""
},
"helm": {
"password": "",
"url": "registry.mycompany.com",
"username": ""
}
},
"secret_store": {
"enabled": true,
"secret_name": "",
"provider_configs": [
{
"type": "azure",
"credentials_secret_name": "azure-service-principal-secret",
"refresh_interval": "5m",
"name": "azure-secret-store",
"azure_kv": {
"vault_url": "https://eso-azure-kv.vault.azure.net/",
"tenant_id": "00000000-0000-0000-0000-000000000000"
}
}
]
},
"sql": {
"create_db": true,
"password": "vault/azure-secret-store/sql-password-1234",
"port": "1433",
"server_url": "sql.mycompany.com",
"username": "vault/azure-secret-store/sql-username-1234"
},
"sql_connection_string_template": "vault/azure-secret-store/sql-connection-string-template-1234",
"sql_connection_string_template_jdbc": "vault/azure-secret-store/sql-connection-string-template-jdbc-1234",
"sql_connection_string_template_odbc": "vault/azure-secret-store/sql-connection-string-template-odbc-1234",
"sql_connection_string_template_sqlalchemy_pyodbc": "vault/azure-secret-store/sql-connection-string-template-sqlalchemy-pyodbc-1234",
"storage_class": "managed-premium",
"storage_class_single_replica": "managed-premium",
"telemetry_optout": true,
"test_manager": {
"enabled": true
}
}
Configurando o ambiente de nuvem do Azure
O campo environment_type especifica qual ambiente de nuvem do Azure deve ser usado para o acesso ao Cofre de Chaves. Este campo é opcional e o padrão é PublicCloud.
Os seguintes valores são suportados:
| Valor | Description |
|---|---|
PublicCloud | Nuvem pública do Azure (padrão) |
USGovernmentCloud | Nuvem do Azure Governo dos EUA |
ChinaCloud | Nuvem Azure China |
GermanCloud | Nuvem Azure Alemanha |
O vault_url deve corresponder ao ambiente de nuvem do Azure. Por exemplo:
- Nuvem pública:
https://<vault-name>.vault.azure.net/ - Governo dos EUA:
https://<vault-name>.vault.usgovcloudapi.net/ - China:
https://<vault-name>.vault.azure.cn/ - Alemanha:
https://<vault-name>.vault.microsoftazure.de/
O exemplo a seguir mostra como configurar o campo environment_type em input.json:
"secret_store": {
"enabled": true,
"provider_configs": [
{
"type": "azure",
"credentials_secret_name": "azure-service-principal-secret",
"refresh_interval": "5m",
"name": "azure-secret-store",
"environment_type": "USGovernmentCloud",
"azure_kv": {
"vault_url": "https://eso-azure-kv.vault.azure.net/",
"tenant_id": "00000000-0000-0000-0000-000000000000"
}
}
]
}
"secret_store": {
"enabled": true,
"provider_configs": [
{
"type": "azure",
"credentials_secret_name": "azure-service-principal-secret",
"refresh_interval": "5m",
"name": "azure-secret-store",
"environment_type": "USGovernmentCloud",
"azure_kv": {
"vault_url": "https://eso-azure-kv.vault.azure.net/",
"tenant_id": "00000000-0000-0000-0000-000000000000"
}
}
]
}
Configuração do registro privado externo compatível com OCI
Ao usar um registro privado, se você não quiser configurar as credenciais de registro em input.json, pode fornecê-las como um segredo do Kubernetes, conforme mostrado no exemplo a seguir:
"registries": {
"docker": {
"pull_secret_name": "registry-credentials",
"url": "sfbrdevhelmweacr.azurecr.io"
}
}
"registries": {
"docker": {
"pull_secret_name": "registry-credentials",
"url": "sfbrdevhelmweacr.azurecr.io"
}
}
Crie o segredo do Kubernetes que armazena as credenciais de registro, conforme mostrado no exemplo a seguir:
apiVersion: v1
kind: Secret
metadata:
name: registry-credentials
type: Opaque
data:
url: base64Encode(sfbrdevhelmweacr.azurecr.io)
username: base64Encode(<registry-username>)
password: base64Encode(<registry-password>)
apiVersion: v1
kind: Secret
metadata:
name: registry-credentials
type: Opaque
data:
url: base64Encode(sfbrdevhelmweacr.azurecr.io)
username: base64Encode(<registry-username>)
password: base64Encode(<registry-password>)
Aplique o segredo no namespace uipath usando o seguinte comando:
kubectl apply -f registry-credentials.yaml -n uipath
kubectl apply -f registry-credentials.yaml -n uipath