8 - Deploy Microservices to Kubernetes cluster
- 
back to GitLab CICD - Nana course
 - 
https://techworld-with-nana.teachable.com/courses/1769488/lectures/39916960
 - 
Useful lecture when not using ArgoCD
 
Create a Namespace and a ServiceAccount for the namespace:
# create the namespace "my-microservice"
kubectl create namespace my-microservice
# serviceaccount name: "cicd-saa"
kubectl create serviceaccount cicd-sa --namespace=my-microservice
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: my-microservice
  name: cicd-role
rules:
- apiGroups [""]
  resources:
  - pods
  - services
  - secrets
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups 
  - extensions
  - apps
  resources:
  - deployments
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
Associate a ServiceAccount with a Role:
# We must define
# 1. Role
# 2. ServiceAccount
# 3. Namespace
kubectl create rolebinding cicd-rb \
  --role=cicd-role \
  --serviceaccount=my-microservice:cicd-sa \
  --namespace=my-microservice
ServiceAccount -> RoleBinding -> Role
4 - Deploy to Kubernetes (part 1)
This trick to get the docker-registry credentials is interesting:
deploy:
  script:
  - kubectl create secret docker-registry m6-registry-key --docker-server=$CI_REGISTRY --docker-username=$GITLAB_USER --docker-password=$GITLAB_PAASSWORD -n my-microservice --dry-run=client -o yaml | kubectl apply -f -