Я создал 2 кластера kubernetes в одном VPC в одном регионе в AWS.
Первый кластер посвящен моим микро-сервисам. Назовите его «MS»
Второй посвящен хранилищу и его высокодоступному хранилищу (консул). Давайте назовем это "V"
Вопрос в том, как я могу получить доступ к секретам, которые я создал в кластере "V", из контейнеров в кластере "MS"?
Что я пробовал до сих пор:
1) Я начал с создания новой учетной записи службы в кластере «MS», которая аутентифицируется с помощью API маркеров проверки.
2) Затем мне пришлось извлечь токен JWT, сертификат CA Kuberenetes и хост Kubernetes из кластера "MI"
3) Затем я переключился на контекст кластера «V», чтобы включить и создать новый метод аутентификации kubernetes, присоединенный к этой учетной записи службы.
Оттуда я не знаю, что делать, и я не уверен, что этот метод действительно работает при использовании 2 разных кластеров!?
Сервисный аккаунт:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: consul
labels:
app: consul
rules:
- apiGroups: [""]
resources:
- pods
verbs:
- get
- list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: consul
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: consul
subjects:
- kind: ServiceAccount
name: consul
namespace: default
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: consul
labels:
app: consul
Экспорт переменных просмотра токенов из кластера "MI"
export VAULT_SA_NAME=$(kubectl get sa postgres-vault -o jsonpath="{.secrets[*]['name']}")
export SA_JWT_TOKEN=$(kubectl get secret $VAULT_SA_NAME -o jsonpath="{.data.token}" | base64 --decode; echo)
export SA_CA_CRT=$(kubectl get secret $VAULT_SA_NAME -o jsonpath="{.data['ca\.crt']}" | base64 --decode; echo)
export K8S_HOST=$(kubectl exec consul-consul-0 -- sh -c 'echo $KUBERNETES_SERVICE_HOST')
Создание метода аутентификации kubernetes
vault auth enable kubernetes
vault write auth/kubernetes/config \
token_reviewer_jwt="$SA_JWT_TOKEN" \
kubernetes_host="https://$K8S_HOST:443" \
kubernetes_ca_cert="$SA_CA_CRT"
Я ожидаю получить доступ к секретам, хранящимся в хранилище, от моих микросервисов. Хотя я не уверен, что этот метод работает, когда хранилище развернуто в выделенном кластере.
Я думаю, что может быть что-то еще, чтобы объединить оба кластера! Может быть, используете консул?