Обновление образа в реестре внешнего докера не запускает развертывание - PullRequest
1 голос
/ 19 октября 2019

Я импортирую следующий шаблон в веб-клиент OpenShift для создания ImageStream, DeploymentConfig & Service.

ImageStream создается из образа Docker, доступного во внешнем реестре Docker.

Все кажетсяработать нормально, за исключением того, что всякий раз, когда изменения образа Docker во внешнем реестре не изменяются,

Возможно ли с помощью Openshift & External Registry запускать автоматическое развертывание при изменении образа Docker ввнешний реестр.

{
    "kind": "Template",
    "apiVersion": "v1",
    "metadata": {
        "name": "test-100"
    },
    "objects": [
        {
            "kind": "ImageStream",
            "apiVersion": "image.openshift.io/v1",
            "metadata": {
                "name": "test-100",
                "creationTimestamp": null,
                "labels": {
                    "app": "test-100"
                },
                "annotations": {
                    "openshift.io/generated-by": "OpenShiftNewApp"
                }
            },
            "spec": {
                "lookupPolicy": {
                    "local": false
                },
                "tags": [
                    {
                        "name": "latest",
                        "annotations": {
                            "openshift.io/imported-from": "artifactory.company.com/docker-dev-local/test/dev/test:latest"
                        },
                        "from": {
                            "kind": "DockerImage",
                            "name": "artifactory.company.com/docker-dev-local/test/dev/test:latest"
                        },
                        "generation": null,
                        "importPolicy": {},
                        "referencePolicy": {
                            "type": ""
                        }
                    }
                ]
            }
        },
        {
            "kind": "DeploymentConfig",
            "apiVersion": "apps.openshift.io/v1",
            "metadata": {
                "name": "test-100",
                "creationTimestamp": null,
                "labels": {
                    "app": "test-100"
                },
                "annotations": {
                    "openshift.io/generated-by": "OpenShiftNewApp"
                }
            },
            "spec": {
                "strategy": {
                    "resources": {}
                },
                "triggers": [
                    {
                        "type": "ConfigChange"
                    },
                    {
                        "type": "ImageChange",
                        "imageChangeParams": {
                            "automatic": true,
                            "containerNames": [
                                "test-100"
                            ],
                            "from": {
                                "kind": "ImageStreamTag",
                                "name": "test-100:latest"
                            }
                        }
                    }
                ],
                "replicas": 1,
                "test": false,
                "selector": {
                    "app": "test-100",
                    "deploymentconfig": "test-100"
                },
                "template": {
                    "metadata": {
                        "creationTimestamp": null,
                        "labels": {
                            "app": "test-100",
                            "deploymentconfig": "test-100"
                        },
                        "annotations": {
                            "openshift.io/generated-by": "OpenShiftNewApp"
                        }
                    },
                    "spec": {
                        "containers": [
                            {
                                "name": "test-100",
                                "image": "artifactory.company.com/docker-dev-local/test/dev/test:latest",
                                "ports": [
                                    {
                                        "containerPort": 8080,
                                        "protocol": "TCP"
                                    },
                                    {
                                        "containerPort": 8443,
                                        "protocol": "TCP"
                                    },
                                    {
                                        "containerPort": 8778,
                                        "protocol": "TCP"
                                    }
                                ],
                                "resources": {}
                            }
                        ]
                    }
                }
            }
        },
        {
            "kind": "Service",
            "apiVersion": "v1",
            "metadata": {
                "name": "test-100",
                "creationTimestamp": null,
                "labels": {
                    "app": "test-100"
                },
                "annotations": {
                    "openshift.io/generated-by": "OpenShiftNewApp"
                }
            },
            "spec": {
                "ports": [
                    {
                        "name": "8080-tcp",
                        "protocol": "TCP",
                        "port": 8080,
                        "targetPort": 8080
                    },
                    {
                        "name": "8443-tcp",
                        "protocol": "TCP",
                        "port": 8443,
                        "targetPort": 8443
                    },
                    {
                        "name": "8778-tcp",
                        "protocol": "TCP",
                        "port": 8778,
                        "targetPort": 8778
                    }
                ],
                "selector": {
                    "app": "test-100",
                    "deploymentconfig": "test-100"
                }
            }
        }
    ]
}

1 Ответ

1 голос
/ 19 октября 2019

OpenShift не может обнаружить изменения изображения во внешнем реестре. Поэтому вы должны настроить importPolicy.scheduled: true для обновления изображения.

например> вы можете настроить imagePolicy для каждого тега изображения.

apiVersion: v1
kind: ImageStream
metadata:
  name: ruby
spec:
  tags:
  - from:
      kind: DockerImage
      name: openshift/ruby-20-centos7
    name: latest
    importPolicy:
      scheduled: true

По умолчанию интервал составляет 15 минут. Если вы хотите изменить значение, вы можете настроить конфигурацию из /etc/origin/master/master-config.yaml следующим образом.

например>> 1010 * - это интервал времени для импорта imagestream. Дополнительные сведения о параметрах см. Конфигурация политики изображения .

imagePolicyConfig:
  MaxScheduledImageImportsPerMinute: 10  
  ScheduledImageImportMinimumIntervalSeconds: 1800
  disableScheduledImport: false
  maxImagesBulkImportedPerRepository: 3

Дополнительная информация приведена здесь: Автоматическое обновление изображений контейнера Red Hat в OpenShift 3.11 .

...