automation-suite
2022.4
false
- Visão geral
- Requisitos
- Instalação
- Perguntas e respostas: modelos de implantação
- Configuração das máquinas
- Configuração do balanceador de carga
- Configuração do DNS
- Como configurar o Microsoft SQL Server
- Configuração dos certificados
- Instalação online de produção pronta para alta disponibilidade de vários nós
- Instalação offline de produção pronta para alta disponibilidade de vários nós
- Baixando os pacotes de instalação
- Parâmetros do install-uipath.sh
- Como habilitar o High Availability Add-on do Redis para o cluster
- Arquivo de configuração do Document Understanding
- Adicionando um nó de agente dedicado com suporte a GPU
- Conexão do aplicativo Task Mining
- Adição de um nó de agente dedicado ao Task Mining
- Pós-instalação
- Administração de cluster
- Gerenciando produtos
- Gerenciamento do cluster no ArgoCD
- Configuração do servidor NFS externo
- Automatizado: habilitando o backup no cluster
- Automatizado: desabilitando o backup no cluster
- Automatizado, online: restaurando o cluster
- Automatizado, offline: restaurando o cluster
- Manual: habilitando o backup no cluster
- Manual: desabilitando o backup no cluster
- Manual, online: restaurando o cluster
- Manual, offline: restaurando o cluster
- Configuração adicional
- Migrating objectstore from persistent volume to raw disks
- Monitoramento e alertas
- Migração e atualização
- Opções de migração
- Etapa 1: mover os dados da organização do Identity, de independente para o Automation Suite
- Etapa 2: restauração do banco de dados de produtos independente
- Etapa 3: backup do banco de dados da plataforma no Automation Suite
- Etapa 4: mesclando organizações no Automation Suite
- Etapa 5: atualização das strings de conexão do produto migradas
- Etapa 6: migração do Insights independente
- Etapa 7: exclusão do tenant padrão
- B) Migração de um único tenant
- Configuração específica do produto
- Melhores práticas e manutenção
- Solução de problemas
- Como solucionar problemas dos serviços durante a instalação
- Como desinstalar o cluster
- Como limpar os artefatos offline para melhorar o espaço em disco
- Como limpar os dados do Redis
- Como habilitar o registro em log do Istio
- Como limpar logs manualmente
- Como limpar logs antigos armazenados no bucket do sf-logs
- Como desabilitar os logs de streaming para o AI Center
- Como depurar instalações do Automation Suite com falha
- Como excluir imagens do instalador antigo após a atualização
- Como limpar automaticamente instantâneos do Longhorn
- Como desabilitar o descarregamento de soma de verificação do TX
- Como lidar com cifras fracas no TLS 1.2
- Não é possível executar uma instalação offline no SO RHEL 8.4
- Erro ao baixar o pacote
- A instalação offline falha devido a um binário ausente
- Problema de certificado na instalação offline
- First installation fails during Longhorn setup
- Erro de validação da string de conexão ao SQL
- Verificação de pré-requisito para o módulo iscsid do selinux falha
- Azure disk not marked as SSD
- Falha após a atualização do certificado
- Automation Suite not working after OS upgrade
- O Automation Suite requer que Backlog_wait_time seja definido como 1
- Não é possível montar o volume devido a não estar pronto para cargas de trabalho
- O RKE2 falha durante a instalação e atualização
- Falha ao carregar ou baixar dados no objectstore
- PVC resize does not heal Ceph
- Falha no redimensionamento do PVC do Objectstore
- Pod do Rook Ceph ou Looker travado no estado Init
- Erro de anexo de volume StatefulSet
- Falha ao criar volumes persistentes
- Patch de reclamação de armazenamento
- Falha de backup devido ao erro TooManySnapshots
- Todas as réplicas do Longhorn estão com falha
- Configurando um intervalo de tempo limite para os portais de gerenciamento
- Atualizar as conexões de diretório subjacentes
- Não é possível fazer login após a migração
- kinit: não é possível encontrar o KDC para o realm <AD Domain> ao obter credenciais iniciais
- kinit: o Keytab não contém chaves adequadas para *** ao obter credenciais iniciais
- A operação do GSSAPI falhou com erro: um código de status inválido foi fornecido (as credenciais do cliente foram revogadas).
- Alarme recebido para tarefa Kerberos-tgt-update com falha
- Provedor SSPI: servidor não encontrado no banco de dados Kerberos
- Falha do login para o usuário <ADDOMAIN><aduser> Motivo: a conta está desabilitada.
- ArgoCD login failed
- Falha ao obter a imagem do sandbox
- Os pods não são exibidos na UI do ArgoCD
- Falha de teste do Redis
- O servidor RKE2 falha ao iniciar
- Segredo não encontrado no namespace da UiPath
- Após a instalação inicial, o aplicativo ArgoCD entrou no estado Em andamento
- Pods de MongoDB em CrashLoopBackOff ou provisionamento de PVC pendente após exclusão
- Inconsistência inesperada; execute o fsck manualmente
- MongoDB degradado ou aplicativos de negócios após a restauração do cluster
- Operador de autocura ausente e repositório Sf-k8-utils ausente
- Serviços não íntegros após restauração ou reversão do cluster
- Pod RabbitMQ preso em CrashLoopBackOff
- Prometheus no estado CrashloopBackoff com erro de falta de memória (OOM)
- Métricas Ceph-rook ausentes nos painéis de monitoramento
- Os pods não podem se comunicar com o FQDN em um ambiente de proxy
- O Document Understanding não está no menu de navegação esquerdo do Automation Suite
- Status de Falha ao criar uma sessão de rotulagem de dados
- Status de Falha ao tentar implantar uma habilidade de ML
- Trabalho de migração falha no ArgoCD
- Reconhecimento de escrita com o Extrator de formulários inteligente não está funcionando
- Usando a ferramenta de diagnóstico do Automation Suite
- Usando o pacote de suporte do Automation Suite
- Exploração de logs
Operador de autocura ausente e repositório Sf-k8-utils ausente
Importante :
A tradução automática foi aplicada parcialmente neste conteúdo.
Guia de instalação do Automation Suite
Last updated 3 de dez de 2024
Operador de autocura ausente e repositório Sf-k8-utils ausente
Esse problema faz com que as cargas de trabalho entrem no estado
ImagePullBackOff
ou ErrImagePull
com o seguinte erro:
Failed to pull image "sf-k8-utils-rhel:<tag>": rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/library/sf-k8-utils-rhel:<tag>": failed to resolve reference "docker.io/library/sf-k8-utils-rhel:<tag>": failed to do request: Head "https://localhost:30071/v2/library/sf-k8-utils-rhel/manifests/<tag>?ns=docker.io": dial tcp [::1]:30071: connect: connection refused
OR
Failed to pull image "self-heal-operator:<tag>": rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/library/self-heal-operator:<tag>": failed to resolve reference "docker.io/library/self-heal-operator:<tag>": failed to do request: Head "https://localhost:30071/v2/library/self-heal-operator/manifests/<tag>?ns=docker.io": dial tcp [::1]:30071: connect: connection refused
Failed to pull image "sf-k8-utils-rhel:<tag>": rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/library/sf-k8-utils-rhel:<tag>": failed to resolve reference "docker.io/library/sf-k8-utils-rhel:<tag>": failed to do request: Head "https://localhost:30071/v2/library/sf-k8-utils-rhel/manifests/<tag>?ns=docker.io": dial tcp [::1]:30071: connect: connection refused
OR
Failed to pull image "self-heal-operator:<tag>": rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/library/self-heal-operator:<tag>": failed to resolve reference "docker.io/library/self-heal-operator:<tag>": failed to do request: Head "https://localhost:30071/v2/library/self-heal-operator/manifests/<tag>?ns=docker.io": dial tcp [::1]:30071: connect: connection refused
Para corrigir esse problema, execute o script a seguir em todos os nós do cluster, um por um.
#!/bin/bash
export KUBECONFIG=${KUBECONFIG:-/etc/rancher/rke2/rke2.yaml}
export PATH=$PATH:/var/lib/rancher/rke2/bin:${SCRIPT_DIR}/Fabric_Installer/bin:/usr/local/bin
function get_docker_registry_url() {
local rancher_registries_file="/etc/rancher/rke2/registries.yaml"
config=$(cat < ${rancher_registries_file} | grep -A1 "configs:"|tail -n1| awk '{print $0}'|tr -d ' '|tr -d '"')
url="${config::-1}"
echo "${url}"
}
function get_docker_registry_credentials() {
local key="$1"
local rancher_registries_file="/etc/rancher/rke2/registries.yaml"
value=$(cat < ${rancher_registries_file} | grep "$key:" | cut -d: -f2 | xargs)
echo "${value}"
}
function get_cluster_config() {
local key=$1
# the go template if prevents it from printing <no-value> instead of empty strings
value=$(kubectl get secret service-cluster-configurations \
-o "go-template={{if index .data \"${key^^}\"}}{{index .data \"${key^^}\"}}{{end}}" \
-n uipath-infra --ignore-not-found) || true
echo -n "$(base64 -d <<<"$value")"
}
function update_image_tag() {
username=$(get_docker_registry_credentials username)
password=$(get_docker_registry_credentials password)
url=$(get_docker_registry_url)
images=(self-heal-operator sf-k8-utils-rhel)
for image in ${images[@]}; do
echo "Start checking available $image tag"
tag=$(curl -u $username:$password -X GET https://${url}/v2/$image/tags/list -k -q -s | jq -rc .tags[0] )
if [[ "${tag}" != "null" ]]; then
echo "$image with tag ${tag} found..."
podman login ${url} --username $username --password $password --tls-verify=false
podman pull ${url}/${image}:${tag} --tls-verify=false
podman tag ${url}/${image}:${tag} ${url}/uipath/${image}:${tag}
podman tag ${url}/${image}:${tag} ${url}/library/${image}:${tag}
podman push ${url}/uipath/${image}:${tag} --tls-verify=false
podman push ${url}/library/${image}:${tag} --tls-verify=false
echo "$image is retag and push to docker registry"
else
echo "no tag available for $image"
fi
done
}
function validate_rke2_registry_config() {
local rancher_registries_file="/etc/rancher/rke2/registries.yaml"
local endpoint_present="false"
endpoint=$(cat < ${rancher_registries_file} | grep -A2 "docker.io:" | grep -A1 "endpoint:"|tail -n1|xargs)
if [[ -n "${endpoint}" ]]; then
endpoint_present="true"
fi
echo "${endpoint_present}"
}
function update_rke2_registry_config() {
local DOCKER_REGISTRY_URL=$(get_docker_registry_url)
local DOCKER_REGISTRY_LOCAL_USERNAME=$(get_docker_registry_credentials username)
local DOCKER_REGISTRY_LOCAL_PASSWORD=$(get_docker_registry_credentials password)
local registriesPath="/etc/rancher/rke2/registries.yaml"
local DOCKER_REGISTRY_NODEPORT=30071
echo "Create temp file with name ${registriesPath}_tmp"
cp -r ${registriesPath} ${registriesPath}_tmp
echo "Start updating ${registriesPath}"
cat > "${registriesPath}" <<EOF
mirrors:
docker-registry.docker-registry.svc.cluster.local:5000:
endpoint:
- "https://${DOCKER_REGISTRY_URL}"
docker.io:
endpoint:
- "https://${DOCKER_REGISTRY_URL}"
${DOCKER_REGISTRY_URL}:
endpoint:
- "https://${DOCKER_REGISTRY_URL}"
configs:
"localhost:${DOCKER_REGISTRY_NODEPORT}":
tls:
insecure_skip_verify: true
auth:
username: ${DOCKER_REGISTRY_LOCAL_USERNAME}
password: ${DOCKER_REGISTRY_LOCAL_PASSWORD}
EOF
}
function is_server_node() {
[[ "$(systemctl is-enabled rke2-server 2>>/dev/null)" == "enabled" ]] && echo -n "true" && return
echo "false"
}
function main() {
local is_server_node=$(is_server_node)
local install_type=$(get_cluster_config "INSTALL_TYPE")
if [[ "${install_type}" != "offline" ]]; then
echo "This script is compatible with only offline cluster. Current cluster install_type=${install_type}"
exit 0
fi
if [[ "${is_server_node}" == "true" ]]; then
echo "current node is identified as server node. Updating image tag"
update_image_tag
else
echo "current node is identified as agent node."
fi
rke2_registry_config_is_valid=$(validate_rke2_registry_config)
if [[ "${rke2_registry_config_is_valid}" == "false" ]]; then
echo "start updating rke2 config"
update_rke2_registry_config
if [[ "${is_server_node}" == "true" ]]; then
echo "Registry configuration is updated. Restarting service using command: systemctl restart rke2-server"
systemctl restart rke2-server.service
else
echo "Registry configuration is updated. Restarting service using command: systemctl restart rke2-agent"
systemctl restart rke2-agent.service
fi
else
echo "rke2 config update is not required"
fi
}
main
#!/bin/bash
export KUBECONFIG=${KUBECONFIG:-/etc/rancher/rke2/rke2.yaml}
export PATH=$PATH:/var/lib/rancher/rke2/bin:${SCRIPT_DIR}/Fabric_Installer/bin:/usr/local/bin
function get_docker_registry_url() {
local rancher_registries_file="/etc/rancher/rke2/registries.yaml"
config=$(cat < ${rancher_registries_file} | grep -A1 "configs:"|tail -n1| awk '{print $0}'|tr -d ' '|tr -d '"')
url="${config::-1}"
echo "${url}"
}
function get_docker_registry_credentials() {
local key="$1"
local rancher_registries_file="/etc/rancher/rke2/registries.yaml"
value=$(cat < ${rancher_registries_file} | grep "$key:" | cut -d: -f2 | xargs)
echo "${value}"
}
function get_cluster_config() {
local key=$1
# the go template if prevents it from printing <no-value> instead of empty strings
value=$(kubectl get secret service-cluster-configurations \
-o "go-template={{if index .data \"${key^^}\"}}{{index .data \"${key^^}\"}}{{end}}" \
-n uipath-infra --ignore-not-found) || true
echo -n "$(base64 -d <<<"$value")"
}
function update_image_tag() {
username=$(get_docker_registry_credentials username)
password=$(get_docker_registry_credentials password)
url=$(get_docker_registry_url)
images=(self-heal-operator sf-k8-utils-rhel)
for image in ${images[@]}; do
echo "Start checking available $image tag"
tag=$(curl -u $username:$password -X GET https://${url}/v2/$image/tags/list -k -q -s | jq -rc .tags[0] )
if [[ "${tag}" != "null" ]]; then
echo "$image with tag ${tag} found..."
podman login ${url} --username $username --password $password --tls-verify=false
podman pull ${url}/${image}:${tag} --tls-verify=false
podman tag ${url}/${image}:${tag} ${url}/uipath/${image}:${tag}
podman tag ${url}/${image}:${tag} ${url}/library/${image}:${tag}
podman push ${url}/uipath/${image}:${tag} --tls-verify=false
podman push ${url}/library/${image}:${tag} --tls-verify=false
echo "$image is retag and push to docker registry"
else
echo "no tag available for $image"
fi
done
}
function validate_rke2_registry_config() {
local rancher_registries_file="/etc/rancher/rke2/registries.yaml"
local endpoint_present="false"
endpoint=$(cat < ${rancher_registries_file} | grep -A2 "docker.io:" | grep -A1 "endpoint:"|tail -n1|xargs)
if [[ -n "${endpoint}" ]]; then
endpoint_present="true"
fi
echo "${endpoint_present}"
}
function update_rke2_registry_config() {
local DOCKER_REGISTRY_URL=$(get_docker_registry_url)
local DOCKER_REGISTRY_LOCAL_USERNAME=$(get_docker_registry_credentials username)
local DOCKER_REGISTRY_LOCAL_PASSWORD=$(get_docker_registry_credentials password)
local registriesPath="/etc/rancher/rke2/registries.yaml"
local DOCKER_REGISTRY_NODEPORT=30071
echo "Create temp file with name ${registriesPath}_tmp"
cp -r ${registriesPath} ${registriesPath}_tmp
echo "Start updating ${registriesPath}"
cat > "${registriesPath}" <<EOF
mirrors:
docker-registry.docker-registry.svc.cluster.local:5000:
endpoint:
- "https://${DOCKER_REGISTRY_URL}"
docker.io:
endpoint:
- "https://${DOCKER_REGISTRY_URL}"
${DOCKER_REGISTRY_URL}:
endpoint:
- "https://${DOCKER_REGISTRY_URL}"
configs:
"localhost:${DOCKER_REGISTRY_NODEPORT}":
tls:
insecure_skip_verify: true
auth:
username: ${DOCKER_REGISTRY_LOCAL_USERNAME}
password: ${DOCKER_REGISTRY_LOCAL_PASSWORD}
EOF
}
function is_server_node() {
[[ "$(systemctl is-enabled rke2-server 2>>/dev/null)" == "enabled" ]] && echo -n "true" && return
echo "false"
}
function main() {
local is_server_node=$(is_server_node)
local install_type=$(get_cluster_config "INSTALL_TYPE")
if [[ "${install_type}" != "offline" ]]; then
echo "This script is compatible with only offline cluster. Current cluster install_type=${install_type}"
exit 0
fi
if [[ "${is_server_node}" == "true" ]]; then
echo "current node is identified as server node. Updating image tag"
update_image_tag
else
echo "current node is identified as agent node."
fi
rke2_registry_config_is_valid=$(validate_rke2_registry_config)
if [[ "${rke2_registry_config_is_valid}" == "false" ]]; then
echo "start updating rke2 config"
update_rke2_registry_config
if [[ "${is_server_node}" == "true" ]]; then
echo "Registry configuration is updated. Restarting service using command: systemctl restart rke2-server"
systemctl restart rke2-server.service
else
echo "Registry configuration is updated. Restarting service using command: systemctl restart rke2-agent"
systemctl restart rke2-agent.service
fi
else
echo "rke2 config update is not required"
fi
}
main
Observação:
O script
fix_image_project_id.sh
reinicia o servidor Kubernetes (serviço rke2) e todas as cargas de trabalho em execução nos nós.
A execução do script
fix_image_project_id.sh
é necessária apenas se você usar o Automation Suite 2021.10.0, 2021.10.1, 2021.10.2, 2021.10.3 ou 2021.10.4.