日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用户自助查看kubectl使用的证书状态以及如何更新

發(fā)布時(shí)間:2025/5/22 编程问答 81 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用户自助查看kubectl使用的证书状态以及如何更新 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
維護(hù)人日期內(nèi)容
yanke6792019-4-23初版

基本概念

  • k8s 中有2種用戶,一般用戶和serviceAccount。

    • 一般用戶: 給集群外部用戶使用,例如集群管理員通過 kubectl 這個(gè)客戶端來操作集群,使用的就是一般用戶,這個(gè)用戶通過 k8s 的 RBAC 權(quán)限系統(tǒng)獲得相應(yīng)權(quán)限。
    • serviceAccount: 給集群內(nèi)的資源使用,例如pod訪問apiserver。每個(gè)pod都有一個(gè) default serviceAccount。
  • 一個(gè)完整的訪問k8s api流程

  • +-----------------------------------------------------------------------------------------------------------+ | | | +---------------------------------------------------------------------------+ +--------+ | | | | | | | | +--------+ | +------------------+ +----------------+ +--------------+ +------+ | | | | | | | | | | | | | Admission | | | | | | | | | Client +------> | Authentication +-> | Authorization +-> | Control +-> |Logic | +--> | Others | | | | | | | | | | | | | | | | | | | +--------+ | +------------------+ +----------------+ +--------------+ +------+ | | | | | | | | | | | | | | | | | | Kube-apiserver | | | | | +---------------------------------------------------------------------------+ +--------+ | | | +-----------------------------------------------------------------------------------------------------------+ 復(fù)制代碼

    本文操作前提

    以下操作以 root 賬號(hào)在node上執(zhí)行。

    查看 kubectl 當(dāng)前證書狀態(tài)

    證書是k8s中用于認(rèn)證(Authentication)的具體機(jī)制。

    1. 查看 kubectl 上下文

    # 如果有配置環(huán)境變量,kubectl會(huì)讀取變量定義的config文件 $ env | grep -i KUBECONFIG # kubectl 默認(rèn) config 文件 $ ls -lh ~/.kube/config -rw------- 1 root root 6.2K Apr 8 2018 /root/.kube/config $ # 查看 kubectl 配置的上下文(context) # 注意看 user name,client-certificate-data。 # 留意 cluster 下的 server,以及 context 下的 namespace,等下生產(chǎn)證書是需要用到。 $ kubectl config view apiVersion: v1 clusters: - cluster:certificate-authority-data: REDACTEDserver: https://10.25.65.209:6443name: kubernetes contexts: - context:cluster: kubernetesnamespace: szd-dev-f0109307user: kubectlname: kubernetes current-context: kubernetes kind: Config preferences: {} users: - name: kubectluser:client-certificate-data: REDACTEDclient-key-data: REDACTED 復(fù)制代碼

    2. 查看 kubectl 客戶端證書狀態(tài)

    # 從 config 文件截取 client-certificate-data,放到一個(gè)文件中。 cat ~/.kube/config --> 找到 當(dāng)前 user 對(duì)應(yīng)的 client-certificate-data。 # 此處保存到如下文件: $ pwd /root/szd-dev-f0109307_kubectl $ ls kubectl_client-certificate-data.txt $ cat kubectl_client-certificate-data.txt LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQxRENDQXJ5Z0F3SUJBZ0lVSlFRRFQvbTdJcjFhQjhsWnFnNGNoVStrM0pZd0RRWUpLb1pJaHZjTkFRRUwKQlFBd1pURUxNQWtHQTFVRUJoTUNRMDR4RURBT0JnTlZCQWdUQjBKbGFVcHBibWN4RURBT0JnTlZCQWNUQjBKbAphVXBwYm1jeEREQUtCZ05WQkFvVEEyczRjekVQTUEwR0ExVUVDeE1HVTNsemRHVnRNUk13RVFZRFZRUURFd3ByCmRXSmxjbTVsZEdWek1CNFhEVEU0TURRd09EQTVNekF3TUZvWERURTVNRFF3T0RBNU16QXdNRm93WWpFTE1Ba0cKQTFVRUJoTUNRMDR4RURBT0JnTlZCQWdUQjBKbGFVcHBibWN4RURBT0JnTlZC ......敏感信息...... M5U2NMc1haVGNQeVRSR3RoMHVGRisvUTIrOHRjQzZLemM2bXZWdkpsODNUWFpsYkRYLzR5bTFxd0lECkFRQUJvMzh3ZlRBT0JnTlZIUThCQWY4RUJBTUNCYUF3SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFR0NDc0cKQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDTUFBd0hRWURWUjBPQkJZRUZFMXhuc3NHcXpMNlVtcTE4enNNbGFLVQpIU1QvTUI4R0ExVWRJd1FZTUJhQUZNQlpOVDJNNXY2bEJWZnZ5QjQ0aDk3Nk00SlJNQTBHQ1NxR1NJYjNEUUVCCkN3VUFBNElCQVFBTDhQaGNQRGFxRVFOUFRYUE91ZkJjWkpsNjF1RCtZRHF3Rjgzci9QQzVDWElHNzg4WFBOYncKdTAwVS9ZbWNXZEpMbldSZWp2Q3B2Qlc0dUVDbWJEckRyU28yU2xNUS8rN0x2a0MvWHd6bU50eWxKWnduYW9RbQplVnhwUXRtcXhJejBianlwL2tCUS9yK0x2N2hTeGtOLzBScGZVQ0ViMUJkT0laOFVJaEJlU2wxSmtQNnVxOFZ6Cm1sQjdpR1NLZFFBK011OU9SaWFhcjdkbk1qNk9ITzNxSE84dzRNZUptVEZRMTdTclM1WWk0ZTZiVTJ3QjJUV20Kcnd2NXQrNGd6WkNZcHJMaThzcDA1R2xHdWdOVjFpRGg4aDZNTVg2ZnNkMjZqRjB5ekdxQzhidDRCV3AzR2Uxagp2S012RlFXYTlqQzNpV3dOSGdCZGNueVhyNitNYkRsegotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== $ 復(fù)制代碼# 解碼查看客戶端證書狀態(tài),可以看到 Not After : Apr 8 09:30:00 2019 GMT,已經(jīng)過期。 # 注意 subject 中 CN 對(duì)應(yīng) k8s 中 role/clusterrole 的 user name;O 對(duì)應(yīng) group name。 $ base64 -d ./kubectl_client-certificate-data.txt | openssl x509 -text -noout Certificate:Data:......Signature Algorithm: sha256WithRSAEncryptionIssuer: C=CN, ST=BeiJing, L=BeiJing, O=k8s, OU=System, CN=kubernetesValidityNot Before: Apr 8 09:30:00 2018 GMTNot After : Apr 8 09:30:00 2019 GMTSubject: C=CN, ST=BeiJing, L=BeiJing, O=k8s, OU=System, CN=kubectlSubject Public Key Info:...... $ 復(fù)制代碼

    重新簽發(fā)客戶端證書

    客戶端證書的生產(chǎn)流程為:

    1. 生成客戶端ssl私鑰 2. 使用私鑰生成證書請(qǐng)求 3. 通過管理員給予的 ca 證書、ca key給客戶端簽名,生產(chǎn)客戶端訪問用的證書,簽名方式為 x509。`/etc/kubernetes/ssl`下的文件不要隨意更改,唯一一個(gè)能改的是`ca-config.json`中的`expiry`,8760h 為 365 天。 復(fù)制代碼 $ cat ca-config.json { "signing": {"default": {"expiry": "8760h"},"profiles": {"kubernetes": {"usages": ["signing","key encipherment","server auth","client auth"],"expiry": "8760h"}} } 復(fù)制代碼# 從剛才 kubectl config view 獲取到當(dāng)前集群的 server,即 master_vip,以及 namespace。 MASTER_VIP='10.25.65.209' NAMESPACE='szd-dev-f0109307' # 生成客戶端證書請(qǐng)求以及配置證書的步驟封裝在以下shell腳本中,給它傳參數(shù)執(zhí)行即可。 cd /opt/k8s/node/scripts && sh ./k8s-node-rbac ${MASTER_VIP} ${NAMESPACE} 復(fù)制代碼

    驗(yàn)證重新簽發(fā)的證書狀態(tài)

    參照 `2. 查看 kubectl 客戶端證書狀態(tài)`。 可以看到證書狀態(tài)已經(jīng)更新。 復(fù)制代碼 $ base64 -d kubectl_client-certificate-data.txt | openssl x509 -text -noout Certificate:Data:Version: 3 (0x2)Serial Number:......Signature Algorithm: sha256WithRSAEncryptionIssuer: C=CN, ST=BeiJing, L=BeiJing, O=k8s, OU=System, CN=kubernetesValidityNot Before: Apr 23 04:55:00 2019 GMTNot After : Apr 22 04:55:00 2020 GMTSubject: C=CN, ST=BeiJing, L=BeiJing, O=k8s, OU=System, CN=kubectl 復(fù)制代碼

    總結(jié)

    以上是生活随笔為你收集整理的用户自助查看kubectl使用的证书状态以及如何更新的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。