{"id":21368439,"url":"https://github.com/omaciasd/microservices","last_synced_at":"2026-04-11T05:03:31.961Z","repository":{"id":146217106,"uuid":"459899017","full_name":"OMaciasd/Microservices","owner":"OMaciasd","description":"Microservices Projects.","archived":false,"fork":false,"pushed_at":"2023-10-24T20:18:06.000Z","size":74,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-22T20:30:47.573Z","etag":null,"topics":["bash","clean-code","containers","devops","docker","flask","git","github","github-actions","json","kong","kubernetes","linux","micorservices","python","tdd","terraform","yaml"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OMaciasd.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-16T07:36:02.000Z","updated_at":"2023-10-20T15:31:37.000Z","dependencies_parsed_at":"2023-10-21T13:33:16.529Z","dependency_job_id":"e1160e5e-e4c0-41ca-9bb0-6fffc309a1c6","html_url":"https://github.com/OMaciasd/Microservices","commit_stats":null,"previous_names":["omaciasd/microservices"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OMaciasd%2FMicroservices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OMaciasd%2FMicroservices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OMaciasd%2FMicroservices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OMaciasd%2FMicroservices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OMaciasd","download_url":"https://codeload.github.com/OMaciasd/Microservices/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243841217,"owners_count":20356446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","clean-code","containers","devops","docker","flask","git","github","github-actions","json","kong","kubernetes","linux","micorservices","python","tdd","terraform","yaml"],"created_at":"2024-11-22T07:24:27.166Z","updated_at":"2025-12-30T18:59:53.627Z","avatar_url":"https://github.com/OMaciasd.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Technical Test: Microservice Project\n\n## Description\n\nThis document will outline the requirements, tools, and technologies I utilized to meet the requested criteria.\n\nThe reproduction of this project should only be for evaluation and feedback purposes.\n\n## Whoami\n\nI am a sysadmin with over:\n\n- 3 years administering Kubernetes.\n- 5 years in Docker administration.\n- 5 years of advanced GIT knowledge.\n- 20 years of advanced GNU/Linux administration.\n- Proficient in: 3 years with Python, 1 year with Java, Go, Ruby, and Node.\n- 5 years knowledgeable in CI/CD pipelines, on both local platforms and in the cloud.\n- 7 years in Cloud Computing management with Microsoft Azure, AWS, Google Cloud Platform, OCI.\n- 5 years of experience in IaC (Infrastructure as Code), with traditional providers, as well as OCI, VMware, and Digital Ocean.\n\n## Schema\n\nConstructed based on technology, services, and goals is a directory tree, which contains the current repository project.\n\n![schema][schema]\n\n## Requirements\n\nYou should install the following tools on your local machine:\n\n- ngrok.\n- Python.\n- Docker Desktop.\n\nA microservice is constructed containing a REST EndPoint called: `/DevOps`.\n\n- We use Python as the programming language and Flask as the Framework.\n- A script from the project is used to generate a token, in case the current JWT has expired:\n\n```bash\npython docker/python/Scripting/generate_jwt.py\n```\n\n- We use the HTTP POST method on the JSON file to utilize the Payload with the required API Key, validating all request fields:\n\n```bash\ncurl -X POST \\\n-H \"X-Parse-REST-API-Key: 2f5ae96c-b558-4c7b-a590-a501ae1c3f6c\" \\\n-H \"X-JWT-KEY: $JWT_Token\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\"message\": \"This is a test\", \"to\": \"Juan Perez\", \"from\": \"Rita Asturia\", \"timeToLifeSec\": 45}' \\\nhttp://$IP_ADDRESS_POD:$PORT/DevOps\n```\n\nHaving the following output:\n\n```bash\n{\n  \"message\": \"Hello Juan Perez your message will be send\"\n}\n```\n\n- If we use another HTTP method:\n\n```bash\ncurl -X POST \\\n-H \"X-Parse-REST-API-Key: 2f5ae96c-b558-4c7b-a590-a501ae1c3f6c\" \\\n-H \"X-JWT-KWY: $JWT_Token\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\"message\": \"This is a test\", \"to\": \"Juan Perez\", \"from\": \"Rita Asturia\", \"timeToLifeSec\": 45}' \\\nhttps://ecf7-$NGROK-Public-Address-IP.ngrok-free.app/DevOps\n```\n\nIt will return \"ERROR\":\n\n```bash\nERROR\n```\n\nWithin the microservice running in the container, it returns:\n\n```bash\n * Serving Flask app 'devops'\n * Debug mode: on\nWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.\n * Running on all addresses (0.0.0.0)\n * Running on http://127.0.0.1:5000\n * Running on http://172.17.0.2:5000\nPress CTRL+C to quit\n * Restarting with stat\n * Debugger is active!\n * Debugger PIN: 123-062-598\n172.17.0.1 - - [21/Oct/2023 08:54:02] \"POST /DevOps HTTP/1.1\" 200 -\n172.17.0.1 - - [21/Oct/2023 08:55:43] \"GET /DevOps HTTP/1.1\" 405 -\n172.17.0.1 - - [21/Oct/2023 08:56:13] \"PUT /DevOps HTTP/1.1\" 405 -\n172.17.0.1 - - [21/Oct/2023 08:56:32] \"DELETE /DevOps HTTP/1.1\" 405 -\n172.17.0.1 - - [21/Oct/2023 08:56:46] \"PATCH /DevOps HTTP/1.1\" 405 -\n172.17.0.1 - - [21/Oct/2023 08:56:56] \"POST /DevOps HTTP/1.1\" 400 -\n172.17.0.1 - - [21/Oct/2023 08:58:10] \"POST /DevOps HTTP/1.1\" 400 -\n172.17.0.1 - - [21/Oct/2023 08:59:45] \"POST /DevOps HTTP/1.1\" 200 -\n```\n\n## How to run\n\nWe use the necessary context for Kubernetes:\n\n```bash\nminikube stop\nminikube start\nkubectl config use-context docker-desktop\nkubectl config get-contexts\n```\n\nWe set up the ports using a service:\n\n```bash\nkubectl apply -f .\\kubernetes\\microservice-service.yml\nkubectl get services\n```\n\nWe deploy on Kubernetes for load balancing across 2 pods:\n\n```bash\nkubectl describe deployment microservice-deployment\nkubectl get deployments\nkubectl get pods\n```\n\n## Updates\n\n- **22-10-2023**: Refactoring and redesign the project for Unit Test. Reviewed by [Oscar Macias]![chat].\n\n## Support Contact\n\nFor questions or issues, please contact on [LinkedIn]![social] or by [e-mail]![mail]. Also, check out our [Python Wiki]![wiki].\n\n[schema]: ./src/img/schema.png\n\n**[chat]: \u003chttps://wa.me/573058288031\u003e**\n\n**[mail]: \u003cmailto:omaciasnarvaez@gmail.com\u003e**\n\n**[social]: \u003chttps://www.linkedin.com/in/omaciasd/\u003e**\n\n**[wiki]: \u003chttps://github.com/OMaciasd/Microservices\u003e**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomaciasd%2Fmicroservices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fomaciasd%2Fmicroservices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomaciasd%2Fmicroservices/lists"}