Solução de problemas para DevSecOps
Use estas dicas para ajudar a solucionar problemas que você pode encontrar ao usar o site DevSecOps.
Métodos gerais de resolução de problemas
-
Recarregue a página no caso de a IU estar lenta ou os logs falharem ao carregar.
-
Verifique se há interrupções na página de status
-
Execute o pipeline novamente..
Acionador de promoção manual
Problemas do Ambiente IBM
As execuções do pipeline são lentas devido à limitação da taxa de Git
A execução do pipeline parece mais lenta, as execuções do pipeline demoram mais para serem executadas e concluídas.
Além disso, a seguinte entrada pode ser encontrada em vários locais dos registros:
Unable to use this tool because the git API rate limit is exceeded. Please try again in <n> minutes.
Os pipelines usam internamente as solicitações da API Git (definir status de Git, criar/atualizar problemas,...). Há um limite de taxa de Git de
Para superar esse problema de limitação da taxa de Git:
- Migrar do armário de evidências Git para o armário de evidências COS (também conhecido como somente COS). Consulte a seção correspondente na documentação do site IBM Cloud.
- Use tokens diferentes Git para pipelines e/ou gatilhos.
A etapa de registro de verificação da tarefa conteinerizada falha com erro
O registro IBM Cloud oferece uma cota limitada, enviando por push muitas imagens que podem ser excedidas.
- Acesse as imagens e exclua as imagens que não são necessárias
- Execute novamente o pipeline
É possível verificar seus limites de cota e uso usando o comando a seguir:
ibmcloud cr quota
Logs não são mostrados para a etapa
Este é um problema com o ambiente Tekton.
Tente recarregar a página. Faça o download dos logs usando o botão de download
Problemas de modelo e pipeline
A tarefa foi cancelado porque a imagem base não pode ser acessada..
Verifique se as suas credenciais de artefato estão corretas Um novo token de artefato pode ser criado aqui É possível criar um segredo manualmente executando:
kubectl create secret docker-registry mysecret \
--dry-run \
--docker-server=<artifactory-server-domain> \
--docker-username=<username> \
--docker-password=<artifactory token> \
--docker-email=<email> \
-o yaml
Ele produz algo semelhante ao seguinte:
apiVersion: v1
data:
.dockerconfigjson: <your secret>
kind: Secret
metadata:
creationTimestamp: null
name: regcred
type: kubernetes.io/dockerconfigjson
Nas propriedades de pipeline, atualize o parâmetro artifactory-dockerconfigjson com o valor .dockerconfigjson .
Para obter mais informações, consulte a documentação do kubectl sobre como criar um segredo(: external).
O pipeline falha antecipadamente
Quando um pipeline falha antecipadamente com a mensagem a seguir:
Pipeline could not run, resource failed to apply - Kind: "Secret", Name: "pipeline-pull-secret" ResourceError
Nesse caso, a falha ocorreu no pipeline porque ele não foi inicializado Portanto, não há registros disponíveis.
O dockerconfig.json segredo, que extrai as imagens Docker de IBMContainer Registry, usado por este pipeline, não está correto.
Esse segredo pode estar incorreto ou a chave de API associada a esse segredo é girada ou revogada.
Gere um novo dockerconfig.json e utilize esse novo valor secreto em seu pipeline (como parâmetro do pipeline ou armazenado em Secrets Manager ).
Para gerar um novo dockerconfig.json, execute o seguinte comando:
kubectl create secret docker-registry my-registry-secret \
-o json \
--dry-run=client \
--docker-server=icr.io \
--docker-username=iamapikey \
--docker-email=john-doe@ibm.com \
--docker-password=<apikey> \
| jq -r '.data[".dockerconfigjson"]'
Em que <apikey> é sua chave de API do IBM Cloud Cloud ou uma chave de API do ID de serviço.
O pipeline não pode extrair imagens de vários repositórios de artefatos
O pipeline foi bem-sucedido em extrair imagens de um repositório, mas não de outro repositório
O pipeline falhou porque ele está configurado para extrair imagens de um único repositório
Crie manualmente um novo segredo do dockerconfigjson de artefato para suportar a autenticação em vários repositórios.
Para suportar a autenticação para extrair imagens de diversos repositório no Artifactory, gere um novo dockerconfigjson e inclua uma propriedade do ambiente artifactory-dockerconfigjson de tipo de segredo para um
ou mais pipelines
O script a seguir é uma amostra para gerar um dockerconfigjson artifactory que fornece detalhes de autenticação para dois repositórios de artefatos diferentes. Este é um script customizável
Pré-requisitos
Os comandos kubectl e jq devem estar instalados..
Etapas
-
Abra um editor de texto que ssaves arquivo em terminações de linha do modo de caractere LF (Line Feed).
-
Crie um arquivo e copie o conteúdo do seguinte script:
dockerconfig_1=$(kubectl create secret docker-registry my-registry-secret \ --output json \ --dry-run=client \ --docker-server="<artifactory_repo_host>" \ --docker-username="<email>" \ --docker-email="<email>" \ --docker-password="<artifactory_token>" \ | jq -r '.data[".dockerconfigjson"]') dockerconfig_2=$(kubectl create secret docker-registry my-registry-secret \ --output json \ --dry-run=client \ --docker-server="<second_repo_host>" \ --docker-username="<email>" \ --docker-email="<email>" \ --docker-password="<second_artifactory_token>" \ | jq -r '.data[".dockerconfigjson"]') echo $dockerconfig_1 | base64 -d > first_secret.json echo $dockerconfig_2 | base64 -d > second_secret.json new_dockerconfig=$(jq -s '.[0] * .[1]' first_secret.json second_secret.json | base64 -w0) echo ${new_dockerconfig} > final_dockerconfig.txt -
Substitua os valores de item temporário pelos detalhes de autenticação reais:
- Substitua
<artifactory_repo_host>pelo link para o primeiro repositório.. - Substitua
<artifactory_token>pelo token de autenticação do primeiro repositório. - Substitua
<email>pelo e-mail associado à autenticação.. - Substitua
<second_repo_host>pelo link para o segundo repositório.. - Substitua
<second_artifactory_token>pelo token de autenticação do segundo repositório.
- Substitua
-
Salve o arquivo .
-
Assegure que o arquivo seja salvo em um diretório com permissões de gravação.
-
Execute o script.
-
Inclua o conteúdo de
final_dockerconfig.txtcomo um segredo nas propriedades de ambiente de pipeline paraartifactory-dockerconfigjsonSe você estiver usando Secrets Manager ou Key Protect, salve o conteúdo desse arquivo usando técnicas apropriadas.
A compilação de CRA ou Docker falha devido à falta de arquivos de submódulo
Quando um estágio do pipeline, como a compilação CRA ou Docker, falha, você pode ver uma mensagem de erro semelhante à seguinte:
failed to calculate checksum of ref moby::...: failed to walk /var/lib/docker/tmp/buildkit-mount.../common-dev-assets/module-assets/ci: lstat ... no such file or directory
Este erro ocorre porque seu repositório contém submódulos d Git, mas os pipelines não clonam submódulos por padrão. Cada estágio do pipeline é executado em seu próprio contêiner e executa um novo checkout do repositório, de modo que o conteúdo do submódulo fica ausente, a menos que seja explicitamente inicializado.
Para resolver isso, você deve garantir que o submódulo Git seja inicializado em todas as etapas que o exigirem. Especificamente para CRA, você pode adicionar a inicialização do submódulo ao seu script CRA personalizado.
Por exemplo, atualize seu script para incluir:
git submodule update --init --recursive
Isso garante que o submódulo esteja disponível antes da execução do processo de compilação do CRA.
Problemas de assinatura de imagem
Se a sua tarefa de assinatura de imagem falhar, consulte a documentação de assinatura de imagem para verificar se a chave de assinatura foi gerada e armazenada corretamente
Problemas relacionados ao Dynamic Scan Stage não definidos na configuração de pipeline
A execução do Pipeline de IC falha com um erro
O erro ocorre quando a configuração de pipeline de IC não contém uma definição da tarefa a ser executada na varredura dinâmica Inclua o fragmento a seguir no .pipeline-config.yaml e customize a etapa para adequar seu aplicativo.
dynamic-scan:
dind: true
abort_on_failure: false
image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.12@sha256:ff4053b0bca784d6d105fee1d008cfb20db206011453071e86b69ca3fde706a4
script: |
#!/usr/bin/env bash
echo "Please insert script to invoke/execute dynamic scan tool like OWASP ZAP on the built and deployed application."
Para obter mais informações sobre os estágios, consulte Scripts customizados..
Obtendo suporte
- Você pode consultar o Stack Overflow para ver se outros usuários tiveram o mesmo problema. Ao usar o fórum para fazer uma pergunta, marque sua pergunta com "ibm-cloud" e "DevSecOps" para que ela seja vista pelas equipes de desenvolvimento do IBM Cloud.
- IBM Cloud o assistente de IA da IBM, que é alimentado pela watsonx, foi projetado para ajudá-lo a aprender sobre como trabalhar na IBM Cloud e criar soluções com o catálogo de ofertas disponível. Consulte Obter ajuda do assistente de IA.
- Se ainda não for possível resolver o problema, será possível abrir um caso de suporte. Para obter informações sobre a abertura de um caso de suporte ou severidades de caso e tempos de resposta, consulte Trabalhando com casos de suporte ou Direcionando casos de suporte.