IBM Cloud Docs
Acessando registros de contêiner

Acessando registros de contêiner

As imagens que são usadas pelo IBM Cloud® Code Engine são normalmente armazenadas em um registro que pode ser acessível pelo público (registro público) ou configurado com acesso limitado para um pequeno grupo de usuários (registro privado).

Um registro de contêiner, ou registro, é um serviço que armazena imagens de contêiner. Por exemplo, IBM Cloud Container Registry e Docker Hub são registros de contêineres. Um Container Registry pode ser público ou privado. Um Container Registry que é público não requer credenciais para acesso. Em contraste, o acesso a um registro privado requer credenciais.

O Code Engine requer acesso aos registros de contêineres para concluir as ações a seguir:

  • Para recuperar (ou "extrair") uma imagem de contêiner para executar um app ou tarefa
  • Para armazenar uma imagem de contêiner recém-criada como uma saída de uma construção de imagem
  • Para armazenar e recuperar arquivos locais quando uma construção é executada por meio de origem local

O Code Engine manipula muitos dos detalhes subjacentes das interações entre o sistema e o seu registro.

Para extrair as imagens de um registro, o Code Engine usa um tipo especial de segredo do Kubernetes chamado de imagePullSecret. Esse segredo de extração de imagem armazena as credenciais para acessar um registro de contêiner. Quando você adiciona acesso a um registro de contêiner com Code Engine para extrair imagens, você está criando um segredo de extração de imagem. Para obter mais informações sobre segredos de extração de imagens, consulte a documentação Kubernetes.

Tipos de registros de imagem

As imagens geralmente são armazenadas em um registro que pode ser acessado pelo público (registro público) ou configurado com acesso limitado para um pequeno grupo de usuários (registro privado).

Os registros públicos, como o Docker Hub público, podem ser usados para começar com o Docker e o Code Engine para criar seu primeiro aplicativo ou sua primeira tarefa. Mas, quando se trata de cargas de trabalho corporativas, use um registro privado, como o fornecido no IBM Cloud Container Registry para proteger suas imagens de serem usadas por usuários não autorizados. Para registros privados, use segredos de registro para garantir que as credenciais estejam disponíveis para obter acesso ao registro privado.

Tipos de registro de imagem públicos e privados
Registro Descrição
IBM Cloud Container Registry

Com esse tipo de registro, você pode configurar seu próprio repositório de imagens seguras em IBM Cloud Container Registry, onde é possível armazenar e compartilhar imagens com segurança entre os usuários.
Com o IBM Cloud Container Registry, você pode

  • Gerenciar o acesso às imagens em sua conta.
  • Usar as imagens fornecidas pelo IBM e os aplicativos de amostra, como o IBM Liberty, como uma imagem de base e adicionar seu próprio código de aplicativo a ela.
Qualquer outro registro privado

Conecte qualquer registro privado existente ao Code Engine incluindo acesso. A inclusão de acesso de forma segura salva a URL e as credenciais de seu registro em um segredo do Kubernetes.
Com os registros privados, você pode:

  • Usar registros privados existentes, independentemente de sua origem ( Docker Hub, registros de propriedade da organização ou outros registros privados na nuvem).
Docker Hub público

Use esse tipo de registro para extrair imagens públicas existentes do Docker Hub diretamente em seus aplicativos ou trabalhos Code Engine.

Importante:

  • Esse tipo de registro pode não atender aos requisitos de segurança da sua organização, como gerenciamento de acesso, verificação de vulnerabilidades ou privacidade de aplicativos.
  • Ao extrair uma imagem do Docker Hub para usar com aplicativos ou trabalhos no Code Engine, esteja ciente dos limites de taxa do Docker para usuários do plano gratuito (anônimo). Você pode ter limites de extração se receber um erro 429 que indica que você atingiu o limite da taxa de extração. Para aumentar os limites de taxa, você pode atualizar sua conta para uma assinatura Docker Pro ou Team.

Com o Docker Hub público, você pode:

  • Essas imagens podem ser consultadas diretamente quando você cria um aplicativo ou trabalho, sem necessidade de configuração adicional.
  • Inclui vários aplicativos de código aberto.

Tipos de segredos de registro

Para acessar imagens em um registro, o Code Engine usa um dos seguintes tipos de segredos de registro.

  • Code Engine managed secret (segredo gerenciado)- Se o seu registro usa um namespace IBM Cloud Container Registry que está na sua conta, você pode permitir que Code Engine crie e gerencie o segredo do registro para você. No console, esse segredo de registro criado automaticamente é chamado de Code Engine managed secret Na CLI, o nome de um segredo de registro criado automaticamente tem o formato ce-auto-icr-private-<region>.
  • Segredo gerenciado pelo usuário - Este é um segredo que você cria e gerencia. É possível acessar imagens da sua conta com uma chave de API ou utilizar um token de acesso para o registro de contêiner de sua escolha; por exemplo, o Docker Hub. Nesse caso, o segredo do registro listado no console é o nome do seu segredo do registro.

Se o seu registro for público e não exigir credenciais; por exemplo, Code Engine amostras de imagens em icr.io/codeengine ou Docker Hub público, então você não precisa de um segredo de registro. Nesse caso, o segredo do registro listado no console é None.

Configurando autoridades para registros de imagem

Se o seu registro é público, não é necessário configurar autoridades para extrair imagens. Note que extrair imagens de um registro público enquanto você está iniciando com o Code Engine é aceitável. Use um registro privado quando se tratar de suas cargas de trabalho corporativas.

De quais autoridades eu preciso?

Para determinar as autoridades que você precisa, considere os casos a seguir:

  • Ao implementar apps ou executar tarefas, o Code Engine poderá acessar automaticamente imagens que estão em sua própria conta.

  • Se desejar acessar imagens de uma conta compartilhada, outras contas da IBM Cloud ou uma conta do Docker privada, as autoridades de acesso adequadas deverão ser designadas a você.

  • Quando você implanta aplicativos ou executa trabalhos e o registro usa um espaço de nome IBM Cloud Container Registry que está na sua conta, você pode permitir que o Code Engine crie e gerencie automaticamente o segredo do registro para você, desde que a sua conta tenha as permissões necessárias, conforme descrito na tabela a seguir.

    • No console, esse segredo de registro é chamado de Code Engine managed secret Esta opção está disponível quando você usa os fluxos de trabalho Configurar imagem ou Especificar detalhes da construção para a construção de uma imagem com o Code Engine.
    • Na CLI, esse segredo de registro tem o formato ce-auto-icr-private-<region>. Esse segredo de registro é criado automaticamente quando você especifica a opção --build-source, mas não fornece a opção --registry-secret com os comandos app create, app update, job create ou job update.
Autoridades de acesso para registro de imagens
Ação Acesso de serviço do IAM Descrição
Puxar imagens Reader acesso de serviço Quando você implementar uma imagem como um aplicativo ou uma tarefa, deverá extrair a imagem de um registro. Para extrair imagens, é necessário acesso de leitura. Se o registro é público, você já tem acesso de leitura às imagens. Se o registro for privado, será necessário um segredo de registro.
Enviar imagens por push Acesso ao serviço Reader e Writer Ao construir o código-fonte, deve-se extrair a imagem para um registro. Para enviar imagens para o seu registro, você deve ter acesso de leitura e gravação e deve ter um segredo de registro.
Criar um namespace Acesso ao serviço e Reader, Writer e Manager Esta ação é suportada apenas para o IBM Cloud Container Registry.
Segredo de registro do Code Engine criado automaticamente Acesso à plataforma Administrator
Reader, Writer, e acesso ao serviço Manager
Esta ação é suportada apenas para o IBM Cloud Container Registry.

Posso usar uma ID de serviço?

Sim, é possível criar um ID de serviço e atribuir autoridades a ele. Observe que os IDs de serviço também são criados automaticamente pela IU do Code Engine quando você cria automaticamente o acesso ao seu IBM Cloud Container Registry. NÃO exclua este ID de serviço, pois você perderá o acesso às imagens no registro.

Posso acessar imagens em um registro diferente?

Sim! Aqui está como.

Posso restringir o acesso pull a um determinado registro regional ou até mesmo a um único namespace?

Sim, é possível editar a política do IAM do ID de serviço existente que restringe a função de acesso ao serviço Leitor a esse registro regional ou a um recurso de registro como um namespace. Antes de poder customizar as políticas de registro do IAM, deve-se ativar as políticas do IBM Cloud IAM para o IBM Cloud Container Registry.

Acessando imagens de uma conta pública

Se sua imagem estiver armazenada em um repositório público, como um Docker Hub público, será possível simplesmente referenciar a imagem diretamente ao implementar seu aplicativo ou executar sua tarefa. Observe que, embora o armazenamento de imagens em um registro público seja bom para começar com aplicativos e tarefas, armazene suas imagens corporativas em um registro privado.

Acessando imagens em sua própria conta por meio do console

Se você está acessando o Code Engine por meio de uma conta que você possui ou administra, então o Code Engine pode automaticamente enviar por push e extrair imagens de um namespace do IBM Cloud Container Registry em sua conta quando você criar ou atualizar apps, tarefas ou construções no console. O Code Engine pode até mesmo criar um espaço de nomes para você quando você enviar por push uma imagem. Para obter mais informações,consulte os tópicos a seguir.

Acessando imagens da sua conta com uma chave de API

Se você estiver acessando o Code Engine com a CLI, deverá primeiro criar uma chave de API do IAM e, em seguida, salvar a chave de API do IAM como acesso de registro em Code Engine.

As etapas a seguir criam uma chave de API que armazena as credenciais de um ID do usuário. Em vez de usar um ID do usuário, você pode desejar criar uma chave de API para um ID de serviço que tenha uma política de acesso de serviço do IBM Cloud IAM para o IBM Cloud Container Registry. Se você escolher autenticar um ID do usuário, certifique-se de que o usuário seja um ID funcional ou um plano para casos nos quais o usuário sai para que o Code Engine ainda possa acessar o registro.

Criando uma chave de API por meio do console

Para criar uma chave de API do IBM Cloud IAM por meio do console,

  1. Ativar Visão geral do acesso (IAM).

  2. Selecione ** Chaves API **.

  3. Clique em Criar uma chave de API do IBM Cloud.

  4. Insira um nome e uma descrição opcional para a sua chave de API e clique em Criar.

  5. Copie a chave de API ou clique em download para salvá-la.

    Você não poderá ver esta chave de API novamente. Portanto, certifique-se de gravá-la em um lugar seguro.

Agora que você criou sua chave de API, salve-a como acesso de registro.

Criando uma chave de API com a CLI

Para criar uma chave de API do IBM Cloud IAM com a CLI, execute o comando iam api-key-create. Por exemplo, para criar uma chave de API chamada cliapikey com uma descrição de My CLI API key e salvá-la em um arquivo chamado key_file, execute o seguinte comando:

ibmcloud iam api-key-create cliapikey -d "My CLI API key" --file key_file

Se você optar por não salvar sua chave em um arquivo, deverá registrar a chave de API que é exibida ao criá-la. Não será possível recuperá-la mais tarde.

Agora que você criou sua chave de API, salve-a como acesso de registro.

Acessando imagens em uma conta compartilhada

Para acessar imagens de IBM Cloud Container Registry em uma conta compartilhada, deve-se ter a autoridade adequada designada.

Se você estiver planejando implementar apps e executar tarefas por meio da conta compartilhada, o Code Engine poderá extrair ou enviar por push imagens para você ao implementar seu aplicativo ou criar sua tarefa.

Se você quiser extrair imagens da conta compartilhada para sua própria conta, então, deverá estar autorizado a acessar o IBM Cloud Container Registry.

Acessando imagens em uma conta diferente

É possível designar as políticas de acesso do IBM Cloud IAM aos usuários ou um ID de serviço para restringir permissões a namespaces ou ações de imagem de registro específicos (como push ou extração). Em seguida, crie uma chave de API e armazene essas credenciais de registro no Code Engine.

Por exemplo, para acessar imagens em outras contas da IBM Cloud, crie uma chave de API que armazene as credenciais do IBM Cloud Container Registry de um ID do usuário ou de serviço nessa conta. Em seguida, em Code Engine, use essa chave para criar acesso em sua conta.

Acessando imagens em uma conta privada do Docker Hub

Para acessar imagens em uma conta privada do Docker Hub, crie acesso de registro, fornecendo sua senha ou um token de acesso. Ao usar um token de acesso, é possível conceder e revogar o acesso à sua conta do Docker Hub mais facilmente, sem a necessidade de mudança de senha. Para obter mais informações sobre tokens de acesso e o Docker Hub, consulte Gerenciamento de tokens de acesso.

Após decidir se deve usar sua senha diretamente ou criar um token de acesso, crie seu acesso de registro.

Incluir acesso de registro no Code Engine

Para configurar o acesso a um IBM Cloud Container Registry em uma conta diferente da IBM Cloud, para extrair imagens de uma conta privada do Docker Hub ou para extrair ou enviar por push imagens usando a CLI do Code Engine, é possível usar a chave de API IBM ou a senha do Docker Hub ou o token de acesso para criar acesso de registro por meio do Code Engine para armazenar sua chave de autenticação ou o token para você.

Incluindo acesso de registro por meio do console

Antes de iniciar, crie um projeto.

  1. Depois que o projeto estiver no status Ativo, clique no nome do projeto na página Code Engine Projects.
  2. Na página Componentes, clique em Segredos e configmaps.
  3. Na página Segredos e configmaps, clique em Criar para criar seu segredo.
  4. Na página Criar segredo ou configmap, conclua as etapas a seguir:
    1. Selecione Segredo de registro e clique em Avançar.
    2. Forneça um nome; por exemplo, mysecret-registry.
    3. Especifique o registro de destino para esse segredo, como IBM Cloud Container Registry ou Docker Hub.
    4. Especifique o local do registro
    5. Especifique um nome do usuário. Se esse segredo for para IBM Cloud Container Registry, o nome do usuário será iamapikey. Se esse segredo for para o Docker Hub, ele será seu ID Docker.
    6. Insira as credenciais para o nome do usuário Para IBM Cloud Container Registry, use sua chave de API do IAM. Para o Docker Hub, é possível usar a senha do Docker Hub ou um token de acesso. Para outros registros de destino, especifique a senha ou a chave de API para o nome do usuário
    7. Clique em Criar para criar o segredo.

Agora que o seu segredo foi criado no console, acesse a página Secrets and configmaps (Segredos e mapas de configuração) para visualizar uma lista de segredos e mapas de configuração definidos. É possível aplicar filtros para customizar a lista para atender às suas necessidades

É possível incluir acesso em um registro de contêiner ao criar um aplicativo ou uma tarefa ou ao construir uma imagem. Clique em Configurar imagem e especifique a imagem do contêiner a ser executada, incluindo o registro onde a imagem é armazenada e o acesso de registro a usar para recuperar a imagem.

Incluindo acesso de registro com a CLI

A partir da versão da CLI 1.42.0, a definição e o trabalho com segredos na CLI são unificados no grupo de comandos secret grupo de comandos. Consulte os comandos ibmcloud ce secret Use a opção --format para especificar a categoria do segredo, como basic_auth, generic, hmac, ssh, tls, ou registry. Embora você possa continuar a usar o registry grupo de comando, aproveite as vantagens do grupo de comando unificado secret grupo de comando unificado. Para criar um segredo para acessar um registro de contêiner, use o comando ibmcloud ce secret create --format registry comando. Para saber mais sobre como trabalhar com segredos em Code Engine, consulte Trabalho com segredos.

Para adicionar o acesso ao hub IBM Cloud Container Registry ou Docker com a CLI, use o comando secret create --format registry comando. Esse comando requer um nome do segredo do registro, o endereço URL do servidor de registro e as informações de nome de usuário e senha para acessar o servidor de registro, além de permitir outros argumentos opcionais. Para obter uma lista completa das opções, consulte o comando ibmcloud ce secret create comando.

Por exemplo, o comando a seguir cria acesso ao registro para uma instância IBM Cloud Container Registry chamada myregistry que está no servidor de registro us.icr.io :

ibmcloud ce secret create --format registry --name myregistry --server us.icr.io --username iamapikey --password API_KEY

Saída de exemplo

Creating registry secret 'myregistry'...
OK

A tabela a seguir resume as opções que são usadas com o comando secret create --format registry neste exemplo. Para obter mais informações sobre o comando e suas opções, consulte o comando ibmcloud ce secret create comando.

Descrição do comando
Opção Descrição
--name

O nome do segredo de registro. Use um nome que seja exclusivo dentro do projeto. Esse valor é necessário.

  • O nome deve começar e terminar com um caractere alfanumérico minúscula.
    -O nome deve ter 253 caracteres ou menos e pode conter letras minúsculas, números, pontos (.) e hifens (-).
--server Insira a URL do servidor de registro. Para Container Registry, o nome do servidor é <region>.icr.io. Por exemplo, us.icr.io. Para o Docker Hub, o valor é https://index.docker.io/v1/.
--username Insira o nome do usuário para acessar o servidor de registro. Para o Container Registry, ele é iamapikey. Para o Docker Hub, ele é o seu ID do Docker.
--password Insira a senha do . Para o Container Registry, a senha é a sua chave de API. Para o Docker Hub, é possível usar a senha do Docker Hub ou um token de acesso.

Autorizando o acesso ao Container Registry com ID de serviço

Antes de ser possível incluir o acesso a um ID de serviço em uma conta diferente, deve-se primeiro autorizar o acesso ao ID de serviço.

Ao criar um ID de serviço, é possível restringir o acesso a um IBM Cloud Container Registry regional ou até mesmo a um namespace específico dentro dessa conta do IBM Cloud Container Registry.

Autorizando o acesso ao Container Registry com ID de serviço por meio do console

Para extrair ou enviar por push imagens de ou para o IBM Cloud Container Registry, deve-se criar um ID de serviço, criar uma política de acesso para o ID de serviço e, em seguida, criar uma chave de API para armazenar as credenciais.

Passo 1 Criar ou identificar um ID de serviço e autorizá-lo ao serviço IBM Cloud Container Registry

  1. Ativar Visão geral do acesso (IAM).
  2. Selecione IDs de serviço.
  3. Se você tiver um ID de serviço que queira usar, selecione-o. Caso contrário, selecione Criar, insira um nome e uma descrição e clique em Criar.
  4. A partir da página ID do Serviço, a partir da seção Políticas de acesso, selecione Assign access.
  5. Na seção Designar acesso adicional de ID de serviço,
    1. Selecione Container Registry para o tipo de acesso. Clique em Avançar.
    2. Selecione o tipo de acesso: Todos os recursos ou Recursos específicos. Se você especificar Recursos específicos, você pode adicionar atributos com base em grupo de recursos, geografia, região, tipo de recurso, ID do recurso ou nome de recurso para restringir ainda mais o acesso. Se você selecionar um determinado grupo de recursos, certitenha-se de selecionar o acesso Viewer para o acesso Grupo de Recursos. Clique em Next (Avançar).
    3. Na seção Funções e Ações, selecione o tipo de acesso que deseja conceder. Ao planejar apenas o uso de imagens para seus aplicativos e suas tarefas, selecione Leitor. Se você deseja empurrar o código-fonte e as imagens para Container Registry, então também selecione Writer. Clique em Revisar.
    4. Clique em Incluir e, em seguida, em Designar.

Etapa 2 Ativação Container Registry descoberta

Para permitir que o console do Code Engine descubra automaticamente o registro do Contêiner, deve-se autenticar o ID do serviço para o IAM Identity Service.

  1. A partir da página ID do Serviço, a partir da seção Políticas de acesso, selecione Assign access.
  2. Na seção Designar acesso adicional de ID de serviço,
    1. Selecione IAM Identity Service para o tipo de acesso. Clique em Avançar.
    2. Selecione Recursos específicos para escopo de recursos. Selecione Tipo de recurso como tipo de atributo, mantenha string igual a como operador e digite serviceid como valor. Clique em Incluir uma condição.
    3. Selecione ID do recurso como tipo de atributo, mantenha string igual a como operador e coloque o identificador do seu ID de serviço. Você pode encontrar sua ID de serviço na página Detalhes da ID de serviço ou no navegador URL ao configurá-la. Clique em Avançar.
    4. Na seção Funções e Ações, selecione Plataforma Operador de acesso. Clique em Revisar
    5. Clique em Incluir e, em seguida, em Designar.

Etapa 3 - Criando uma chave de API para um ID de serviço

Crie uma chave de API para um ID de serviço.

  1. Na página ID de serviço, selecione Chaves de API e, em seguida, Criar.

  2. Insira um nome e uma descrição opcional para a sua chave de API e clique em Criar.

  3. Copie a chave de API ou clique em download para salvá-la.

    Você não poderá ver esta chave de API novamente. Portanto, certifique-se de gravá-la em um lugar seguro.

Agora que você tem suas políticas de acesso em vigor para o seu ID de serviço e sua chave de API criada, é possível incluir acesso no Code Engine para retirar imagens do seu registro de contêiner.

Autorizando o acesso ao Container Registry com a CLI

Para extrair imagens do IBM Cloud Container Registry em uma conta diferente, deve-se criar um ID de serviço, criar políticas de acesso para o ID de serviço e, em seguida, criar uma chave de API para armazenar suas credenciais.

  1. Crie um ID de serviço do IBM Cloud IAM para o seu projeto que é usado para as políticas do IAM e as credenciais de chave de API no segredo de extração de imagem com o comando iam service-id-create. Certifique-se de fornecer ao ID de serviço uma descrição que ajude a recuperar o ID de serviço posteriormente, como a inclusão do nome do projeto. Para obter uma listagem completa do comando iam service-id-create e suas opções, consulte o comando ibmcloud iam service-id-create.

    Por exemplo, o comando a seguir cria um ID de serviço chamado codeengine-myproject-id com a descrição Service ID for IBM Cloud Container Registry in Code Engine project myproject:

    ibmcloud iam service-id-create codeengine-myproject-id --description "Service ID for IBM Cloud Container Registry in Code Engine project my proj"
    
  2. Crie uma política do IBM Cloud IAM customizada para o seu ID de serviço que concede acesso ao IBM Cloud Container Registry com o comando iam service-policy-create. Para obter uma listagem completa do comando iam service-policy-create e suas opções, consulte o comando ibmcloud iam service-policy-create.

    Por exemplo, o comando a seguir cria uma política para o ID de serviço codeengine-myproject-id com a função de Reader:

    ibmcloud iam service-policy-create codeengine-myproject-id --roles Reader --service-name container-registry
    

    A tabela a seguir resume as opções que são usadas com o comando iam service-policy-create neste exemplo. Para obter mais informações sobre o comando e suas opções, consulte o comando ibmcloud iam service-policy-create comando.

    componentes do comando iam service-policy-create
    Opção Descrição
    <service_ID> Obrigatório. Substitua com o ID de serviço do codeengine-<project_name>-id que você criou anteriormente.
    --roles <service_access_role> Obrigatório. Insira a função de acesso ao serviço para o IBM Cloud Container Registry para o qual você deseja definir o escopo para o acesso de ID de serviço. Os valores possíveis são Reader, Writer e Manager. Se você estiver fazendo pull de imagens, o acesso de Reader é suficiente. Para obter mais informações, consulte Configurando autoridades para registros de imagem.
    --service-name <container-registry> Obrigatório. Insira container-registry para criar uma política do IAM para o IBM Cloud Container Registry.
  3. Crie uma política de serviço customizada para permitir o acesso ao serviço iam-identity para que o Code Engine possa recuperar a chave de API para o seu ID de serviço com o comando iam service-policy-create.

    Por exemplo, crie uma política para o ID de serviço codeengine-myproject-id com a função de Operator:

    ibmcloud iam service-policy-create codeengine-myproject-id --roles Operator --service-name iam-identity
    

    A tabela a seguir resume as opções que são usadas com o comando iam service-policy-create neste exemplo. Para obter mais informações sobre o comando e suas opções, consulte o comando ibmcloud iam service-policy-create comando.

    componentes do comando iam service-policy-create
    Opção Descrição
    <service_ID> Obrigatório. Substitua com o ID de serviço do codeengine-<project_name>-id que você criou anteriormente.
    --roles <platform_access_role> Obrigatório. Insira a função de acesso à plataforma para a qual você deseja definir o escopo do acesso de ID de serviço. Os valores possíveis são Administrator, Editor, Operator e Viewer. Seu ID de serviço requer Operator ou superior.
    --service-name <iam-identity> Obrigatório. Insira iam-identity para criar uma política do IAM para os serviços de identificação do IAM.
  4. Crie uma chave de API para o ID de serviço com o comando iam service-api-key-create. Para obter uma listagem completa do comando iam service-api-key-create e suas opções, consulte o comando ibmcloud iam service-api-key-create. Nomeie a chave de API semelhante ao seu ID de serviço, e inclua o ID de serviço que você criou anteriormente, codeengine-<project_name>-id. Certifique-se de dar à chave de API uma descrição que ajuda a recuperar a chave posteriormente.

    Por exemplo, o comando a seguir cria uma chave chamada codeengine-myproject-key para a ID de serviço codeengine-myproject-id com uma descrição de API key for service ID codeengine-myproject-id for Code Engine myproject:

    ibmcloud iam service-api-key-create codeengine-myproject-key codeengine-myproject-id --description "API key for service ID codeengine-myproject-id for Code Engine myproject"
    

    Saída de exemplo

    Please preserve the API key! It cannot be retrieved after it's created.
    
    Name          codeengine-myproject-key
    Description   API key for service ID codeengine-myproject-id for Code Engine myproject
    Bound To      crn:v1:bluemix:public:iam-identity::a/1bb222bb2b33333ddd3d3333ee4ee444::serviceid:ServiceId-ff55555f-5fff-6666-g6g6-777777h7h7hh
    Created At    2019-02-01T19:06+0000
    API Key       i-8i88ii8jjjj9jjj99kkkkkkkkk_k9-llllll11mmm1
    Locked        false
    UUID          ApiKey-222nn2n2-o3o3-3o3o-4p44-oo444o44o4o4
    

    Você não poderá ver esta chave de API novamente. Portanto, certifique-se de gravá-la em um lugar seguro.

    Agora que você tem suas políticas de acesso em vigor para o seu ID de serviço e sua chave de API criada, é possível incluir acesso no Code Engine para retirar imagens do seu registro de contêiner.

Controlando o acesso às cargas de trabalho do Container Registry para Code Engine

Suponha que você deseja controlar o acesso ao IBM Cloud Container Registry quando Code Engine extrai imagens. Por exemplo, você deseja controlar o acesso ao Container Registry para endereços IP específicos Considere as seguintes abordagens.

  • Use uma restrição baseada em contextos Ao usar uma restrição baseada em contexto, se os endereços IP para seu projeto do Code Engine mudarem, não será necessário mudar seu acesso. É possível restringir o acesso ao Container Registry para uma zona de rede, em que sua zona de rede inclui Code Engine e qualquer coisa que requer acesso ao registro.

  • Desative o acesso público ao IBM Cloud Container Registry e certifique-se de que o Code Engine use os terminais privados em vez dos terminais públicos. Consulte Protegendo sua conexão com o Container Registry.

  • Para controlar o acesso por um intervalo de IP específico, use um terminal de API para buscar os endereços IP para seu projeto específico do Code Engine. É importante observar que esses endereços IP estão sujeitos a mudanças e deve-se tomar as etapas apropriadas quando isso ocorrer Consulte Endereços IP públicos e privados do Code Engine e Como posso incluir meu app Code Engine em uma lista de permissões?

Considerações sobre imagens em seu cadastro

O nome de sua imagem que é usado para o seu app ou job deve estar em um dos formatos a seguir.

  • REGISTRY/NAMESPACEorDOCKERUSERorDOCKERORG/REPOSITORY:TAG onde REGISTRY e TAG são opcionais. Se REGISTRY não for especificado, o padrão será docker.io. Se TAG não for especificado, não inclua o colon (:). O padrão para TAG é latest.
  • REGISTRY/NAMESPACEorDOCKERUSERorDOCKERORG/REPOSITORY@IMAGEID onde REGISTRY é opcional. Se REGISTRY não for especificado, o padrão é docker.io e ibm como a organização Docker.
Regras para o nome da imagem
Componente Caracteres permitidos Length Regras adicionais
REGISTRY a-zA-Z0-9 -_. --__ 1-253 (0-127Periods)(label:1-63,noDashOnEnd)
NAMESPACE a-z 0-9 -_ --__ 4-30 (start/end with letterOrNumber)
DOCKERUSERorDOCKERORG a-z 0-9 4-30
REPOSITORY a-z 0-9 -_. / 2-255 (start/end with letterOrNumber)
TAG a-zA-Z0-9 -_. --__.. 0-128 (NOT start with periodOrDash)
IMAGEID a-z 0-9 : (startwith sha256: noOtherColon)

As partes do nome da imagem devem atender aos seguintes critérios.

  • REGISTRY devem ter 253 caracteres ou menos e podem conter letras minúsculas ou maiúsculas, números, períodos (.), hífens (-), e sublinhas (_). Não use um traço (.) como o último caractere. Não use mais de 127 períodos (.) e os rótulos entre eles podem ter entre 1 e 63 caracteres de comprimento.
  • NAMESPACE deve ter entre 4 e 30 caracteres e deve começar e terminar com uma letra ou número minúsante. NAMESPACE pode conter caracteres alfanuméricos minúsculos, hífens (-), e sublinhados (_).
  • DOCKERUSERorDOCKERORG pode ser usado para registros Docker em vez de NAMESPACE. Especifique o seu nome de usuário Docker ou organização Docker. Seu nome de usuário e organização do Docker deve ter entre 4 e 30 caracteres e contém apenas caracteres alfanuméricos minúsculos ou números.
  • REPOSITORY deve ter entre 2 e 255 caracteres e deve começar e terminar com uma letra ou número minúsante. REPOSITORY pode conter caracteres alfanuméricos minúsculos, barras (/), períodos (.), hífens (-), e sublinhados (_).
  • TAG deve ter entre 0 e 128 caracteres e pode conter letras minúsculas ou maiúsculas, números, períodos (.), hífens (-), e sublinhadores (_). O TAG não deve começar com um período ou traço. Se você não incluir um TAG, não inclua o colão também.
  • IMAGEID é prefixado com sha256: e pode conter letras minúsculas e números.