在Docker Desktop | Kubernetes 环境 通过 ingress-nginx 为 Kubernetes Dashboard 2.6.1 提供 Chrome 支持的 HTTPS 访问

6 篇文章 0 订阅
5 篇文章 0 订阅

在 Windows 10 | Docker Desktop | Kubernetes 环境 通过 ingress-nginx 为 Kubernetes Dashboard 2.6.1 提供 Chrome 支持的 HTTPS 访问

  1. 安装 http 方式的 dashboard
kubectl apply -f https://github.com/kubernetes/dashboard/blob/v2.6.1/aio/deploy/alternative.yaml
  1. 使用 openssl 创建自签名证书
# 创建目录
cd /data/k8s-data
mkdir certs

# 一、成为证书颁发机构
#
# 生成 CA 私钥
openssl genrsa -out arnoCA.key 4096
#
# 或者 生成 需要密码的 私钥
# openssl genrsa -des3 -out arnoCA.key 4096
#
# 生成 CA 公钥/根 证书
# C  = Country Name (2 letter code)
# ST = State or Province Name (full name)
# L  = Locality Name (eg, city)
# O  = Organization Name (eg, company)
# OU = Organizational Unit Name (eg, section)
# CN = Common Name (e.g. server FQDN or YOUR name)
# emailAddress = Email Address
# -days 7300 为 20 年
openssl req -x509 -new -nodes -key arnoCA.key -sha256 -days 7300 -out arnoCA.pem -subj "/C=CN/ST=Guang Dong/L=Shen Zhen/O=ArnoJin/OU=IT Department/CN=Arno Jin Root CA/emailAddress=arno@arnojin.com"
ls -lah
# 此时生成了2个文件 arnoCA.key arnoCA.pem
# 其中 arnoCA.pem 用于在 Chrome 或者 Windows, Linux 中导入

# 二、创建 使用 CA 公钥/根 证书 签名的 域名 证书
NAME=k8s.arno
# 生成 用于 域名的 私钥
openssl genrsa -out ${NAME}.key 4096
# 生成 用于 域名的 证书,注意这里 CN 必须设置为对应的域名
openssl req -new -key ${NAME}.key -out ${NAME}.csr -subj "/C=CN/ST=Guang Dong/L=Shen Zhen/O=ArnoJin/OU=IT Department/CN=${NAME}/emailAddress=arno@arnojin.com"
# 创建 证书签名 扩展配置文件(必须做以下设置,否则 Chrome 还是会不认)
tee $NAME.ext <<-'EOF'
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = k8s.arno
EOF
# 使用 CA 公钥/根 证书 为 域名 证书签名(可选)
openssl x509 -req -in $NAME.csr -CA arnoCA.pem -CAkey arnoCA.key -CAcreateserial -out $NAME.crt -days 7300 -sha256 -extfile $NAME.ext

# 验证 域名 证书 对域名的有效性
openssl verify -CAfile arnoCA.pem -verify_hostname ${NAME} ${NAME}.crt

# 此时生成了 k8s.arno.crt k8s.arno.key k8s.arno.ext k8s.arno.crs
# 其中 k8s.arno.crt k8s.arno.key 这2个文件用于 Nginx

# 将 arnoCA.pem 通过 Chrome 的 chrome://settings/security 管理证书 -> 受信任的根证书颁发机构 -> 导入
# 
# 涉及的 openssl 配置文件路径 /etc/ssl/openssl.cnf
#
# 将 arnoCA.pem 根证书添加到 ubuntu 的信任列表
# sudo cp arnoCA.pem /usr/local/share/ca-certificates/arnoCA.crt
# sudo update-ca-certificates
  1. 创建 k8s secret
kubectl -n kubernetes-dashboard create secret tls kubernetes-dashboard-certs-k8s-arno --cert=$NAME.crt --key=$NAME.key
  1. 创建 kubernetes-dashboard ingress
# kubectl apply -f kubernetes-dashboard-ingress.yaml

kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  namespace: kubernetes-dashboard
  name: kubernetes-dashboard
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/enable-access-log: "true"
    nginx.ingress.kubernetes.io/configuration-snippet: |
       access_log /var/log/nginx/dashboard-access.log upstreaminfo if=$loggable;
       error_log  /var/log/nginx/dashboard-error.log;
spec:
  tls:
  - hosts:
    - "k8s.arno"
    secretName: kubernetes-dashboard-certs-k8s-arno
  rules:
  - host: "k8s.arno"
    http:
      paths:
      - pathType: Prefix
        path: /
        backend:
          service:
            name: kubernetes-dashboard
            port:
              number: 80
# 创建 ingress
kubectl apply -f kubernetes-dashboard-ingress.yaml

# 通过 https 访问 Kubernetes Dashboard
curl -L https://k8s.arno
# 如果 证书没有安装到系统,则可以使用如下参数规避 SSL 安全警告
# curl -L -k --tlsv1 https://k8s.arno
# curl -L -k -v https://k8s.arno
  1. 创建 token 登录 dashboard
# kubectl apply -f account.yaml

kind: ServiceAccount
apiVersion: v1
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: admin-user
roleRef:
  kind: ClusterRole
  apiGroup: rbac.authorization.k8s.io
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard
# 使用 Token 登录
kubectl apply -f account.yaml
kubectl -n kubernetes-dashboard create token admin-user
  1. 参考
    1. Getting Chrome to accept self-signed localhost certificate
    2. 自签名证书配置HTTPS

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
迎访问我的博客 原文 天天成长 - 在 Windows 10 | Docker Desktop | Kubernetes 环境 通过 ingress-nginx 为 Kubernetes Dashboard 2.6.1 提供 Chrome 支持的 HTTPS 访问

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天天成长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值