首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AWS EKS上使用Kubernetes Auth方法部署Hashicorp Vault时出现证书错误

在AWS EKS上使用Kubernetes Auth方法部署Hashicorp Vault时出现证书错误
EN

Stack Overflow用户
提问于 2018-12-07 12:50:25
回答 1查看 919关注 0票数 1

我正在尝试使用Kubernetes Auth方法在AWS EKS上部署Hashicorp Vault。

Hashicorp身份验证方法:https://www.vaultproject.io/docs/auth/kubernetes.html

使用的过程,派生自CoreOS存储库运算符。尽管我实际上并没有使用他们的运算符:https://github.com/coreos/vault-operator/blob/master/doc/user/kubernetes-auth-backend.md

下面是该过程的使用摘要以及一些附加内容。基本上,我在按照所需的步骤尝试实际登录vault时收到一个证书错误。任何帮助都是非常感谢的。

创建tokenreview的服务帐户和clusterrolebinding:

代码语言:javascript
复制
$kubectl -n default create serviceaccount vault-tokenreview

$kubectl -n default create -f example/k8s_auth/vault-tokenreview-binding.yaml

    Contents of vault-tokenreview-binding.yaml file
    =========================================
    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: ClusterRoleBinding
    metadata:
      name: vault-tokenreview-binding
      namespace: default
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: system:auth-delegator
    subjects:
    - kind: ServiceAccount
      name: vault-tokenreview
      namespace: default

开启文件库认证,将Kubernetes集群添加到文件库:

代码语言:javascript
复制
$SECRET_NAME=$(kubectl -n default get serviceaccount vault-tokenreview -o jsonpath='{.secrets[0].name}')
$TR_ACCOUNT_TOKEN=$(kubectl -n default get secret ${SECRET_NAME} -o jsonpath='{.data.token}' | base64 --decode)

$vault auth-enable kubernetes

$vault write auth/kubernetes/config kubernetes_host=XXXXXXXXXX kubernetes_ca_cert=@ca.crt token_reviewer_jwt=$TR_ACCOUNT_TOKEN

    Contents of ca.crt file
    NOTE: I retrieved the certificate from AWS EKS console. Which
          is shown in the "certificate authority" field in 
          base64 format. I base64 decoded it and placed it here
    =================
    -----BEGIN CERTIFICATE-----
    * encoded entry *
    -----END CERTIFICATE-----

创建vault策略和角色:

代码语言:javascript
复制
$vault write sys/policy/demo-policy policy=@example/k8s_auth/policy.hcl

    Contents of policy.hcl file
    =====================
    path "secret/demo/*" {
      capabilities = ["create", "read", "update", "delete", "list"]
    }

$vault write auth/kubernetes/role/demo-role \
    bound_service_account_names=default \
    bound_service_account_namespaces=default \
    policies=demo-policy \
    ttl=1h

尝试使用上一步中创建的服务帐户登录vault:

代码语言:javascript
复制
$SECRET_NAME=$(kubectl -n default get serviceaccount default -o jsonpath='{.secrets[0].name}')
$DEFAULT_ACCOUNT_TOKEN=$(kubectl -n default get secret ${SECRET_NAME} -o jsonpath='{.data.token}' | base64 --decode)

$vault write auth/kubernetes/login role=demo-role jwt=${DEFAULT_ACCOUNT_TOKEN}

    Error writing data to auth/kubernetes/login: Error making API request.

    URL: PUT http://localhost:8200/v1/auth/kubernetes/login
    Code: 500. Errors:

    * Post https://XXXXXXXXX.sk1.us-west-2.eks.amazonaws.com/apis/authentication.k8s.io/v1/tokenreviews: x509: certificate signed by unknown authority
EN

回答 1

Stack Overflow用户

发布于 2019-06-21 01:20:50

您的kubernetes url https://XXXXXXXXX.sk1.us-west-2.eks.amazonaws.com具有错误的证书尝试添加-tls-skip-verify

vault write -tls-skip-verify auth/kubernetes/login .......

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53663455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档