k8s创建ingress资源报错

[root@master01 k8s]# kubectl apply -f eureka.yaml 
service/eureka created
statefulset.apps/eureka created
 

Error from server (InternalError): error when creating "eureka.yaml": Internal error occurred: failed calling webhook "validate.nginx.ingress.kubernetes.io": failed to call webhook: Post "https://ingress-nginx-controller-admission.ingress-nginx.svc:443/networking/v1/ingresses?timeout=10s": no endpoints available for service "ingress-nginx-controller-admission"

解决办法:

查看

kubectl get validatingwebhookconfigurations

删除ingress-nginx-admission

kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission
### 如何在 Kubernetes 中为 Ingress 设置 TLS 证书和加密 为了确保通过 Ingress 访问应用程序的安全性,可以通过配置 Transport Layer Security (TLS) 来实现数据传输的加密。这通常涉及到创建自签名证书或获取由受信任的证书颁发机构(CA)签发的证书。 #### 创建 TLS 秘钥和证书文件 首先需要准备服务器私钥(`server-key.pem`) 和对应的公钥证书 (`server-cert.pem`). 这些文件可以在本地生成或者从 CA 获取. #### 将 TLS 文件转换成 Secret 对象 使用 `kubectl create secret` 命令来创建一个包含上述两个文件内容的秘密对象(secret),该命令会将指定路径下的 `.pem` 文件作为 base64 编码后的字符串存储到 K8S 集群中: ```bash $ kubectl create secret tls my-tls-secret \ --cert=path/to/tls.crt \ --key=path/to/tls.key ``` 此操作会在默认命名空间下创建名为 `my-tls-secret` 的秘密资源[^1]. #### 修改 Ingress 资源定义以支持 HTTPS 协议 编辑现有的 ingress.yaml 或者新建一个 YAML 文件,在其中添加如下字段: ```yaml apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: example-ingress spec: tls: - hosts: - "example.com" secretName: my-tls-secret # 使用之前创建的秘密名称 rules: - host: "example.com" http: paths: - path: / backend: serviceName: web-service servicePort: 80 ``` 这段代码指定了当访问带有特定域名(如 `"example.com"`)请求时应匹配哪个后端服务,并关联了前面提到过的 TLS 密钥/证书组合. 完成以上步骤之后就可以提交更新给 API Server 并等待控制器应用更改了。一旦成功部署并生效,则所有针对所配置域名为前缀 URL 的流量都将被强制重定向至 HTTPS 方式连接.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值