kubernetes强制服务使用https

kubernetes force service to use https

我想公开 k8s api 的使用服务。我的问题是 api 仅在 https 上的端口 6443 上响应。对 http return 状态 400 错误请求的任何尝试。我如何“强制”向用户 https 提供服务?

apiVersion: v1
kind: Service
metadata:
  name: k8s-api
  namespace: kube-system
  labels:
    label: k8s-api
spec:
  ports:
  - port: 80 #Port on which your service is running
    targetPort: 6443
    protocol: TCP
    name: http
  selector:
    name: kube-apiserver-master-node 

可能是这个?

apiVersion: v1
kind: Service
metadata:
  name: k8s-api
  namespace: kube-system
  labels:
    label: k8s-api
spec:
  ports:
  - port: 443 #Port on which your service is running
    targetPort: 6443
    protocol: TCP
    name: http
  selector:
    name: kube-apiserver-master-node 

如果您默认使用 Nginx 入口,它会 SSL 卸载 并发送普通的 HTTP 在后台。

如果您请求直接连接到 服务,更改端口 6443 可能会有帮助。

如果您使用的是 Nginx 入口,请确保它不会终止 SSL。

nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"