Сертификат частного реестра Kubernetes, подписанный неизвестным органом - PullRequest
0 голосов
/ 14 июля 2020

Я использую образ bitnami kubernetes в AWS экземпляре EC2.

kubectl cluster-info говорит

Kubernetes master is running at https://172.30.0.120:6443
Heapster is running at https://172.30.0.120:6443/api/v1/namespaces/kube-system/services/heapster/proxy
KubeDNS is running at https://172.30.0.120:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
monitoring-grafana is running at https://172.30.0.120:6443/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
monitoring-influxdb is running at https://172.30.0.120:6443/api/v1/namespaces/kube-system/services/monitoring-influxdb/proxy

, поэтому я предполагаю, что у меня есть только мастер и нет узла?

Я развернул частный реестр через

apiVersion: apps/v1
kind: Deployment
metadata:
  name: registry
  namespace: kube-system
spec:
  selector:
    matchLabels:
      app: registry
  template:
    metadata:
      labels:
        app: registry
        id: "registry"
    spec:
      containers:
      - name: registry
        image: registry:2.7.0
        ports:
        - name: registry-port
          containerPort: 5000
        volumeMounts:
        - mountPath: /var/lib/registry
          name: images
        - mountPath: /certs
          name: certs
        - mountPath: /auth
          name: auth
        env:
        - name: REGISTRY_AUTH
          value: "htpasswd"
        - name: REGISTRY_AUTH_HTPASSWD_REALM
          value: "Registry Realm"
        - name: REGISTRY_AUTH_HTPASSWD_PATH
          value: /auth/htpasswd
        - name: REGISTRY_HTTP_TLS_CERTIFICATE
          value: /certs/domain.crt
        - name: REGISTRY_HTTP_TLS_KEY
          value: /certs/domain.key
      volumes:
      - name: images
        hostPath:
          path: /home/bitnami/registry/images
      - name: certs
        hostPath:
          path: /home/bitnami/docker_reg_certs
      - name: auth
        hostPath:
          path: /home/bitnami/registry/auth

Я генерирую самоподписанный ssl-ca через openssl и копирую его в /etc/docker/certs.d/[ec2 -insta-domain: port] и в /usr/local/share/ca-certificates/ca.crt и выполните update-ca-Certificates и sudo service docker restart. После этого я вхожу в свой реестр с docker логином [имя домена]: 5000 и ввожу пользователя и пароль. Эта работа. Затем я создаю секрет реестра docker с помощью kubectl create secret generi c my-secret --from-file = .dockerconfigjson = ~ / .docker / config. json --type = kubernetes.io / dockerconfig json

После этого я создаю свое развертывание

kind: Deployment
apiVersion: apps/v1
metadata:
  name: app-config-service
  namespace: kube-system
spec:
  selector:
    matchLabels:
      app: app-config-service
  template:
    metadata:
      labels:
        app: app-config-service
    spec:
      containers:
      - name: app-config-service
        image: [AWS-EC2-DomainName]:5000/cloud/app-config-service:latest
        ports:
        - containerPort: 48000
        env:
        - name: SPRING_PROFILE
          value: docker
        - name: SPRING_BOOT_PORT
          value: "48000"
        - name: KAFKA_BINDER_BROKERS_URL
          value: xxxxxxxxxxx:29095
      imagePullSecrets:
        - name: my-secret

Но когда я пытаюсь запустить это развертывание с помощью kubectl create -f deployment.yml и описывать созданный модуль, я получаю сообщение об ошибке. сделать запрос: Заголовок https: // [имя домена]: 5000 / v2 / cloud / app-config-service / manifest / latest: x509: сертификат, подписанный неизвестным органом

В журнале реестра указано 2020/07 / 14 15:54:01 http: ошибка рукопожатия TLS из 10.32.0.1:37943: удаленная ошибка: tls: плохой сертификат

Если я попытаюсь вручную подключиться к частному репозиторию с помощью curl -X GET https: / / [domainname]: 5000 / v2 / _catalog это работает.

Кто-нибудь знает, что я здесь упускаю или делаю неправильно?

Приветствую

EDIT

Я обнаружил кое-что интересное . Для своих кубернетов я использую среду выполнения контейнера containerd github.com/containerd/containerd v1.3.3 d76c121f76a5fc8a462dc64594aea72fe18e1178

Я редактирую /etc/containered/config.toml, как это * 10

1029, но Я вызываю crictl info, вывод показывает мне следующее

...
...
 },
    "registry": {
      "mirrors": {
        "docker.io": {
          "endpoint": [
            "https://registry-1.docker.io"
          ]
        }
      },
...
...

Итак, config.toml не влияет на используемый реестр моих кубернетов? Есть идеи?

Ответы [ 2 ]

2 голосов
/ 14 июля 2020

Похоже, вы создали секрет my-secret в пространстве имен по умолчанию, но развертывание app-config-service выполняется в пространстве имен kube-system и, следовательно, не может ссылаться на my-secret с помощью imagePullSecrets. Создание секрета my-secret в пространстве имен kube-system должно решить проблему.

0 голосов
/ 21 июля 2020

Хорошо, спасибо, Проблема решена. Кажется, я совершил ошибку, создав секрет кубернетов для частного реестра docker. Теперь работает нормально :) Спасибо

...