it-swarm.com.ru

Pull image Реестр контейнеров Azure - Кубернетес

У кого-нибудь есть советы по извлечению из реестра контейнеров Azure при работе в службе контейнеров Azure (kubernetes)

Я пробовал пример развертывания, подобный следующему, но загрузка образа не удалась:

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: jenkins-master
spec:
  replicas: 1
  template:
    metadata:
      name: jenkins-master
      labels:
        name: jenkins-master
    spec:
      containers:
      - name: jenkins-master
        image: myregistry.azurecr.io/infrastructure/jenkins-master:1.0.0
        imagePullPolicy: Always
        readinessProbe:
          tcpSocket:
            port: 8080
          initialDelaySeconds: 20
          timeoutSeconds: 5
        ports:
        - name: jenkins-web
          containerPort: 8080
        - name: jenkins-agent
          containerPort: 50000
7
eggsy84

Я получил это после прочтения этой информации.

http://kubernetes.io/docs/user-guide/images/#specifying-imagepullsecrets-on-a-pod

Поэтому сначала создайте ключ доступа к реестру.

kubectl create secret docker-registry myregistrykey --docker-server=https://myregistry.azurecr.io --docker-username=ACR_USERNAME --docker-password=ACR_PASSWORD --docker-email=ANY_EMAIL_ADDRESS

Замените адрес сервера адресом вашего ACR и адресами USERNAME, PASSWORD и EMAIL на значения от пользователя admin для вашего ACR. Примечание: адрес электронной почты может быть значением.

Затем при развертывании вы просто указываете kubernetes использовать этот ключ для извлечения образа следующим образом:

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: jenkins-master
spec:
  replicas: 1
  template:
    metadata:
      name: jenkins-master
      labels:
        name: jenkins-master
    spec:
      containers:
      - name: jenkins-master
        image: myregistry.azurecr.io/infrastructure/jenkins-master:1.0.0
        imagePullPolicy: Always
        readinessProbe:
          tcpSocket:
            port: 8080
          initialDelaySeconds: 20
          timeoutSeconds: 5
        ports:
        - name: jenkins-web
          containerPort: 8080
        - name: jenkins-agent
          containerPort: 50000
      imagePullSecrets:
        - name: myregistrykey
11
eggsy84

Это то, что мы на самом деле сделали проще. При подготовке кластера Kubernetes через интерфейс командной строки Azure создается участник службы с привилегиями участника. Это включит запросы на получение запросов из любого реестра контейнеров Azure в подписке.

Был PR: https://github.com/kubernetes/kubernetes/pull/40142 , который был объединен с новыми развертываниями Kubernetes. Это не будет работать на существующих экземплярах kubernetes.

2
Steve Lasker