Dane wejściowe:
- system: Debian 9,
- użytkownik: root,
- Kubernetes 1.21.3.
kind: NamespaceapiVersion: v1metadata:name: seproblabels:name: seprob
openssl genrsa -out seprob.key 2048
openssl req -new -key seprob.key -out seprob.csr -subj "/CN=seprob/O=yolandi"
openssl x509 -req -in seprob.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out seprob.crt -days 500
Certyfikat i klucz dostarczamy użytkownikowi aby skonfigurował sobie odpowiednio kubectl. Może to zrobić np. w poniższy sposób:
kubectl config set-credentials seprob --client-certificate=~/Documents/seprob_yolandi_kubernetes.crt --client-key=~/Documents/seprob_yolandi_kubernetes.crt
kubectl config set-context seprob-yolandi --cluster=yolandi --namespace=seprob --user=seprob
Dodatkowo musi ustawić w konfiguracji adres oraz CA klastra. Aktualnie jeżeli będziemy się próbowali połączyć to dostaniemy błąd.
Najpierw stwórzmy obiekt Role:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: seprob
name: seprob-role
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["deployments", "replicasets", "pods"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
Teraz obiekt RoleBinding:
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: seprob-rolebinding
namespace: seprob
subjects:
- kind: User
name: seprob
apiGroup: ""
roleRef:
kind: Role
name: seprob-role
apiGroup: ""
W tym momencie już powinniśmy mieć możliwość sprawdzić np. czy mamy jakieś Pody w przestrzeni nazw.