我正在将kubernetes集群GCP与gitlab autodevops一起使用。管道正在运行,已安装了triller,入口和证书管理器区域。
我已经有一个域“ xpto.com.br”,该域已经为所有子域提供了ssl证书,但是已将其配置到iis应用程序中,因此我无法在我的gcp应用程序中使用此证书。因此,我正在使用Lets与证书管理器进行加密,以将证书生成到k8s集群中。
一切都已设置,但是我的应用程序未使用https进行响应。如果我尝试强制使用“ https”执行应用,则Web浏览器将显示“后端404”。
经过一些尝试,我决定从群集中删除cert-manager再次尝试设置。但是gitlab没有启用再次安装证书管理器的选项,如下图所示:
答案 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证书机密,以便新的可以替换它。