
# 为Nginx Ingress配置HTTPS证书
Ingress支持配置HTTPS证书以提供安全服务。
1. 请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)，使用kubectl连接集群。
2. Ingress支持使用kubernetes.io/tls和IngressTLS两种TLS密钥类型，此处以IngressTLS类型为例，详情请参见[创建密钥](https://support.huaweicloud.com/usermanual-cce/cce_10_0153.html)。kubernetes.io/tls类型的密钥示例及说明请参见[TLS Secret](https://kubernetes.io/zh-cn/docs/concepts/configuration/secret/#tls-secret)。
   
   执行如下命令，创建名为"**ingress-test-secret.yaml**"的YAML文件，此处文件名可自定义。
   ```
   vi ingress-test-secret.yaml
   ```
   **YAML文件配置如下：**
   ```
   apiVersion: v1
   data:
     tls.crt: LS0******tLS0tCg==
     tls.key: LS0tL******0tLS0K
   kind: Secret
   metadata:
     annotations:
       description: test for ingressTLS secrets
     name: ingress-test-secret
     namespace: default
   type: IngressTLS
   ```
   ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
   此处tls.crt和tls.key为示例，请获取真实的证书和密钥进行替换。tls.crt和tls.key的值为Base64编码后的内容。
   
   
3. 创建密钥。 
   ```
   kubectl create -f ingress-test-secret.yaml
   ```
   回显如下，表明密钥已创建。
   ```
   secret/ingress-test-secret created
   ```
   查看已创建的密钥。
   ```
   kubectl get secrets
   ```
   回显如下，表明密钥创建成功。
   ```
   NAME                         TYPE                                  DATA      AGE
   ingress-test-secret          IngressTLS                            2         13s
   ```
   
   
4. 创建名为"**ingress-test.yaml** "的YAML文件，此处文件名可自定义。
   
   ```
   vi ingress-test.yaml
   ```
   **1.23及以上版本集群** ：
   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress 
   metadata: 
     name: ingress-test
     namespace: default
   spec:
     tls: 
     - hosts: 
       - example.com
       secretName: ingress-test-secret  #替换为您的TLS密钥证书
     rules:
       - host: example.com
         http:
           paths:
             - path: /
               backend:
                 service:
                   name: <your_service_name>  #替换为您的目标服务名称
                   port:
                     number: <your_service_port>  #替换为您的目标服务端口
               property:
                 ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
               pathType: ImplementationSpecific
     ingressClassName: nginx
   ```
   **1.21及以下版本集群** ：
   ```
   apiVersion: networking.k8s.io/v1beta1
   kind: Ingress 
   metadata: 
     name: ingress-test
     annotations: 
       kubernetes.io/ingress.class: nginx
   spec:
     tls: 
     - hosts: 
       - example.com
       secretName: ingress-test-secret   #替换为您的TLS密钥证书
     rules: 
     - host: example.com
       http: 
         paths: 
         - path: '/'
           backend: 
             serviceName: <your_service_name>  #替换为您的目标服务名称
             servicePort: <your_service_port>  #替换为您的目标服务端口
   ```
   
   
5. 创建Ingress。 
   ```
   kubectl create -f ingress-test.yaml
   ```
   回显类似如下，表示Ingress服务已创建。
   ```
   ingress.networking.k8s.io/ingress-test created
   ```
   
   
6. 查看已创建的Ingress。 
   ```
   kubectl get ingress
   ```
   回显如下，表示Ingress服务创建成功。
   ```
   NAME          CLASS   HOSTS         ADDRESS    PORTS   AGE
   ingress-test  nginx   example.com              80,443  10s
   ```
   
   
7. 访问工作负载（例如[Nginx工作负载](https://support.huaweicloud.com/usermanual-cce/cce_10_0047.html#cce_10_0047__section155246177178)），在浏览器中输入安全访问地址https://example.com进行验证。
   
   其中，example.com可替换为您的域名。
   
   
 
