![](/img/trans.png)
[英]K8s Internal ACME server with cert-manager for issuing only internal k8s certs - htttp challenge issue
[英]K8S cert-manager error creating acme challenge pods
在過去的 3 天里,我一直在嘗試在具有 1 個主節點和 2 個節點的 OpenStack 環境中的 K8S 集群(v1.19.8)上設置證書管理器。 它以前工作過(比如 1 個月前),但自從我重新創建集群后,由於此錯誤無法創建 pod ACME 挑戰:
Status:
Presented: false
Processing: true
Reason: pods "cm-acme-http-solver-" is forbidden: PodSecurityPolicy: unable to admit pod: []
State: pending
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Started 8m25s cert-manager Challenge scheduled for processing
Warning PresentError 3m18s (x7 over 8m23s) cert-manager Error presenting challenge: pods "cm-acme-http-solver-" is forbidden: PodSecurityPolicy: unable to admit pod: []
我嘗試了不同版本的ingress-nginx、不同版本的cert-manager、不同版本的k8s,但都無濟於事。 我快瘋了...,請幫忙。 非常感謝:)
kubectl create namespace ingress-nginx && \
helm install ingress-nginx ingress-nginx/ingress-nginx -n ingress-nginx && \
kubectl create namespace cert-manager && \
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--version v1.1.0 \
--set installCRDs=true
發行人
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: email@example.com
preferredChain: "ISRG Root X1"
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: nginx
入口
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: main-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
cert-manager.io/issuer: "letsencrypt-prod"
spec:
tls:
- hosts:
- host.com
secretName: the-secret-name
rules:
- host: host.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: api-nginx
port:
number: 80
經過一些調試和托管服務提供商的大力幫助,我們找到了問題和解決方案。
我們使用的是最新(來自主)版本的 Magnum/OpenStack,它有一個更新,默認安裝 PodSecurityPolicy controller。 這阻止了 cert-manager 創建 ACME pod。
在沒有策略 controller 的情況下重新創建集群解決了該問題:
openstack coe cluster create \
--cluster-template v1.kube1.20.4 \
--labels \
admission_control_list="NodeRestriction,NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,TaintNodesByCondition,Priority,DefaultTolerationSeconds,DefaultStorageClass,StorageObjectInUseProtection,PersistentVolumeClaimResize,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,RuntimeClass" \
--merge-labels
...
晚了一年,但添加了另一個解決方案,以防它幫助其他人找到這個。 我遇到了同樣的挑戰吊艙被 PSP 阻止的問題,但我真的不想重新創建/重新配置我的集群,所以我最終通過將其添加到 helm 圖表值中解決了這個問題。yaml:https:// github.com/cert-manager/cert-manager/blob/master/deploy/charts/cert-manager/values.yaml
global:
podSecurityPolicy:
enabled: true
useAppArmor: false
就我而言,這是 Gitlab 部署的一部分,因此我將其添加到 certmanager 鍵下,如下所示:
certmanager:
install: true
global:
podSecurityPolicy:
enabled: true
useAppArmor: false
(搜索標簽:gitlab helm chart certmanager PodSecurityPolicy "unable to admit pod" blocked)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.