Using Alauda Container Platform Registry in Kubernetes Clusters
Реестр Alauda Container Platform (ACP) обеспечивает безопасное управление образами контейнеров для рабочих нагрузок Kubernetes.
Содержание
Registry Access Guidelines
- Рекомендуется использовать внутренний адрес: Для образов, хранящихся в реестре кластера, всегда отдавайте предпочтение внутреннему сервисному адресу
internal-docker-registry.cpaas-system.svc
при развертывании внутри кластера. Это обеспечивает оптимальную сетевую производительность и избегает ненужной внешней маршрутизации.
- Использование внешнего адреса: Внешний ingress-домен (например,
registry.cluster.local
) предназначен в первую очередь для:
- загрузки/выгрузки образов из вне кластера (например, с машин разработчиков, систем CI/CD)
- операций вне кластера, требующих доступа к реестру
Deploy Sample Application
- Создайте приложение с именем
my-app
в пространстве имён my-ns
.
- Сохраните образ приложения в реестре по адресу
internal-docker-registry.cpaas-system.svc/my-ns/my-app:v1
.
- По умолчанию ServiceAccount в каждом пространстве имён автоматически настраивается с imagePullSecret для доступа к образам из
internal-docker-registry.cpaas-system.svc
.
Пример Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: my-ns
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: main-container
image: internal-docker-registry.cpaas-system.svc/my-ns/my-app:v1
ports:
- containerPort: 8080
Cross-Namespace Access
Чтобы разрешить пользователям из my-ns
вытягивать образы из shared-ns
, администратор shared-ns
может создать role binding для предоставления необходимых прав.
Example Role Binding
# Доступ к образам из другого пространства имён (требуются права)
kubectl create rolebinding cross-ns-pull \
--clusterrole=system:image-puller \
--serviceaccount=my-ns:default \
-n shared-ns
Best Practices
- Использование реестра: Всегда используйте
internal-docker-registry.cpaas-system.svc
для развертываний, чтобы обеспечить безопасность и производительность.
- Изоляция пространств имён: Используйте изоляцию пространств имён для лучшей безопасности и управления образами.
- Используйте пути образов, основанные на пространстве имён:
internal-docker-registry.cpaas-system.svc/<namespace>/<image>:<tag>
.
- Контроль доступа: Используйте role bindings для управления доступом между пространствами имён для пользователей и сервисных аккаунтов.
Verification Checklist
- Проверьте доступность образа для ServiceAccount по умолчанию в
my-ns
:
kubectl auth can-i get images.registry.alauda.io --namespace my-ns --as=system:serviceaccount:my-ns:default
- Проверьте доступность образа для пользователя в
my-ns
:
kubectl auth can-i get images.registry.alauda.io --namespace my-ns --as=<username>
Troubleshooting
- Ошибки при загрузке образа: Проверьте imagePullSecrets в спецификации pod и убедитесь, что они настроены корректно.
- Отказ в доступе: Убедитесь, что у пользователя или ServiceAccount есть необходимые role bindings в целевом пространстве имён.
- Проблемы с сетью: Проверьте сетевые политики и конфигурации сервисов, чтобы обеспечить подключение к внутреннему реестру.
- Сбои DNS: Проверьте содержимое файла
/etc/hosts
на узле, убедитесь, что разрешение DNS для internal-docker-registry.cpaas-system.svc
настроено правильно.
- Проверьте конфигурацию /etc/hosts узла для корректного разрешения DNS
internal-docker-registry.cpaas-system.svc
- Пример отображения сервиса реестра (ClusterIP сервиса internal-docker-registry):
# /etc/hosts
127.0.0.1 localhost localhost.localdomain
10.4.216.11 internal-docker-registry.cpaas-system internal-docker-registry.cpaas-system.svc internal-docker-registry.cpaas-system.svc.cluster.local # cpaas-generated-node-resolver
- Как получить текущий ClusterIP
internal-docker-registry
:
kubectl get svc -n cpaas-system internal-docker-registry -o jsonpath='{.spec.clusterIP}'