Kubernetes is an open-source platform used for automating deployment, scaling, and management of containerized applications. In this tutorial, we will discuss how to create a root account in a Kubernetes cluster.
ClusterRoleBinding
crb.yml
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: tkjpedia-cluster-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: tkjpedia:masters
k apply -f crb.yml
Create New User
Create k8s user using certificate
Generate a private key
openssl genrsa -out tkjpedia.key 4096
create a signing request
openssl req -new -key tkjpedia.key -out tkjpedia.csr -subj "/CN=tkjpedia/O=tkjpedia:masters"
encode signing request to base64
cat tkjpedia.csr | base64 | tr -d '\n'
create csr yaml file and apply to k8s cluster
csr.yml
apiVersion: certificates.k8s.io/v1 kind: CertificateSigningRequest metadata: name: tkjpedia-csr spec: groups: - system:authenticated request: base64-from-steps-above signerName: kubernetes.io/kube-apiserver-client usages: - digital signature - key encipherment - client auth
k apply -f csr.yml
Approve the signing request
k certificate approve tkjpedia-csr
view key and cert
KEY=`cat ${USERNAME}.key | base64 | tr -d '\n'` CERT=`kubectl get csr ${USERNAME}-csr -o jsonpath='{.status.certificate}'` echo $KEY echo $CERT
create kube config file
apiVersion: v1 kind: Config clusters: - name: tkjpedia-cluster cluster: server: tkjpedia-cluster certificate-authority-data: tkjpedia-cluster-certificate-authority-data users: - name: tkjpedia-admin user: client-certificate-data: from-command-above client-key-data: from-command-above contexts: - name: tkjpedia-cluster-tkjpedia-admin context: user: tkjpedia-admin cluster: tkjpedia-cluster current-context: tkjpedia-cluster
Thank you.