您必须连接到正确的主机。不这样做可能导致零分。
[ student@k8s-master1 ] $ ssh cka0000 00
Task
名为 nginx-stati c 的 NGINX Deployment 正在 nginx-static namespace 中运行。它通过名为 nginx-config 的 ConfigMap 进行配置。
更新 nginx-config ConfigMap 以仅允许TLSv1.2 TLSv1.3 连接。注意:您可以根据需要重新创建、重新启动或扩展资源。
您可以使用以下命令测试更改:
student @cka000048$ curl -k --tls-max 1.2 https://web.k8snginx.local
最后请将nginx-config ConfigMap 设置为不可变
题解:
步骤1、导nginx-config ConfigMap
由于 ConfigMap 的 immutable 属性设置为 true,不能直接更新现有的 ConfigMap。
需要先导出现有的 ConfigMap,然后删除现有的 ConfigMap ,并重新创建一个新的 ConfigMap
kubectl -n nginx-static get configmaps nginx-config
kubectl -n nginx-static get configmap nginx-config -o yaml > nginx-config.yaml
< 3 > 修改 nginx-config ConfigMap
vim nginx-config.yaml
在 data 部分中,修改 ssl_protocols 配置,将其值设置为 TLSv1.2 TLSv1.3;
bash
apiVersion: v1
data:
default.conf: |
# 定义 Nginx 服务器块
server {
# 监听 443 端口,启用 SSL 加密
listen 443 ssl;
# 定义该服务器块的域名
server_name web.k8snginx.local;
# 指定 SSL 证书文件的路径(公钥)
ssl_certificate /etc/nginx/ssl/tls.crt;
# 指定 SSL 证书的私钥文件路径
ssl_certificate_key /etc/nginx/ssl/tls.key;
# 定义启用的 SSL 协议
# 这里只启用了 TLSv1.3 以提高安全性
ssl_protocols TLSv1.3;
# 其他 SSL 设置,例如密码套件、HTTP/2 支持等,可以在此配置
# ssl_ciphers 'HIGH:!aNULL:!MD5'; # 定义强加密密码套件的示例
# ssl_prefer_server_ciphers on; # 可选,指定服务器优先使用的密码套件
# 可选:启用 HTTP/2 支持以提高性能
# listen 443 ssl http2;
# 可选:配置额外的设置,比如重定向、错误页面等
# 例如,强制 HTTP 请求重定向到 HTTPS:
# server {
# listen 80;
# server_name web.k8snginx.local;
# return 301 https://$host$request_uri;
# }
}
bash
apiVersion: v1
data:
default.conf: |
server {
listen 443 ssl;
server_name web.k8snginx.local;
ssl_certificate /etc/nginx/ssl/tls.crt;
ssl_certificate_key /etc/nginx/ssl/tls.key;
#ssl_protocols TLSv1.2 TLSv1.3;
ssl_protocols TLSv1.3;
...
添加不可变配置:
immutable: true #背掉这个单词
< 4 > 先删除,再重新创建 nginx-config ConfigMap
kubectl -n nginx-static delete configmaps nginx-config
kubectl apply -f nginx-config.yaml
< 5 > 需要重建 nginx-static Deployment。
kubectl rollout restart deployment nginx-static -n nginx-static
< 6 > 检查
确保新的 pod 是 running 的
kubectl -n nginx-static get pod