证书管理器使用gitlab autodevops失败进入kubernetes集群

时间:2019-03-18 13:06:26

标签: ssl kubernetes gitlab

我正在将kubernetes集群GCP与gitlab autodevops一起使用。管道正在运行,已安装了triller,入口和证书管理器区域。

我已经有一个域“ xpto.com.br”,该域已经为所有子域提供了ssl证书,但是已将其配置到iis应用程序中,因此我无法在我的gcp应用程序中使用此证书。因此,我正在使用Lets与证书管理器进行加密,以将证书生成到k8s集群中。

一切都已设置,但是我的应用程序未使用https进行响应。如果我尝试强制使用“ https”执行应用,则Web浏览器将显示“后端404”。

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

enter image description here

1 个答案:

答案 0 :(得分:0)

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

helm install \
    --name cert-manager \
    --namespace gitlab-managed-apps \
    stable/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-staging-v02.api.letsencrypt.org/directory,以便您可以创建合法证书。进行更改后,请删除旧的FAKE证书机密,以便新的可以替换它。