This repo contains kubernetes manifests for for deploying the vote-app application and cipher-tool github cipher-tool dockerhub application
- fork and clone the k8s repo to stay updated with any changes.
This repo contains codes for : - ansible
- in this configuration, i used
terraform
to provission an ansible control host and a fleet of servers - in the ansible configurations, i have defined
roles
andplaybooks
to manage the fleet of servers from the control host - i have defind roles to
ping
, check commecetivity tospecific ports
and performapache
installations on the server fleets. - to run any of the
playbooks
ansible-playbook -i inventory playbook_name.yaml
- you can also run
adhoc
orone liners
such as the ping commandansible -i inventory -m ping
- ansible connects to the managed servers via ssh, therefore you may need to specify a keypair file, to authenticate connections from the control host to the servers
- the
inventory
file contains a list ofprivate ips
defined in yaml
- in this configuration, i used
- argo_cd
- this manifest file defines how you can deploy the vote-app application via
argo_cd
, a continous delivery (cicd) tool.- fork the practice-devops-assignmnets repo and refer to assignment_014 for how to set up your
argo_cd
server.
- fork the practice-devops-assignmnets repo and refer to assignment_014 for how to set up your
- this manifest file defines how you can deploy the vote-app application via
- eks - amazon elastic kubernetes service
- here, I have deffined in
terraform
how to set up aneks
cluster, complete with the nrtworking required to succesfully deploy the vote-app application - there are modules which contains the cluster setup, networking and jumper server
- refer to the eks - amazon elastic kubernetes servicedirectory structure for how to set up a similar cluster via
terraform
- to run this code:
- (fork)[https://github.com/michaelkedey/k8s/fork] and clone the [k8s repo]
- make sure you have
terraform
configured on your local - make sure you have
awscli
configured with the correct iam credentials cd
to theeks
directorycd eks/terraform
- change the
backend
configuration to local- open the providers.tf file and comment out the backend configuration
- open the
.format.sh
script and modify the init command by removing the backend arguementterraform init
- open the
env/.terraform.tfvars
file and change the the key_name to theiam key
you have inaws
- chnage the private-key to the path to the downloaded
key pair
on your local machine
- execute the
.format.sh
to initialize terraform on your local macchine, and format and valifdate the code - run
terraform plan
to plan the resources that will be created - run
terraform apply
and submit yes when prompted, to create the resources - get the
cluster name
andjumper server public ip
from the outputs in the terminal
- remember
eks
is very expensive to run, therefor resources must be destroyed after pcatice - access the cluster from your local machine
- run
aws eks update-kubeconfig --name <cluster-name> --region <cluster-region>
- verify the eks cluster is accessible from your loca; environemnt
- run
kubectl config get-contexts
- destroy your
eks
terraform destroy --auto-approve
- here, I have deffined in
- helm
- this contains
helm
charts which completely define how to deploy both the vote-app application and cipher-tool github cipher-tool dockerhub applications viahelm
- it has 3 charts vote-app-char-1, vote-app-char-2 and cipher-tool-chart
- both vote app charts contain similar configurations to deploy the vote-app application
- the cipher-tool-chart contains manifests to deploy the cipher-tool github cipher-tool dockerhub application
- happy helming
- this contains
- pod_scalling
- here, I have deffined similar helm charts for the
vote-app
but with extra resources or features. - this include :
- happy helming
- here, I have deffined similar helm charts for the
- s3_helm_repo
- this contains
terraform
configurations to set up ans3
bucket as ahelm
`repository - to add my
vote-app-repo
to your helm charts- add the repo
helm repo add s3-repo https://helm-myoneansonlyhelmrepobucket.s3.us-east-1.amazonaws.com
- update repo list
helm repo update
- install the
vote-app
via the new repo you just addedhelm install vote-app s3-repo/vote-app-chart-1
- install the
cipher-tool
via the new repo you just addedhelm install vote-app s3-repo/cipher-tool-v020
- happy helming
- add the repo
- this contains
$ tree
.
|-- README.md
|-- ansible
| |-- inventory
| |-- playbooks
| | |-- apache.yaml
| | |-- apache2.yaml
| | `-- networking.yaml
| |-- roles
| | |-- apache
| | | |-- defaults
| | | | `-- main.yaml
| | | |-- handlers
| | | |-- meta
| | | | `-- main.yaml
| | | |-- tasks
| | | | `-- main.yaml
| | | |-- templates
| | | | `-- index.html.j2
| | | `-- vars
| | `-- networking
| | |-- README.md
| | |-- defaults
| | |-- handlers
| | |-- tasks
| | `-- vars
| `-- server_fleet
| |-- env
| | `-- backend.tfvars
| |-- main.tf
| |-- modules
| | |-- master
| | | |-- data.tf
| | | |-- iam.tf
| | | |-- master.tf
| | | |-- output.tf
| | | |-- provider.tf
| | | |-- ssm_agent.sh
| | | `-- variables.tf
| | |-- networking
| | | |-- locals.tf
| | | |-- network.tf
| | | |-- output.tf
| | | |-- provider.tf
| | | |-- store.tf
| | | `-- variables.tf
| | `-- servers
| | |-- data.tf
| | |-- locals.tf
| | |-- outputs.tf
| | |-- providers.tf
| | |-- servers.tf
| | `-- variables.tf
| |-- output.tf
| |-- providers.tf
| `-- variables.tf
|-- argo_cd
| `-- vote_app.yaml
|-- eks
| |-- kubeconfig
| `-- terraform
| |-- env
| | `-- backend.tfvars
| |-- main.tf
| |-- modules
| | |-- cluster
| | | |-- cluster.tf
| | | |-- outputs.tf
| | | |-- provider.tf
| | | |-- ssm_agent.sh
| | | `-- variables.tf
| | |-- jumper_server
| | | |-- bastion.tf
| | | |-- output.tf
| | | |-- provider.tf
| | | |-- ssm_agent.sh
| | | `-- variables.tf
| | `-- networking
| | |-- cluster_network.tf
| | |-- locals.tf
| | |-- output.tf
| | |-- provider.tf
| | |-- store.tf
| | `-- variables.tf
| |-- outputs.tf
| |-- providers.tf
| `-- variables.tf
|-- get_helm.sh
|-- helm
| |-- cipher-tool-chart
| | |-- Chart.yaml
| | |-- charts
| | |-- templates
| | | |-- _helpers.tpl
| | | `-- deploy_&_svc
| | | `-- deploy&svc.yaml
| | |-- values
| | | |-- dev-values.yaml
| | | |-- prod-values.yaml
| | | |-- staging-values.yaml
| | | `-- values.yaml
| | `-- values.yaml
| |-- vote-app-chart-1
| | |-- Chart.yaml
| | |-- charts
| | |-- templates
| | | |-- _helpers.tpl
| | | |-- deployments
| | | | |-- db.yaml
| | | | |-- redis.yaml
| | | | |-- result.yaml
| | | | |-- vote.yaml
| | | | `-- worker.yaml
| | | |-- ingress
| | | | `-- ingress.yaml
| | | |-- roleBindings
| | | | `-- all_access_role_binding.yaml
| | | |-- roles
| | | | `-- all_access_roles.yaml
| | | |-- secrets
| | | | `-- secret.yaml
| | | |-- service-accounts
| | | | `-- allAccess.yaml
| | | |-- svcs
| | | | |-- db-svc.yaml
| | | | |-- redis-svc.yaml
| | | | |-- result-scv.yaml
| | | | `-- vote-svc.yaml
| | | `-- volumes
| | | |-- pv
| | | | |-- db_pv.yaml
| | | | `-- redis_pv.yaml
| | | `-- pvc
| | | |-- db_pvc.yaml
| | | `-- redis_pvc.yaml
| | |-- values
| | | |-- dev-values.yaml
| | | |-- prod-values.yaml
| | | `-- staging-values.yaml
| | `-- values.yaml
| `-- vote-app-chart-2
| |-- Chart.yaml
| |-- charts
| |-- templates
| | |-- _helpers.tpl
| | |-- deployments
| | | `-- deploy.yaml
| | |-- ingress
| | | `-- ingress.yaml
| | |-- roleBindings
| | | `-- all_access_role_binding.yaml
| | |-- roles
| | | `-- all_access_roles.yaml
| | |-- secrets
| | | `-- secret.yaml
| | |-- service-accounts
| | | `-- allAccess.yaml
| | |-- svcs
| | | `-- svc.yaml
| | `-- volumes
| | |-- pv
| | | `-- pvs.yaml
| | `-- pvc
| | `-- pvcs.yaml
| |-- values
| | |-- dev-values.yaml
| | |-- prod-values.yaml
| | |-- staging-values.yaml
| | `-- values.yaml
| `-- values.yaml
|-- kube-apiserver.yml
|-- pod_scalling
| |-- hpa
| | |-- helm
| | | `-- vote-app-chart-hpa
| | | |-- Chart.yaml
| | | |-- charts
| | | |-- templates
| | | | |-- _helpers.tpl
| | | | |-- deployments
| | | | | `-- deploy.yaml
| | | | |-- hpa
| | | | | `-- hpa.yaml
| | | | |-- ingress
| | | | | `-- ingress.yaml
| | | | |-- roleBindings
| | | | | `-- all_access_role_binding.yaml
| | | | |-- roles
| | | | | `-- all_access_roles.yaml
| | | | |-- secrets
| | | | | `-- secret.yaml
| | | | |-- service-accounts
| | | | | `-- allAccess.yaml
| | | | |-- svcs
| | | | | `-- svc.yaml
| | | | `-- volumes
| | | | |-- pv
| | | | | `-- pvs.yaml
| | | | `-- pvc
| | | | `-- pvcs.yaml
| | | |-- values
| | | | |-- dev-values.yaml
| | | | |-- prod-values.yaml
| | | | |-- staging-values.yaml
| | | | `-- values.yaml
| | | `-- values.yaml
| | `-- hpa.yaml
| |-- metrics-server
| | |-- metrics-server-components.yaml
| | |-- metrics-server-values.yaml
| | `-- prometheus.yaml
| `-- vpa
| |-- helm
| | `-- vote-app-chart-vpa
| | |-- Chart.yaml
| | |-- charts
| | |-- templates
| | | |-- _helpers.tpl
| | | |-- deployments
| | | | `-- deploy.yaml
| | | |-- ingress
| | | | `-- ingress.yaml
| | | |-- roleBindings
| | | | `-- all_access_role_binding.yaml
| | | |-- roles
| | | | `-- all_access_roles.yaml
| | | |-- secrets
| | | | `-- secret.yaml
| | | |-- service-accounts
| | | | `-- allAccess.yaml
| | | |-- svcs
| | | | `-- svc.yaml
| | | |-- volumes
| | | | |-- pv
| | | | | `-- pvs.yaml
| | | | `-- pvc
| | | | `-- pvcs.yaml
| | | `-- vpa
| | | `-- vpa.yaml
| | |-- values
| | | |-- dev-values.yaml
| | | |-- prod-values.yaml
| | | |-- staging-values.yaml
| | | `-- values.yaml
| | `-- values.yaml
| |-- vpa-crd.yaml
| `-- vpa.yaml
|-- s3_helm_repo
| |-- env
| |-- main.tf
| |-- modules
| | |-- repo
| | | |-- outputs.tf
| | | |-- s3.tf
| | | `-- variables.tf
| | `-- repo_files
| | |-- files.tf
| | `-- variables.tf
| |-- output.tf
| |-- providers.tf
| |-- uploads
| | |-- cipher-tool-v020-1.0.0.tgz
| | |-- index.yaml
| | |-- vote-app-chart-1-1.0.0.tgz
| | `-- vote-app-chart-2-1.0.0.tgz
| `-- variables.tf
|-- ssl-script.sh
`-- terraform.tfstate
105 directories, 162 files