什么';将TLS添加到Kubernetes服务的最简单方法是什么?
我在GKE的Kubernetes上公开了一个简单的web服务器,并注册了一个域。我正在寻找添加TLS到这个,所以它可以通过HTTPS访问。我听说过很多关于使用Let's Encrypt的事情,最后尝试了这个方法:但我发现它完全是多余的。考虑到我的部署只是一个服务和pod,有没有更简单的方法来使用Let's Encrypt 我使用的配置是:什么';将TLS添加到Kubernetes服务的最简单方法是什么?,kubernetes,lets-encrypt,kubernetes-ingress,Kubernetes,Lets Encrypt,Kubernetes Ingress,我在GKE的Kubernetes上公开了一个简单的web服务器,并注册了一个域。我正在寻找添加TLS到这个,所以它可以通过HTTPS访问。我听说过很多关于使用Let's Encrypt的事情,最后尝试了这个方法:但我发现它完全是多余的。考虑到我的部署只是一个服务和pod,有没有更简单的方法来使用Let's Encrypt 我使用的配置是: apiVersion: apps/v1 kind: Deployment metadata: name: web labels: app: w
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
labels:
app: web
spec:
replicas: 1
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: gcr.io/my-repo
ports:
- containerPort: 8080
livenessProbe:
httpGet:
path: /healthz
port: 8080
readinessProbe:
initialDelaySeconds: 10
httpGet:
path: /healthz
port: 8080
---
apiVersion: v1
kind: Service
metadata:
name: web-balancer-service
spec:
ports:
- port: 8080
protocol: TCP
targetPort: 8080
selector:
run: web
type: NodePort
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress-app
spec:
rules:
- host: my.domain.com
http:
paths:
- path: /*
backend:
serviceName: web-balancer-service
servicePort: 8080
========================================
编辑:根据@UtkuÖzdemir的建议,我试图将这些更改编入YAML。我使用创建了IP地址
gcloud compute addresses create example-ip-address --global
以及证书和配置,包括:
所有规定都正确,但当我使用kubectl description ManagedCertificates检查ManagedCertificates时,示例证书
是这样说的
Spec:
Domains:
app.domain.xyz
Status:
Certificate Name: xxxxxxxxxxxxxxxxxx
Certificate Status: Provisioning
Domain Status:
Domain: app.domain
Status: FailedNotVisible
Events: <none>
Spec:
域:
app.domain.xyz
地位:
证书名称:XXXXXXXXXXXXXXXX
证书状态:设置
域状态:
域名:app.Domain
状态:FailedNotVisible
活动:
我已经等了24小时,所以假设这不会改变 由于您使用GKE本身的入口控制器,因此当您创建入口资源时,它会触发在Google云平台中创建负载平衡器资源。通常,SSL终止由入口控制器负责,因此GCP负载平衡器负责执行SSL终止 这意味着,证书管理器将不适用于您的案例,因为证书将位于群集之外,并且流量在进入群集之前将已被SSL终止 幸运的是,GCP具有自配置SSL(让我们加密)支持。要利用这一点,您需要遵循以下步骤:
34.95.84.106
)A
类型记录(SSL证书中的记录),以指向您分配的静态IP。在本例中,它将是my-app.example.com->34.95.84.106
- 如果已有由入口创建的GCP负载平衡器,您对入口所做的更改(注释)将不会反映到现有的负载平衡器上。因此,请删除现有入口,确保现有负载平衡器消失,并使用正确的注释创建入口,以便正确配置负载平衡器
- 为了让我们的加密设置工作,您的DNS记录应该在适当的位置。它在颁发证书之前使用DNS检查域的所有者。此外,初始的资源调配可能需要相当长的时间(最多半小时)
34.95.84.106
)A
类型记录(SSL证书中的记录),以指向您分配的静态IP。在本例中,它将是my-app.example.com->34.95.84.106
- 如果已有由入口创建的GCP负载平衡器,您对入口所做的更改(注释)将不会反映到现有的负载平衡器上。因此,请删除现有入口,确保现有负载平衡器消失,并使用正确的anno创建入口
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: my-ingress-app annotations: ingress.gcp.kubernetes.io/pre-shared-cert: my-ssl-certificate # the name of the SSL certificate resource you created kubernetes.io/ingress.global-static-ip-name: my-static-ip # the name of the static ip resource you created kubernetes.io/ingress.allow-http: "false" # if you want to block plain http spec: rules: - host: my-app.example.com http: paths: - path: /* backend: serviceName: web-balancer-service servicePort: 8080