k8s 1.19.1ユーザーの作成

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

おすすめ

転載: blog.51cto.com/penguintux/2535461
おすすめ