我正在使用带有 gitlab autodevops 的 kubernetes 集群 GCP。管道正在运行,帮助安装 triller、ingress 和 cert-manager 区域。

我已经有一个域“xpto.com.br”,它已经为所有子域提供了 ssl 证书,但是它被配置到 iis 应用程序中,所以我不能在我的 gcp 应用程序中使用这个证书。所以我使用 lets encrypt with cert manager 来为 k8s 集群生成证书。

一切都已设置,但我的应用程序没有使用 https 响应。如果我尝试强制“https”来执行应用程序,网络浏览器会显示“后端 404”。

经过一些尝试,我决定从集群中删除 cert-manager 以再次尝试设置。但是 gitlab 没有启用再次安装证书管理器的选项,如下图所示:

请您参考如下方法:

GitLab 不提供 uninstall 选项,因此您必须在 gitlab-managed-apps 中手动重新安装 cert-manager 或重新附加你的集群到你的 GitLab 项目。如果您想手动执行此操作,请运行:

helm install \ 
    --name cert-manager \ 
    --namespace gitlab-managed-apps \ 
    stable/cert-manager 

这只处理证书管理器部分。另一件需要注意的事情是 cert-manager 不会奇迹般地认识到您对证书的需求并创建一个。您将需要创建所需的资源,例如入口、clusterIssuer 和证书资源。还需要注意的一件事是,您可以为所有子域使用单个 tls 通配符证书。不要生成冗余证书,这会影响您的配额。尝试使用以下简单模板(例如,假设您使用 route53 作为您的 dns 提供商):

issuer.yaml

apiVersion: certmanager.k8s.io/v1alpha1 
kind: ClusterIssuer 
metadata: 
  name: letsencrypt-staging 
  namespace: default 
spec: 
  acme: 
    server: https://acme-staging-v02.api.letsencrypt.org/directory 
    email: <your email> 
    privateKeySecretRef: 
      name: letsencrypt-staging 
    dns01: 
      providers: 
      - name: route53 
        route53: 
          region: us-east-1 
          accessKeyID: <access key id> 
          secretAccessKeySecretRef: 
            name: <secret name> 
            key: secret-access-key 

ingress.yaml

apiVersion: extensions/v1beta1 
kind: Ingress 
metadata: 
  name: <ingress name> 
  annotations: 
    kubernetes.io/ingress.class: nginx 
    kubernetes.io/tls-acme: "true" 
    certmanager.k8s.io/cluster-issuer: letsencrypt-staging 
spec: 
  tls: 
  - hosts: 
    - "*.example.com" 
    secretName: cert-wildcard-secret 
  rules: 
  - host: "sub.example.com" 
    http: 
      paths: 
      - path: / 
        backend: 
          serviceName: <service name> 
          servicePort: <port number> 

certificate.yaml

apiVersion: certmanager.k8s.io/v1alpha1 
kind: Certificate 
metadata: 
  name: cert-wildcard 
spec: 
  secretName: cert-wildcard-secret 
  issuerRef: 
    name: letsencrypt-staging 
    kind: ClusterIssuer 
  dnsNames: 
  - '*.example.com' 
  acme: 
    config: 
    - dns01: 
        provider: route53 
      domains: 
      - '*.example.com' 

一旦您确认这有效(使用 FAKE 暂存证书),请将您的颁发者中的 URL 更改为 https://acme-v02.api.letsencrypt.org/directory这样您就可以创建合法的证书。进行更改后,删除旧的 FAKE 证书密码,以便新的证书密码可以替换它。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!