Не удается включить удаление изображений из личного реестра докеров - PullRequest
0 голосов
/ 14 марта 2019

все !!Я развертываю частный реестр в кластере K8S со следующим файлом yaml:

kind: PersistentVolume
apiVersion: v1
metadata:
  name: registry
  labels:
    type: local
spec:
  capacity:
    storage: 4Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/data/registry/"

---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: registry-claim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 4Gi
---

apiVersion: v1
kind: Service
metadata:
  name: registry
  labels:
    app: registry
spec:
  ports:
    - port: 5000
      targetPort: 5000
      nodePort: 30400
      name: registry
  selector:
    app: registry
    tier: registry
  type: NodePort
---

apiVersion: v1
kind: Service
metadata:
  name: registry-ui
  labels:
    app: registry
spec:
  ports:
    - port: 8080
      targetPort: 8080
      name: registry
  selector:
    app: registry
    tier: registry
  type: NodePort
---

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: registry
  labels:
    app: registry
spec:
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: registry
        tier: registry
    spec:
      containers:
      - image: registry:2
        name: registry
        volumeMounts:
        - name: docker
          mountPath: /var/run/docker.sock
        - name: registry-persistent-storage
          mountPath: /var/lib/registry
        ports:
        - containerPort: 5000
          name: registry

      - name: registryui
        image: hyper/docker-registry-web:latest
        ports:
        - containerPort: 8080
        env:
        - name: REGISTRY_URL
          value: http://localhost:5000/v2
        - name: REGISTRY_NAME
          value: cluster-registry
      volumes:
      - name: docker
        hostPath:
          path: /var/run/docker.sock
      - name: registry-persistent-storage
        persistentVolumeClaim:
          claimName: registry-claim

Мне просто интересно, что нет возможности удалить образы докеров после их отправки в локальный реестр.Я нашел способ, как это должно работать здесь: https://github.com/byrnedo/docker-reg-tool. Я могу перечислить образы докеров в локальном хранилище, просмотреть все теги через командную строку, но не могу удалить их.Прочитав документацию реестра Docker, я обнаружил, что необходимо запустить Docker реестра со следующим env: REGISTRY_STORAGE_DELETE_ENABLED=true. Я пытался добавить эту переменную в файл yaml:

.........
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: registry
      labels:
        app: registry
    spec:
      strategy:
        type: Recreate
      template:
        metadata:
          labels:
            app: registry
            tier: registry
        spec:
          containers:
          - image: registry:2
            name: registry
            volumeMounts:
            - name: docker
              mountPath: /var/run/docker.sock
            - name: registry-persistent-storage
              mountPath: /var/lib/registry
            ports:
            - containerPort: 5000
              name: registry
            env:
            - name: REGISTRY_STORAGE_DELETE_ENABLED
              value: true

Но применяя этот файл yaml с помощью команды kubectl apply -f manifests/registry.yaml вернуть следующее сообщение об ошибке:

Deployment in version "v1beta1" cannot be handled as a Deployment: v1beta1.Deployment.Spec: v1beta1.DeploymentSpec.Template: v1.PodTemplateSpec.Spec: v1.PodSpec.Containers: []v1.Container: v1.Container.Env: []v1.EnvVar: v1.EnvVar.Value: ReadString: expects " or n, but found t, error found in #10 byte of ...|,"value":true}],"ima|..., bigger context ...|"name":"REGISTRY_STORAGE_DELETE_ENABLED","value":true}],"image":"registry:2","name":"registry","port|...

После того, как я найду другое предложение:

Реестр принимает параметры конфигурации через файл или переменные среды.Таким образом, переменная окружения REGISTRY_STORAGE_DELETE_ENABLED = true эквивалентна этому в вашем конфигурационном файле:

storage:
  delete:
    enabled: true

Я пробовал эту опцию также в моем файле yaml, но все еще не повезло ... Есть предложения, какчтобы разрешить удаление изображений из докера в моем файле yaml, мы очень ценим.

1 Ответ

1 голос
/ 14 марта 2019

Значение true в yaml разбирается на логический тип данных, и синтаксис вызывает строку.Вам нужно явно указать это:

value: "true"
...