Kubernetes入口SSL证书

时间:2019-12-02 10:55:44

标签: ssl kubernetes

我是k8s的新手,无法了解如何将SSL与Ingress结合使用。 这是我的应用程式Yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations: {}
  name: app-name
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: app-name
  template:
    metadata:
      labels:
        app: app-name
    spec:
      containers:
        - name: app-name
          image: dockerhub:app-name
          imagePullPolicy: Always
          ports:
            - containerPort: 80
      imagePullSecrets:
        - name: registrypullsecret

入口Yaml:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: app-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    ingress.kubernetes.io/ssl-redirect: "true"

spec:
  tls:
    - hosts:
      - sub.example.com
      secretName: tls-secret
  rules:
    - host: sub.example.com
      http:
        paths:
          - backend:
              serviceName: app-name
              servicePort: 80
            path: /

还有我的tls-secret yaml

apiVersion: v1
kind: Secret
metadata:
  name: tls-secret
  namespace: default
data:
  tls.crt: |
    MIIFfD...

  tls.key: |
    MIIEvQ...

我的应用托管在DigitalOcean上,但我使用外部DNS。我通过

应用了tls-secret
kubectl apply -f tls-secret.yaml

并尝试在浏览器中打开应用程序,但它仍然不安全。浏览器说证书无效“ Kubernetes入口控制器伪证书” 我应该做一些额外的配置还是清单文件中有错误?

1 个答案:

答案 0 :(得分:1)

我建议您只需遵循以下提到的步骤-

  1. 使用基于头盔图表的步骤从here安装cert-manager

  2. 您可以关注this stackoverflow post

请注意-您无需在此处创建tls机密,cert-manager将通过证书中提到的名称自动创建机密,一旦您将机密名称修补到TLS并成功,cert-manager就会进行acme挑战,证书将获得就绪状态。

使用

cert-manager.io/v1alpha2

此群集发行者中的api版本,如果其中提到的一个不可接受