Рейтинг:0

Как установить Consul на Azure Kubernetes с включенными политиками?

флаг cn

Я установил Azure Kubernetes с включенной политикой Azure. Я выполнил шаги в руководстве по началу работы с консулом как есть: соединять

Но при деплое консула поды не деплоятся.

Когда я проверил набор реплик, ошибка была такой, как показано ниже.

События:
  Тип Причина Возраст от сообщения
  ---- ------ ---- ---- -------
  Предупреждение FailedCreate 23 с (x17 за 6 минут 20 с) replicaset-controller Ошибка при создании: веб-перехватчик допуска "validation.gatekeeper.sh" отклонил запрос: [azurepolicy-psp-container-no-привилегии-esc-30132221bc21e5b724da] Контейнер повышения привилегий не разрешен: контроллер

Как это исправить?

Подробные шаги с выводом.

D:\consul_azure>клон git https://github.com/hashicorp/learn-consul-kubernetes.git
Клонирование в «learn-consul-kubernetes»…
удаленный: Перечисление объектов: 504, сделано.
удаленный: Подсчет объектов: 100% (504/504), выполнено.
remote: Сжатие объектов: 100% (325/325), готово.
удаленный: Всего 504 (дельта 260), повторно использовано 354 (дельта 154), повторно использовано 0
Получение объектов: 100% (504/504), 87,91 КиБ | 173,00 КиБ/с, готово.
Разрешение дельт: 100% (260/260), готово.

D:\consul_azure>cd Learn-Consul-Kubernetes/Service-Mesh/Deploy

D:\consul_azure\learn-consul-kubernetes\service-mesh\deploy>helm repo добавить hashicorp https://helm.releases.hashicorp.com
"hashicorp" уже существует с такой же конфигурацией, пропуская

D:\consul_azure\learn-consul-kubernetes\service-mesh\deploy> обновление репозитория helm
Подождите, пока мы получаем последние данные из ваших репозиториев графиков...
...Успешно получено обновление из репозитория диаграмм "aad-pod-identity"
...Успешно получено обновление из репозитория диаграмм "secrets-store-csi-driver"
...Успешно получено обновление из репозитория диаграмм "csi-secrets-store-provider-azure"
...Успешно получено обновление из репозитория диаграмм "hashicorp"
...Успешно получено обновление из репозитория диаграмм "spv-charts"
...Успешно получено обновление из "стабильного" репозитория диаграмм
Обновление завершено. «Счастливого Хелминга!»

D:\consul_azure\learn-consul-kubernetes\service-mesh\deploy>helm install -f config.yaml consul hashicorp/consul --version "0.32.1"
ИМЯ: консул
ПОСЛЕДНИЙ РАЗВЕРТЫВАНИЕ: Пн, 16 августа, 12:36:55 2021 г.
ПРОСТРАНСТВО ИМЕН: по умолчанию
СТАТУС: развернут
ПЕРЕСМОТР: 1
ПРИМЕЧАНИЯ:
Спасибо за установку HashiCorp Consul!

Теперь, когда вы развернули Consul, вам следует просмотреть документы по использованию
Консул с Kubernetes доступен здесь:

https://www.consul.io/docs/platform/k8s/index.html


Ваш релиз назван консулом.

Чтобы узнать больше о выпуске, запустите:

  $ руль статус консул
  $ руль получить всех консулов

D:\consul_azure\learn-consul-kubernetes\service-mesh\deploy>консул статуса helm
ИМЯ: консул
ПОСЛЕДНИЙ РАЗВЕРТЫВАНИЕ: Пн, 16 августа, 12:36:55 2021 г.
ПРОСТРАНСТВО ИМЕН: по умолчанию
СТАТУС: развернут
ПЕРЕСМОТР: 1
ПРИМЕЧАНИЯ:
Спасибо за установку HashiCorp Consul!

Теперь, когда вы развернули Consul, вам следует просмотреть документы по использованию
Консул с Kubernetes доступен здесь:

https://www.consul.io/docs/platform/k8s/index.html


Ваш релиз назван консулом.

Чтобы узнать больше о выпуске, запустите:

  $ руль статус консул
  $ руль получить всех консулов

D:\consul_azure\learn-consul-kubernetes\service-mesh\deploy>kubectl get pods --selector app=consul
Ресурсы не найдены в пространстве имен по умолчанию.

D:\consul_azure\learn-consul-kubernetes\service-mesh\deploy>kubectl получить модули
Ресурсы не найдены в пространстве имен по умолчанию.

D:\consul_azure\learn-consul-kubernetes\service-mesh\deploy>kubectl получить развертывание
НАЗВАНИЕ ГОТОВО АКТУАЛЬНО ДОСТУПНО ВОЗРАСТ
consul-connect-injector-webhook-deployment 0/2 0 0 4m53s
консул-контроллер 0/1 0 0 4m53s
консул-webhook-cert-manager 0/1 0 0 4m53s
прометей-сервер 0/1 0 0 4m53s

D:\consul_azure\learn-consul-kubernetes\service-mesh\deploy>kubectl описывает развертывание консул-контроллера
Имя: консул-контролер
Пространство имен: по умолчанию
CreationTimestamp: Пн, 16 августа 2021 г., 12:37:25 +0530
Ярлыки: приложение=консул
                        app.kubernetes.io/managed-by=Хелм
                        диаграмма = консул-руль
                        компонент = контроллер
                        наследие=Шлем
                        релиз = консул
Аннотации: deployment.kubernetes.io/revision: 1
                        meta.helm.sh/имя-релиза: консул
                        meta.helm.sh/release-namespace: по умолчанию
Селектор: app=consul,chart=consul-helm,component=controller,heritage=Helm,release=consul
Реплики: 1 желаемая | 0 обновлено | 0 всего | 0 доступно | 1 недоступен
Тип стратегии: RollingUpdate
Минреадисекунд: 0
RollingUpdateStrategy: максимум 25% недоступно, максимум 25% всплеск
Шаблон пода:
  Ярлыки: приложение=консул
                    диаграмма = консул-руль
                    компонент = контроллер
                    наследие=Шлем
                    релиз = консул
  Аннотации: consul.hashicorp.com/connect-inject: false
  Аккаунт службы: консул-контроллер
  Контейнеры:
   контроллер:
    Изображение: hashicorp/consul-k8s:0.26.0
    Порт: 9443/TCP
    Хост-порт: 0/TCP
    Команда:
      /бин/ш
      -ec
      контроллер consul-k8s \
        -webhook-tls-cert-dir=/tmp/controller-webhook/certs \
        -центр данных=dc1 \
        -включить-выборы-лидера \
        -log-level="информация" \

    Ограничения:
      процессор: 100 м
      память: 50Ми
    Запросы:
      процессор: 100 м
      память: 50Ми
    Среда:
      HOST_IP: (v1:status.hostIP)
      CONSUL_HTTP_ADDR: http://$(HOST_IP):8500
    Маунты:
      /tmp/controller-webhook/сертификаты из сертификата (ro)
  Объемы:
   сертификат:
    Тип: секрет (том, заполненный секретом)
    SecretName: консул-контроллер-вебхук-сертификат
    Необязательно: ложь
Условия:
  Тип Статус Причина
  ---- ------ ------
  Прогресс True NewReplicaSetCreated
  Доступно False MinimumReplicasUnreachable
  ReplicaFailure True FailedCreate
OldReplicaSets: <нет>
NewReplicaSet: consul-controller-dff49c9f4 (создано 0/1 реплики)
События:
  Тип Причина Возраст от сообщения
  ---- ------ ---- ---- -------
  Обычный ScalingReplicaSet 5m9s deployment-controller Увеличенный набор реплик consul-controller-dff49c9f4 до 1

D:\consul_azure\learn-consul-kubernetes\service-mesh\deploy>kubectl получить rs consul-controller-dff49c9f4
ИМЯ ЖЕЛАЕМЫЙ НАСТОЯЩИЙ ВОЗРАСТ ГОТОВНОСТИ
консул-контроллер-dff49c9f4 1 0 0 5м30с

D:\consul_azure\learn-consul-kubernetes\service-mesh\deploy> журналы kubectl consul-controller-dff49c9f4
Ошибка сервера (NotFound): модули «consul-controller-dff49c9f4» не найдены

D:\consul_azure\learn-consul-kubernetes\service-mesh\deploy> журналы kubectl rs/consul-controller-dff49c9f4
ошибка: истекло время ожидания условия

D:\consul_azure\learn-consul-kubernetes\service-mesh\deploy>kubectl описывает rs/consul-controller-dff49c9f4
Имя: консул-контроллер-dff49c9f4
Пространство имен: по умолчанию
Селектор: app=consul,chart=consul-helm,component=controller,heritage=Helm,pod-template-hash=dff49c9f4,release=consul
Ярлыки: приложение=консул
                диаграмма = консул-руль
                компонент = контроллер
                наследие=Шлем
                под-шаблон-хэш = dff49c9f4
                релиз = консул
Аннотации: deployment.kubernetes.io/desired-replicas: 1
                развертывание.kubernetes.io/max-replicas: 2
                развертывание.kubernetes.io/revision: 1
                meta.helm.sh/имя-релиза: консул
                meta.helm.sh/release-namespace: по умолчанию
Контролируется: развертывание/консул-контроллер
Реплики: 0 текущих / 1 желаемых
Статус модулей: 0 работает / 0 ожидает / 0 успешно / 0 не удалось
Шаблон пода:
  Ярлыки: приложение=консул
                    диаграмма = консул-руль
                    компонент = контроллер
                    наследие=Шлем
                    под-шаблон-хэш = dff49c9f4
                    релиз = консул
  Аннотации: consul.hashicorp.com/connect-inject: false
  Аккаунт службы: консул-контроллер
  Контейнеры:
   контроллер:
    Изображение: hashicorp/consul-k8s:0.26.0
    Порт: 9443/TCP
    Хост-порт: 0/TCP
    Команда:
      /бин/ш
      -ec
      контроллер consul-k8s \
        -webhook-tls-cert-dir=/tmp/controller-webhook/certs \
        -центр данных=dc1 \
        -включить-выборы-лидера \
        -log-level="информация" \

    Ограничения:
      процессор: 100 м
      память: 50Ми
    Запросы:
      процессор: 100 м
      память: 50Ми
    Среда:
      HOST_IP: (v1:status.hostIP)
      CONSUL_HTTP_ADDR: http://$(HOST_IP):8500
    Маунты:
      /tmp/controller-webhook/сертификаты из сертификата (ro)
  Объемы:
   сертификат:
    Тип: секрет (том, заполненный секретом)
    SecretName: консул-контроллер-вебхук-сертификат
    Необязательно: ложь
Условия:
  Тип Статус Причина
  ---- ------ ------
  ReplicaFailure True FailedCreate
События:
  Тип Причина Возраст от сообщения
  ---- ------ ---- ---- -------
  Предупреждение FailedCreate 23 с (x17 за 6 минут 20 с) replicaset-controller Ошибка при создании: веб-перехватчик допуска "validation.gatekeeper.sh" отклонил запрос: [azurepolicy-psp-container-no-привилегии-esc-30132221bc21e5b724da] Контейнер повышения привилегий не разрешен: контроллер
флаг in
Похоже, вы столкнулись с той же проблемой, описанной в https://github.com/hashicorp/consul-k8s/issues/635. Consul 1.10 требует возможности NET_ADMIN для использования прозрачного прокси. Я рекомендую поделиться дополнительной информацией об этой проблеме с GH, чтобы наша команда могла лучше отлаживать и решать эту проблему. Спасибо.
Sara June avatar
флаг cn
Спасибо Блейк за ссылку, но по этой ссылке нет решения
флаг in
Привет, Сара, это проблема с отслеживанием отчета об ошибке. В моем предыдущем комментарии я предложил вам использовать это, чтобы предоставить больше информации команде Консула, чтобы они могли расследовать это.
Рейтинг:1
флаг us

Пока Consul не откажется от повышения привилегий в качестве обходного пути на шаге 9 до Назначение определения политики, чтобы исключить пространства имен Kubernetes из оценки политики, укажите список пространств имен в параметре Исключения пространств имен. Рекомендуется исключить: kube-система, гейткипер-система, и лазурная дуга.

В частности, для Кластеры Kubernetes не должны допускать повышения привилегий контейнера вы можете установить параметры для Исключения пространства имен и Исключения контейнеров, добавив пространство имен consul и/или контейнеры.

Согласно Определение политики:

"параметры": {
...
"исключенные пространства имен": {
        "тип": "Массив",
        "метаданные": {
          "displayName": "Исключения пространства имен",
          "description": "Список пространств имен Kubernetes, которые следует исключить из оценки политики."
        },
        "значение по умолчанию": [
          "кубе-система",
          "привратник-система",
          "лазурь-дуга"
        ]
      },
...
"исключенные контейнеры": {
        "тип": "Массив",
        "метаданные": {
          "displayName": "Исключения контейнеров",
          "description": "Список InitContainers и контейнеров, которые следует исключить из оценки политики. Идентификатор — это имя контейнера. Используйте пустой список, чтобы применить эту политику ко всем контейнерам во всех пространствах имен."
        },
        "значение по умолчанию": []
      },
...
}

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.