Extraindo Imagens do Serviço Registry durante a Implantação
Descubra como criar um segredo de registro do Docker e como especificar a imagem a ser extraída do Oracle Cloud Infrastructure Registry (junto com o segredo do Docker a ser usado) durante a implantação de um aplicativo em um cluster criado com o Kubernetes Engine (OKE).
Durante a implantação de um aplicativo em um cluster do Kubernetes, geralmente você vai querer que uma ou mais imagens sejam extraídas de um registro do Docker. No arquivo de manifesto do aplicativo, você especifica as imagens a serem extraídas, o registro do qual elas serão extraídas e as credenciais a serem usadas ao extrair as imagens. O arquivo de manifesto também é conhecido como uma especificação de pod ou como arquivo deployment.yaml (embora outros nomes de arquivos sejam permitidos).
Para que o aplicativo extraia imagens que residem no Oracle Cloud Infrastructure Registry, é necessário executar duas etapas:
- É preciso usar o kubectl para criar um segredo de registro do Docker. O segredo contém as credenciais do Oracle Cloud Infrastructure a serem usadas ao extrair a imagem. Ao criar segredos, a Oracle recomenda expressamente que você use a versão mais recente do kubectl (consulte a documentação do kubectl).
- Especifique a imagem a ser extraída do Oracle Cloud Infrastructure Registry, incluindo o local do repositório e o segredo de registro do Docker a ser usado no arquivo de manifesto do aplicativo.
Observe que você pode configurar os clusters para só permitir a extração de imagens do Oracle Cloud Infrastructure Registry que tenham sido assinadas por chaves de criptografia principais específicas incluídas em uma política de verificação de imagem (consulte Impondo o Uso de Imagens Assinadas no Registro).
Para criar um segredo de registro do Docker:
-
Se você ainda não tiver feito isso, siga as etapas para configurar o arquivo de configuração kubeconfig do cluster e (se necessário) defina a variável de ambiente KUBECONFIG para apontar para o arquivo. Observe que você deve configurar seu próprio arquivo kubeconfig. Não é possível acessar um cluster usando um arquivo kubeconfig que outro usuário tenha configurado. Consulte Configurando o Acesso ao Cluster.
-
Em uma janela de terminal, digite:
kubectl create secret docker-registry <secret-name> --docker-server=<region-key>.ocir.io --docker-username=<tenancy-namespace>/<oci-username> --docker-password='<oci-auth-token>' --docker-email=<email-address>
em que:
<secret-name>
é o nome à sua escolha, que você usará no arquivo de manifesto para fazer referência ao segredo. Por exemplo,ocirsecret
<region-key>
é a chave da região do Oracle Cloud Infrastructure Registry que você está usando. Por exemplo,iad
. Consulte Disponibilidade por Região.ocir.io
é o nome do Oracle Cloud Infrastructure Registry.<tenancy-namespace>
é a string de namespace do serviço Object Storage gerada automaticamente da tenancy contendo o repositório do qual o aplicativo deve extrair a imagem (conforme mostrado na página Informações da Tenancy). Por exemplo, o namespace da tenancy acme-dev pode seransh81vru1zp
. Observe que, para algumas tenancies mais antigas, a string de namespace pode ser igual ao nome da tenancy com todas as letras minúsculas (por exemplo,acme-dev
).<oci-username>
é o nome de usuário a ser usado ao extrair a imagem. O nome do usuário deve ter acesso à tenancy especificada por<tenancy-name>
. Por exemplo,jdoe@acme.com
Se a sua tenancy for federada com Oracle Identity Cloud Service, use o formato
<domain-name>/<oci-username>
. Para usuários federados, o<domain-name>/<oci-username>
é exibido no menu Perfilna Console. Por exemplo, se sua tenancy for federada com o Oracle Identity Cloud Service e seu nome de usuário for
jdoe@acme.com
, digiteoracleidentitycloudservice/jdoe@acme.com
'<oci-auth-token>'
é o token de autenticação do usuário especificado por<oci-username>
. Por exemplo,k]j64r{1sJSSF-;)K8
. Se o token de autenticação contiver alguns caracteres especiais (como o parêntese neste exemplo), que geralmente é o caso, coloque o token de autenticação entre aspas simples. Caso contrário, as aspas simples não serão necessárias.<email-address>
é um endereço de e-mail. Um endereço de e-mail é obrigatório, mas não importa o que você especificar. Por exemplo,jdoe@acme.com
Observe que as strings que contêm alguns caracteres especiais (como parênteses) devem estar entre aspas simples.
Por exemplo, ao combinar os exemplos anteriores, você pode inserir:
kubectl create secret docker-registry ocirsecret --docker-server=phx.ocir.io --docker-username=ansh81vru1zp/jdoe@acme.com --docker-password='k]j64r{1sJSSF-;)K8' --docker-email=jdoe@acme.com
Depois de criar o segredo do Docker, você pode fazer referência a ele no arquivo de manifesto do aplicativo.
Para especificar a imagem a ser extraída do Oracle Cloud Infrastructure Registry junto com o segredo do Docker a ser usado durante a implantação de um aplicativo em um cluster:
- Abra o arquivo de manifesto do aplicativo em um editor de texto.
-
Adicione as seguintes seções ao arquivo de manifesto:
- Adicione uma seção
containers
que especifique o nome e o local do contêiner que você deseja extrair do Oracle Cloud Infrastructure Registry com outros detalhes de implantação. - Adicione uma seção
imagePullSecrets
ao arquivo de manifesto que especifique o nome do segredo do Docker que você criou para acessar o Oracle Cloud Infrastructure Registry.
Este é um exemplo da possível aparência do manifesto quando você adicionar as seções
containers
eimagePullSecrets
:apiVersion: v1 kind: Pod metadata: name: ngnix-image spec: containers: - name: ngnix image: phx.ocir.io/ansh81vru1zp/project01/ngnix-lb:latest imagePullPolicy: Always ports: - name: nginx containerPort: 8080 protocol: TCP imagePullSecrets: - name: ocirsecret
- Adicione uma seção
- Salve e feche o arquivo de manifesto.