Por padrão, o Elastic Container Instance (ECI) baixa imagens via https. Se o seu repositório de imagens autogerenciado usar HTTP ou um certificado autoassinado, o download das imagens falhará com um evento ErrImagePull. Adicione a anotação apropriada ao seu pod ou ImageCache para corrigir esse problema.
Pré-requisitos
Antes de começar, certifique-se de que:
O ECI consiga acessar o seu repositório de imagens autogerenciado pela rede
Cenários de falha
A tabela a seguir descreve a causa e a solução para cada cenário de falha.
|
Cenário |
Causa |
Solução |
|
O repositório autogerenciado usa HTTP |
O ECI usa HTTPS por padrão. A incompatibilidade de protocolos causa falha no download. |
Adicione a anotação |
|
O repositório autogerenciado usa HTTPS com um certificado autoassinado |
O certificado autoassinado causa falha na autenticação. |
Adicione a anotação |
Anotações
Configure o comportamento de download de imagens do ECI com as anotações a seguir. Adicione-as à seção metadata da especificação do seu pod ou do manifesto do ImageCache.
As anotações entram em vigor apenas quando um pod é criado. Adicionar ou atualizar anotações em um pod existente não surte efeito.
|
Anotação |
Formato do valor |
Descrição |
|
|
Um ou mais endereços de repositórios, separados por vírgulas. Inclua a porta se o endereço tiver uma. Exemplo: |
Instrui o ECI a baixar do repositório especificado via HTTP em vez de HTTPS. |
|
|
Um ou mais endereços de repositórios, separados por vírgulas. Inclua a porta se o endereço tiver uma. Exemplo: |
Instrui o ECI a ignorar a verificação de certificado ao baixar do repositório especificado. |
Exemplos
Crie um pod
Para um Deployment, adicione as anotações em spec.template.metadata, e não na seção metadata de nível superior.
Repositório HTTP
O ECI usa a anotação k8s.aliyun.com/plain-http-registry para baixar via HTTP a partir do endereço especificado.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 4
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
annotations:
k8s.aliyun.com/plain-http-registry: "192.168.XX.XX:5000"
labels:
app: nginx
alibabacloud.com/eci: "true"
spec:
containers:
- name: nginx
image: 192.168.XX.XX:5000/test/nginx:latest
Repositório com certificado autoassinado
O ECI usa a anotação k8s.aliyun.com/insecure-registry para ignorar a verificação de certificado ao baixar a partir do endereço especificado.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 4
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
annotations:
k8s.aliyun.com/insecure-registry: "harbor***.pre.com"
labels:
app: nginx
alibabacloud.com/eci: "true"
spec:
containers:
- name: nginx
image: harbor***.pre.com/test/nginx:latest
Crie um ImageCache
Adicione as anotações diretamente na seção metadata de nível superior do manifesto do ImageCache.
Repositório HTTP
apiVersion: eci.alibabacloud.com/v1
kind: ImageCache
metadata:
name: imagecache-sample
annotations:
k8s.aliyun.com/plain-http-registry: "192.168.XX.XX:5000"
spec:
images:
- 192.168.XX.XX:5000/test/nginx:latest
imagePullSecrets:
- default:secret1
- default:secret2
- kube-system:secret3
imageCacheSize:
25
retentionDays:
7
Repositório com certificado autoassinado
apiVersion: eci.alibabacloud.com/v1
kind: ImageCache
metadata:
name: imagecache-sample
annotations:
k8s.aliyun.com/insecure-registry: "harbor***.pre.com"
spec:
images:
- harbor***.pre.com/test/nginx:latest
imagePullSecrets:
- default:secret1
- default:secret2
- kube-system:secret3
imageCacheSize:
25
retentionDays:
7