Как настроить вход для пользовательского интерфейса HashiCorp Vault в Kubernetes

Я только что установил HashiCorp Vault в свой кластер Kubernetes, используя. Я хочу, чтобы он работал через мой существующий контроллер входа, поэтому я создал новое правило входа, используя приведенный ниже yaml:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: vault-ingress
  namespace: vault
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
  - http:
      paths:
      - path: /vault
        backend:
          serviceName: vault
          servicePort: 8200

К моему сервису, который работает как:

apiVersion: v1
kind: Service
metadata:
  name: vault
  namespace: vault
  labels:
    module: vault
spec:
  selector:
    module: vault
  ports:
  - port: 8200
    targetPort: 8200

Однако, когда я пытаюсь получить доступ к своему URL-адресу: http://ingress.domain/vault/ui Я получаю пустую страницу с ошибками

13.72.65.96/:24 GET http://ingress.domain/ui/assets/vendor-854d73b9f9351c0ff2e27f8821dfcd09.js net::ERR_ABORTED 404 (Not Found)
13.72.65.96/:25 GET http://ingress.domain/ui/assets/vault-f8ac2e61e061b2fb490b6ad79fcd5c1f.js net::ERR_ABORTED 404 (Not Found)
13.72.65.96/:15 GET http://ingress.domain/ui/assets/vendor-895fbba1663c3b4fe68755a3fb7ae7b4.css net::ERR_ABORTED 404 (Not Found)
13.72.65.96/:16 GET http://ingress.domain/ui/assets/vault-8ed265cce923599eca663b1bb2e4a83f.css net::ERR_ABORTED 404 (Not Found)
13.72.65.96/:25 GET http://ingress.domain/ui/assets/vault-f8ac2e61e061b2fb490b6ad79fcd5c1f.js net::ERR_ABORTED 404 (Not Found)
favicon-68e1a9c89026b0efeddf718a48c282a5.png:1 
GET http://ingress.domain/ui/favicon-68e1a9c89026b0efeddf718a48c282a5.png 404 (Not Found)

Моя карта конфигурации:

apiVersion: v1
kind: ConfigMap
metadata:
  name: vault
  namespace: vault
  labels:
    module: vault
data:
  config.json : '{
    "ui": "true",
    "disable_mlock": "true",
    "api_addr": "http://127.0.0.1:8200/vault",
    "listener": [
        {
            "tcp": {
                "address": "0.0.0.0:8200",
                "tls_disable": 1
            }
        }
    ]
}'

Развертывание

apiVersion: apps/v1
kind: Deployment
metadata:
  name: vault
  namespace: vault
  labels:
    module: vault
spec:
  selector:
    matchLabels:
      module: vault
  replicas: 1
  template:
    metadata:
      labels:
        module: vault
    spec:
      containers:
      - name: vault
        image: vault
        imagePullPolicy: "Always"
        command: ["/bin/sh", "-c"]
        args:
        -  vault server -config /vault/config/config.json
        securityContext:
          capabilities:
            add:
              - IPC_LOCK
        volumeMounts:
          - name: configurations
            mountPath: /vault/config/config.json
            subPath: config.json
        env:
          - name: VAULT_ADDR
            value: "http://localhost:8200/vault/"
        ports:
        - containerPort: 8200
      imagePullSecrets:
        - name: regcred
      volumes:
        - name: configurations
          configMap:
            name: vault

как настроить вход для Vault UI в Kubernetes? У меня есть один домен для Ingress, поэтому пользовательский интерфейс (и другие службы) должен быть: http://вход.домен/{имя службы}. Мне нужен пользовательский интерфейс Vault http://вход.домен/хранилище

Можно попробовать убрать эту строчку из ingress nginx.ingress.kubernetes.io/rewrite-target: / и применить kubectl. Просто попробуйте, если это сработает, вы узнаете, что было не так.

mchawre 29.07.2019 18:18

@mchawre не помог. Теперь у меня 404

Roman Marusyk 29.07.2019 23:49

Хорошо, вы можете выяснить, каков базовый путь Vault UI. Это /ui или /vault/ui

mchawre 30.07.2019 07:15

Базовый путь us /ui

Roman Marusyk 30.07.2019 08:40

В этом случае вы можете попробовать добавить nginx.ingress.kubernetes.io/rewrite-target: /ui, чтобы простое нажатие http://ingress.domain/vault указывало на http://ingress.domain/ui

mchawre 30.07.2019 08:51

Я пробовал, получил ошибку, как в вопросе. Мне нужно http://ingress.domain/vault/ui, которое будет перенаправлять на внутренний http://localhost:8200/ui Но это кажется невозможным, потому что пользовательский интерфейс Vault не поддерживает подпути

Roman Marusyk 30.07.2019 11:08
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
1
6
1 318
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я получил ответ на Форум хранилища:

this is (currently) not possible. Vault's UI (and API) is not able to work with domain subpathing.

Другие вопросы по теме