K8sにはユーザー管理コンポーネントがありません。クライアントから渡された証明書のCNはユーザー名として抽出され、Oフィールドはグループ名です。
cfsslをインストールする
https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
cp cfssl_linux-amd64 /usr/local/bin/cfssl
cp cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo
cfssljson_linux-amd64 /usr/local/bin/cfssljson
chmod +x /usr/local/bin/cfssl*
新しいユーザーceph証明書
- jsonを準備し、実際に使用する場合は#の後に削除してください
cat <<EOF>> ceph.json { "CN": "ceph", # 用户 "hosts": [], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "shanghai", "L": "shanghai", "O": "k8s", #组 "OU": "System" } ] } EOF
- crtを生成する
cfssl gencert -ca=/etc/kubernetes/pki/ca.crt \
-ca-key=/etc/kubernetes/pki/ca.key \
-profile=kubernetes ./ceph.json | cfssljson -bare ceph
cfssl gencert -ca=/etc/kubernetes/pki/ca.crt \
-ca-key=/etc/kubernetes/pki/ca.key \
./ceph.json | cfssljson -bare ceph
これまでのところ、cephユーザーの証明書が生成されています
cephという名前空間を作成します。cephはこの名前空間を完全に管理できます
ここでは、cla *** oleの管理者を役割バインドとしてcephにバインドします。このコマンドは、k8sを管理できるユーザーで実行する必要があります
kubectl create rolebinding ceph-admin-binding \
--clusterrole=admin \
--user=ceph \
--namespace=ceph
検証証明書
centos7のcurl 7.29.0がceph.pemのパブリック証明書をAPIに送信できないようで、APIが匿名アクセスと見なされ、curl 7.64.0が通常どおりAPIにアクセスできます。
curl -X GET --cert ceph.pem --key ceph-key.pem --cacert cacrt https://192.168.254.99:6444/api/v1/namespaces/ceph/pods
構成を生成
- クラスター情報を生成する
export KUBE_APISERVER=https://192.168.254.99:6444
kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/pki/ca.crt \
--embed-certs=true \
--server=${KUBE_APISERVER} \
--kubeconfig=ceph.kubeconfig
- 顧客サービス側でパラメーターを設定する
kubectl config set-credentials ceph \
--client-certificate=ceph.pem \
--client-key=ceph-key.pem \
--embed-certs=true \
--kubeconfig=ceph.kubeconfig
- コンテキストパラメータを設定する
kubectl config set-context ceph \ #这个是上下文名称,可随意取
--cluster=kubernetes \
--user=ceph \
--namespace=ceph \
--kubeconfig=ceph.kubeconfig
- デフォルトのコンテキストを設定します。これは〜/ .kub / configのスタイルで記述できないことに注意してください。それ以外の場合、実行は成功しません。
kubectl config use-context ceph --kubeconfig=ceph.kubeconfig
kubeconfigを使用する
kubectl --kubeconfig=ceph.kubeconfig get pod
.kubeにコピーして使用することもできます
cp ceph.kubeconfig ~/.kube/config