O componente aliyun-acr-credential-helper permite baixar imagens privadas sem senha de instâncias do Container Registry Personal Edition e Enterprise Edition para um cluster Kubernetes autogerenciado. Este tópico descreve como usar o aliyun-acr-credential-helper para baixar uma imagem privada sem senha em dois cenários.
Pré-requisitos
Seu cluster Kubernetes autogerenciado deve estar conectado a um cluster registrado no ACK One.
Notas de uso
O componente aliyun-acr-credential-helper lê a configuração do ConfigMap acr-configuration no namespace kube-system de um cluster ACK e baixa as imagens privadas. Após configurar o componente aliyun-acr-credential-helper, ele gera um Secret no cluster e o associa à service account especificada no ConfigMap acr-configuration. Por padrão, todos os pods que usam essa service account utilizam o Secret gerado para baixar imagens sem senha.
Ao criar uma service account para implantar aplicações, como Helm charts, aguarde a associação dela ao secret gerado pelo aliyun-acr-credential-helper. Recomendamos usar o recurso webhook para injetar o secret na service account antes de baixar as imagens.
A tabela a seguir descreve as limitações de uso do componente aliyun-acr-credential-helper para baixar imagens privadas sem senha.
Parâmetro | Descrição |
Espelhamento |
|
Versão do cluster e do Kubernetes |
|
Precauções
Item | Precaução |
imagePullSecrets |
|
ServiceAccount |
|
Região | Verifique se as imagens privadas desejadas residem na mesma região do seu cluster ACK. Por padrão, só é possível baixar imagens privadas de instâncias do Container Registry localizadas na mesma região do cluster ACK. Para baixar imagens entre regiões diferentes, consulte a seção "Cenário 2: Download de imagens entre regiões" deste tópico. |
Formato YAML | Ao modificar o ConfigMap acr-configuration no namespace kube-system, mantenha a mesma indentação do exemplo fornecido neste tópico. Recomendamos colar o conteúdo YAML apresentado aqui diretamente no editor, substituir os valores correspondentes e aplicar a configuração para garantir que o formato do ConfigMap seja válido. |
Configure o componente aliyun-acr-credential-helper no cluster autogerenciado
Step 1: Grant RAM permissions to aliyun-acr-credential-helper
Usar onectl
Instale e configure o onectl na sua máquina local. Para mais informações, consulte Gerenciar clusters registrados usando onectl.
-
Execute o comando a seguir para conceder permissões RAM ao aliyun-acr-credential-helper:
onectl ram-user grant --addon aliyun-acr-credential-helperSaída esperada:
Ram policy ack-one-registered-cluster-policy-aliyun-acr-credential-helper granted to ram user ack-one-user-ce313528c3 successfully.
Usar o console
Antes de instalar o componente em um cluster externo, defina o par de AccessKey para conceder ao cluster externo as permissões necessárias para acessar recursos da Alibaba Cloud. Antes de definir o par de AccessKey, crie um usuário RAM e conceda a ele as permissões para acessar recursos da Alibaba Cloud.
-
Criar uma política personalizada. Exemplo:
{ "Version": "1", "Statement": [ { "Action": [ "cr:GetAuthorizationToken", "cr:ListInstanceEndpoint", "cr:PullRepository" ], "Resource": [ "*" ], "Effect": "Allow" } ] } -
Criar um par de AccessKey para o usuário RAM.
AvisoRecomendamos configurar políticas baseadas em par de AccessKey para controle de acesso à rede, limitando as fontes de invocação do AccessKey a ambientes de rede confiáveis para aumentar a segurança.
-
Use o par de AccessKey para criar um Secret chamado alibaba-addon-secret no cluster registrado.
O sistema usa automaticamente o par de AccessKey para acessar recursos da nuvem quando você instala o componente aliyun-acr-credential-helper.
kubectl -n kube-system create secret generic alibaba-addon-secret --from-literal='access-key-id=<your access key id>' --from-literal='access-key-secret=<your access key secret>'NotaSubstitua
<your access key id>e<your access key secret>pelo par de AccessKey obtido na etapa anterior.
Step 2: Update and configure aliyun-acr-credential-helper
Instale e configure o aliyun-acr-credential-helper antes de usá-lo para baixar imagens sem senha.
Usar onectl
Execute o comando a seguir para instalar o aliyun-acr-credential-helper:
onectl addon install aliyun-acr-credential-helper
Saída esperada:
Addon aliyun-acr-credential-helper, version **** installed.
Se o aliyun-acr-credential-helper já estiver instalado, certifique-se de que esteja na versão mais recente. Execute o comando a seguir para atualizar o aliyun-acr-credential-helper para a versão mais recente:
onectl addon upgrade aliyun-acr-credential-helper
Saída esperada:
Addon aliyun-acr-credential-helper upgraded to version ****.
Usar o console
Se o componente aliyun-acr-credential-helper já estiver instalado, verifique se ele está na versão mais recente. Caso contrário, atualize-o. A atualização não afeta seus serviços. Para mais informações, consulte Gerenciar componentes. Para mais detalhes sobre o componente aliyun-acr-credential-helper, consulte aliyun-acr-credential-helper.
Após a atualização do componente aliyun-acr-credential-helper para a versão mais recente, a função RAM da qual o componente depende é alterada. O componente fornece o parâmetro tokenMode para permitir que você especifique a função RAM da qual ele depende. Para mais informações sobre os impactos da alteração da função RAM da qual o componente depende, consulte [[Alterações do Produto] Revogar as permissões das quais o aliyun-acr-credential-helper depende](t2292520.dita#task_2292520).
Após a atualização do componente aliyun-acr-credential-helper para a versão mais recente, a função RAM da qual o componente depende é alterada. O componente fornece o parâmetro tokenMode para permitir que você especifique a função RAM da qual ele depende. Para mais informações sobre os impactos da alteração da função RAM da qual o componente depende, consulte [[Alterações do Produto] Revogar as permissões das quais o aliyun-acr-credential-helper depende](t2292520.dita#task_2292520).
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Add-ons.
Na página Add-ons, clique na aba Security, localize aliyun-acr-credential-helper e clique em Install.
-
Na página Parameters, use o valor padrão auto para o parâmetro tokenMode e clique em OK.
Após atualizar um cluster gerenciado pelo ACK para a versão mais recente, o componente aliyun-acr-credential-helper passa a oferecer o parâmetro tokenMode. Você pode modificar esse parâmetro após a instalação do componente. Após a modificação, o sistema recria o pod do componente. Clusters antigos mencionados na tabela referem-se àqueles criados antes de 3 de abril de 2023, enquanto clusters novos são aqueles criados em ou após 3 de abril de 2023. A tabela a seguir descreve os valores válidos para o parâmetro tokenMode.
tokenMode
Descrição
auto
Determina automaticamente se deve usar o modo managedRole, sendo este o valor padrão. O sistema utiliza o modo managedRole para clusters novos e o modo workerRole para clusters antigos.
managedRole
Utiliza o modo managedRole.
workerRole
Utiliza o modo workerRole.
Cenário 1: Baixar imagens privadas de instâncias do Container Registry Enterprise Edition e Personal Edition
O ACK permite baixar imagens privadas do Container Registry Enterprise Edition e Personal Edition simultaneamente, apenas do Container Registry Enterprise Edition ou apenas do Container Registry Personal Edition. Modifique o acr-configuration ConfigMap de acordo com suas necessidades de negócio. Para mais informações, consulte Configurar um componente. Exemplo:
-
Enterprise Edition
apiVersion:v1 kind:ConfigMap metadata: name:acr-configuration namespace:kube-system selfLink:/api/v1/namespaces/kube-system/configmaps/acr-configuration data: acr-api-version:"2018-12-01" acr-registry-info:|- -instanceId:"cri-xxx" # The default parameter in the console is #-instanceId. You must remove the number sign (#) and configure this parameter. regionId:"cn-hangzhou" expiring-threshold:15m service-account:default watch-namespace:all -
Personal Edition
apiVersion:v1 kind:ConfigMap metadata: name:acr-configuration namespace:kube-system selfLink:/api/v1/namespaces/kube-system/configmaps/acr-configuration data: acr-api-version:"2018-12-01" acr-registry-info:|- -instanceId:"" # The default parameter in the console is #-instanceId. You must remove the number sign (#) and retain the default value. regionId:"cn-hangzhou" expiring-threshold:15m service-account:default watch-namespace:all
Configure o ConfigMap acr-configuration usando um dos métodos a seguir:
Usar o console
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster que deseja gerenciar e escolha Configurations > ConfigMaps no painel de navegação à esquerda.
-
Na parte superior da página ConfigMap, selecione kube-system na lista suspensa Namespace. Em seguida, localize o ConfigMap acr-configuration e configure os parâmetros.
Se o ConfigMap acr-configuration não existir, crie um ConfigMap. Para mais informações, consulte Criar um ConfigMap. Para saber como atualizar ConfigMaps, consulte Gerenciar ConfigMaps.
Clique em Edit na coluna Actions para configurar chaves e valores do ConfigMap.
Clique em Edit YAML na coluna Actions para configurar chaves e valores do ConfigMap.
Usar kubectl
-
Execute o comando a seguir para acessar a página de edição do ConfigMap acr-configuration:
kubectl edit cm acr-configuration -n kube-system Configure os parâmetros do ConfigMap acr-configuration conforme suas necessidades.
Cenário 2: Baixar imagens entre regiões
Para baixar imagens de instâncias do Container Registry para um cluster registrado, quando as instâncias do Container Registry e o cluster registrado estão implantados em regiões diferentes, modifique o acr-configuration ConfigMap.
Por exemplo, para baixar imagens de instâncias do Container Registry implantadas nas regiões China (Pequim) e China (Hangzhou) simultaneamente, modifique o ConfigMap acr-configuration conforme o bloco de código a seguir. Para mais informações, consulte Configurar o componente.
data:
service-account: "default"
watch-namespace: "all"
expiring-threshold: "15m"
notify-email: "**@aliyuncs.com"
acr-registry-info: |
- instanceId: ""
regionId: cn-beijing
- instanceId: ""
regionId: cn-hangzhou
Configure o ConfigMap acr-configuration usando um dos métodos a seguir:
Usar o console
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster que deseja gerenciar e escolha Configurations > ConfigMaps no painel de navegação à esquerda.
-
Na parte superior da página ConfigMap, selecione kube-system na lista suspensa Namespace. Em seguida, localize o ConfigMap acr-configuration e configure os parâmetros.
Se o ConfigMap acr-configuration não existir, crie um ConfigMap. Para mais informações, consulte Criar um ConfigMap. Para saber como atualizar ConfigMaps, consulte Gerenciar ConfigMaps.
Clique em Edit na coluna Actions para configurar chaves e valores do ConfigMap.
Clique em Edit YAML na coluna Actions para configurar chaves e valores do ConfigMap.
Usar kubectl
-
Execute o comando a seguir para acessar a página de edição do ConfigMap acr-configuration:
kubectl edit cm acr-configuration -n kube-system Configure os parâmetros do ConfigMap acr-configuration conforme suas necessidades.