Skip to content

Commit

Permalink
Added readme file for service account
Browse files Browse the repository at this point in the history
  • Loading branch information
devopspro-bot committed Jun 4, 2023
1 parent 3879d98 commit 654f936
Showing 1 changed file with 92 additions and 0 deletions.
92 changes: 92 additions & 0 deletions Service-Account/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Service Account in Kubernetes Practical Guide

Service Accounts in Kubernetes allow you to authenticate and authorize applications and services running within a cluster. They provide a way to grant specific permissions and access control to pods and containers.

In this practical, we will cover the following steps:

1. Creating a Service Account
2. Creating a token for the Service Account
3. Creating a Role to define permissions
4. Creating a RoleBinding to associate the Role with the Service Account
5. Using the Service Account in a Pod
6. Verifying access permissions

## Setting Up Your Service Account
To create a Service Account, use the following commands:
```
kubectl create sa mysa
```

To create a token for the Service Account "mysa" :
```
kubectl create token mysa
```

## Defining Permissions with Roles
To define permissions for the Service Account, we need to create a Role. Use the following YAML file:

```
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups:
- ''
resources:
- pods
verbs:
- get
- watch
- list
```

To associate the Role with the Service Account, create a RoleBinding. Use the following YAML file:

```
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods
namespace: default
subjects:
- kind: ServiceAccount
name: mysa
namespace: default
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
```

## Putting It All Together: Using Service Accounts in Pods
To use the Service Account in a Pod, update the Pod definition with the appropriate serviceAccountName. Use the following YAML file:

```
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
serviceAccountName: mysa
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
```

## Ensuring Access: Verifying Permissions
To verify the access permissions of the Service Account, use the following command:

```
kubectl auth can-i get pods --as=system:serviceaccount:default:mysa
```

#### Explanation:
- The command checks if the Service Account "mysa" has permission to get pods.
- The output will indicate whether the access is allowed or denied.

## Conclusion
Congratulations! You have successfully created and configured a Service Account in Kubernetes. You learned how to create a Service Account, associate it with a Role, and use it in a Pod. You also verified the access permissions of the Service Account. Feel free to explore further and customize the roles and permissions based on your specific requirements.

0 comments on commit 654f936

Please sign in to comment.