https - 如何使用 GKE 和 kube-lego 在 Gitlab Auto DevOps 上制作 SSL/HTTPS 证书

标签 https gitlab gitlab-ci google-kubernetes-engine

说明说要安装它,但没有建议哪种方法、按什么顺序或使用哪种负载均衡器有效。我的部署中不断安装无用的测试证书。

最佳答案

听起来您正在从 helm 获取默认图表,这与您在 kube-lego Github 上找到的说明略有不同。 Helm Chart 默认使用 Let's Encrypt 的临时服务器。另外,如果您不熟悉 helm,那么撤消 kube-lego helm 图表留下的残余可能会非常棘手,特别是因为tiller 喜欢保留旧的安装历史记录。

以下是使用 Google Kubernetes Engine 设置 Gitlab Auto Devops 的简要概述。我应该提到,如果您使用 10.1 中引入的 Gitlab GKE 向导,您可以跳到步骤 13,但它不会真正告诉您发生了什么或出现问题时如何调试,而且该向导是一个单向过程。

  1. 在 Gitlab 的集成下,您将找到 Kubernetes 集成按钮
    1. 您还可以在 CI/CD -> 集群下找到它
  2. API URL 是以 https:// 为前缀的端点 IP
  3. 它请求的“CA 证书”是服务帐户 CA,与集群 CA 不同
  4. 要连接到 gitlab,您需要创建一个 k8s 服务帐户并获取其 CA 和 token 。通过使用 gcloud 对 kubectl 进行身份验证来实现此目的。 GCE 通过 k8s 引擎中的“连接”按钮为您轻松完成此操作
    1. https://kubernetes.io/docs/admin/authentication/#service-account-tokens
  5. 所有命令都必须使用自定义命名空间运行,默认命名空间不起作用
  6. kubectl 创建命名空间 (NS)
  7. kubectl create serviceaccount (NAME) --namespace=(NS)
    1. 这将在您的配置/ secret 中创建两个 token ,一个是默认 token ,一个是您的服务帐户
  8. kubectl get -o json serviceaccounts (NAME) --namespace=(NS)
  9. kubectl get -o json Secret (secrets-name-on-prev-result) --namespace=(NS)
  10. 例如,要解码 Base64 值,请将其回显为 base64 -d
    1. 回显 mybase64stringasdfasdf= | base64-d
  11. 要安装helm,请使用安装脚本方法
    1. https://docs.helm.sh/using_helm/#from-script
  12. 初始化 helm 并更新其存储库
    1. Helm 初始化
    2. helm 仓库更新
  13. 安装nginx-ingress,它的入口是nginx。您也可以使用 Google 负载均衡器,但它不那么便携。
    1. helm 安装 stable/nginx-ingress
  14. 创建一个通配符子域,其中 A 记录指向 ingress 设置的 IP 地址
  15. 在 Gitlab 中,让自动 DevOps 使用您新设置的通配符子域,如果“me.com”上的“*.x”,您应该在自动 DevOps 设置中输入“x.me.com”。
  16. 现在安装 kube Lego
    1. helm install --namelego-main\ --设置 [email protected]\ --set config.LEGO_URL= https://acme-v01.api.letsencrypt.org/directory\ 稳定/kube-乐高
      1. Helm 安装称为图表,相当于 k8s 容器安装
      2. 如果您想删除某个版本,则必须清除它,否则tiller将保留历史记录,其中:
        1. helm delete --purge my-release-name
      3. 您可以在以下位置找到版本名称及其相关图表:
        1. Helm 列表

疑难解答

  • 顺序似乎并不太重要。附加到 Pod 可能是调试问题(例如错误的电子邮件地址)的有用方法。然而理想的顺序可能是,nginx-ingress,然后 kube-lego,然后 gitlab。我确实先让它与 gitlab 一起工作,然后是 nginx-ingress,然后是 kube-lego。

我从 Sid 那里听说他们正在努力让这一切变得更容易......希望如此。

关于https - 如何使用 GKE 和 kube-lego 在 Gitlab Auto DevOps 上制作 SSL/HTTPS 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47723928/

相关文章:

HTTP Post 请求正文被解释为文本/纯文本而不是 url 编码。

Spring安全3.1 : session concurrency control not working,为什么?

使用 SSH 到 Gitlab 的 Gitkraken

nginx - 为什么在端口 80 上运行 Varnish 仅用于 HTTPS 设置?

jquery - 如果原始页面加载是 https,没有完整 url 的 jQuery $.ajax 是否仍保留 https?

google-app-engine - 如何在部署阶段在 gitlab ci 中添加 .env 文件?

logging - 在Gitlab CI/CD中集成日志文件

git - 本地 Gitlab 安装不显示所有提交

smtp - 在 GitLab 11.4.4-ee 中更改通知邮件发件人名称