Term
|
Definition
- CA - openssl genrsa -out ca.key 2048 - openssl req -new -key ca.key -subj "/CN=KUBERNETES-CA" -out ca.csr - openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt - servers/clients - openssl genrsa -out srv_or_clnt.key 2048 - openssl req -new -key srv_or_clnt.key -subj "/CN=SRV_OR_CLNT/O=group" -out srv_or_clnt.csr - openssl x509 -req -in srv_or_clnt.csr -CA ca.crt -out srv_or_clnt.crt - System components that must begin with /CN=system:component_name - Kube-Scheduler - Kube-Controller-Manager - Kube-Proxy - Details stored in kube-config.yaml |
|
|
Term
|
Definition
- Need config file (openssl.conf) to specify all names - DNS.1 = kubernetes - DNS.2 = kubernetes.default - DNS.3 = kubernetes.default.svc - DNS.4 = kubernetes.default.svc.cluster.local - IP.1 = X.X.X.X - IP.2 = Y.Y.Y.Y - openssl req -new -key apiserver.key -sub "/CN=kube-apiserver" -out apiserver.csr -config openssl.cnf |
|
|
Term
|
Definition
- Server certs named after nodes - "/CN=node01" - Client certs named after nodes and contain group - "/CN=system:node:node01/O=SYSTEM:NODES |
|
|
Term
|
Definition
- Manually (as a service) - /etc/systemd/system/kube-apiserver.service - view logs: journalctl -u srv_name.service -l - kubeadm (as a pod) - /etc/kubernetes/manifests/kube-apiserver.yaml - view logs: - kubectl logs pod_name - docker ps -a (along with) docker logs "container ID" |
|
|
Term
|
Definition
- openssl x509 -in blah.crt -text -noout - Issuer - Validity (Not After) - Subject - Subj Alt Name |
|
|
Term
|
Definition
apiVersion: certificates.k8s.io/v1bet1 kind: CertificateSigningRequest metadata: name: spec: groups: - system:authenticated usages: - digital signature - key encipherment - server auth request: ****base64 user csr***** |
|
|
Term
|
Definition
- kubectl get csr - kubectl get csr "name" -o yaml - kubectl certificate approve jane - kubectl certificate deny jane |
|
|
Term
|
Definition
- done by kube-controller-manager - crt & key locations in kube-controller-manager.yaml |
|
|
Term
|
Definition
- $HOME/.kube/config - kubectl config view (--kubeconfig=my-config) - kubectl config use-context new_user@new_context - will change current-context in config file - apiVersion: v1 kind: Config current-context: admin@cluster-name clusters: - name: cluster-name cluster: certificate-authority: ca.crt certificate-authority-data: "optional base64 crt" server: https://.... contexts: - name: admin@cluster-name context: cluster: cluster-name user: admin namespace: (optional) users: - name: admin user: client-certificate: admin.crt client-key: admin.key |
|
|
Term
|
Definition
- kubectl proxy - uses credential in KubeConfig file - curl http://localhost:8001 -k - to list apis |
|
|
Term
|
Definition
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: developer rules: - apiGroups: [""] ----> blank is "core" resources: ["pods"] verbs: ["list", "get", "create", "update", "delete"] resourceNames: ["pod1_name", "pod2_name"] ---> optional |
|
|
Term
RoleBinding Yaml (bind user to role) |
|
Definition
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: devuser-binding subjects: - kind: User name: dev-user apiGroup: rbac.authoriztion.k8s.io roleRef: kind: Role name: developer --->from role yaml apiGroup: rbac.authorization.k8s.io |
|
|
Term
Kubectl roles & role bindings |
|
Definition
- kubectl get roles - kubectl get rolebindings - kubectl describe role|rolebinding "name" - to check access - kubectl auth can-i create deployments (--as "user") |
|
|
Term
View namespaced & cluster resources |
|
Definition
- kubectl api-resources - kubectl api-resources --namespaced=true - kubectl api-resources --namespaced=false |
|
|
Term
|
Definition
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: cluster-admin-role rules: - apiGroups: [""] resources: ["nodes"] verbs: ["list","get","create","delete"] |
|
|
Term
|
Definition
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: cluster-admin-role-binding subjects: - kind: User name: cluster-admin apiGroup: rbac.authoriztion.k8s.io roleRef: kind: ClusterRole name: cluster-admin-role --->from role yaml apiGroup: rbac.authorization.k8s.io |
|
|
Term
kubectl clusterroles & clusterrolebindings |
|
Definition
- kubectl get clusterroles - kubectl get clusterrolebindings - kubectl describe clusterrole|clusterrolebinding "name" - to check access - kubectl auth can-i create deployments (--as "user") |
|
|
Term
|
Definition
- image: docker.io/user_account/image_repo - image: nginx --> docker.io/nginx/nginx - image: private-registry.io/apps/internal-app |
|
|
Term
|
Definition
- kubectl create secret docker-registry regcred - --docker-server=private-registry.io - --docker-username=u - --docker-password=pw - --docker-email=u@org.com - spec: containers: - name: app image: private-rgistry.io/apps/internal-app imagePullSecrets: - name: regcred |
|
|
Term
pod & container security yaml |
|
Definition
- For Pods - spec: securityContext: runAsUser: 1000 - For Containers in Pod - spec: containers: securityContext: runAsUser: capabilities: add: ["MAC_ADMIN"] |
|
|
Term
|
Definition
- Pods spec: labels: role: db
- Network Policy apiVersion: network.k8s.io/v1 kind: NetworkPolicy metadata: name: db-policy spec: podSelector: matchLabels: role: db --entire policy applies to this node with this label policyTypes: - Ingress ingress: - from: - podSelector: matchLabels: name: api-pod --allow only ingress from this node with this label ports: - protocol: TCP port: 3306 |
|
|