Личное изображение реестра Kubernetes (gitlab) на разных узлах - PullRequest
0 голосов
/ 17 мая 2019

У меня есть кластер Kubernetes с 2 узлами. Теперь, когда я внедряю Gitlab CI в кластер, он обычно развертывает приложение.

Но когда я добавлю сервис cronjob, который использует то же изображение, что и приложение, к диаграммам, которые используются Gitlab CI (рулевые диаграммы). он запускается на узле, где также развертывается само приложение, но не на другом узле.

Ошибка:

Failed to pull image "gitlab.example.nl:4567/v2/namespace/project/manifests/0998034a-ae44-457e-bb5e-3d3304a2fc54": rpc error: code = Unknown desc = Error response from daemon: Get https://gitlab.example.nl:4567/v2/namespace/project/manifests/0998034a-ae44-457e-bb5e-3d3304a2fc54: unauthorized: HTTP Basic: Access denied

Изменены URL-адреса для неявки компании

Пример:

Node1:
Does not run cronjob, because it cannot pull the image.

Node2:
Runs application normally
Runs cronjobs normally

И диаграммы развертывания, и диаграммы cronjob имеют свойство ImagePullSecrets, я установил время действия токена на 15 минут

Пример панели управления k8s k8s image

Cronjob.yaml (диаграмма руля)

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: {{ template "trackableappname" . }}-cron
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          imagePullSecrets:
{{ toYaml .Values.image_fpm.secrets | indent 12 }}
          volumes:
            - name: appdir
              emptyDir: {}
            {{- if .Values.storage.enabled }}
            - name: cron-{{ .Values.storage.name }}-pv-storage
              persistentVolumeClaim:
                claimName: {{ .Values.storage.name }}-pv-claim
            {{- end }}
            - name: secrets
              secret:
                secretName: environment-file
          containers:
            - name: fpm-{{ .Chart.Name }}-cronjob
              image: "{{ .Values.image_fpm.repository }}:{{ .Values.image_fpm.tag }}"
              imagePullPolicy: {{ .Values.image_fpm.pullPolicy }}
              command: ["/bin/sh"]
              args: ["-c", "{{ .Values.application.cronCommand }}"]
              volumeMounts:
              - name: appdir
                mountPath: /var/www/html
              {{- if .Values.storage.enabled }}
              - name: cron-{{ .Values.storage.name }}-pv-storage
                mountPath: /var/www/html/storage
              {{- end }}
              - name: secrets
                mountPath: /var/secrets
              {{- if .Values.application.secretName }}
              envFrom:
              - secretRef:
                  name: {{ .Values.application.secretName }}
              {{- end }}
              env:
                - name: "APP_DEBUG"
                  value: "false"
                - name: ENVIRONMENT_FILE
                  valueFrom:
                    secretKeyRef:
                      name: environment-file
                      key: ENVIRONMENT_FILE
          initContainers:
            - name: copy-{{ .Chart.Name }}-cronjob
              image: "{{ .Values.image_workspace.repository }}:{{ .Values.image_workspace.tag }}"
              command: ["/bin/sh"]
              args: ["-c", "{{ .Values.application.initCommand }}"]
              env:
                - name: ENVIRONMENT_FILE
                  valueFrom:
                    secretKeyRef:
                      name: environment-file
                      key: ENVIRONMENT_FILE
              volumeMounts:
                - name: appdir
                  mountPath: /var/www/application
              imagePullPolicy: {{ .Values.image_fpm.pullPolicy }}
          restartPolicy: OnFailure
...