{"id":28904774,"url":"https://github.com/dudecalledbro/fom-cloud-demo-ss25","last_synced_at":"2026-04-12T16:09:08.567Z","repository":{"id":297808933,"uuid":"997967035","full_name":"DudeCalledBro/FOM-Cloud-Demo-SS25","owner":"DudeCalledBro","description":"FOM Cloudtechnologie K3s Demo","archived":true,"fork":false,"pushed_at":"2025-06-07T15:31:43.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-21T13:02:44.488Z","etag":null,"topics":["ansible","k3s","kubernets"],"latest_commit_sha":null,"homepage":"","language":"YAML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DudeCalledBro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2025-06-07T15:29:29.000Z","updated_at":"2025-06-14T14:20:53.000Z","dependencies_parsed_at":"2025-06-07T16:38:10.894Z","dependency_job_id":"ad5d307e-3117-4568-9d5a-d2b97cf8118e","html_url":"https://github.com/DudeCalledBro/FOM-Cloud-Demo-SS25","commit_stats":null,"previous_names":["dudecalledbro/fom-cloud-demo-ss25"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DudeCalledBro/FOM-Cloud-Demo-SS25","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DudeCalledBro%2FFOM-Cloud-Demo-SS25","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DudeCalledBro%2FFOM-Cloud-Demo-SS25/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DudeCalledBro%2FFOM-Cloud-Demo-SS25/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DudeCalledBro%2FFOM-Cloud-Demo-SS25/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DudeCalledBro","download_url":"https://codeload.github.com/DudeCalledBro/FOM-Cloud-Demo-SS25/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DudeCalledBro%2FFOM-Cloud-Demo-SS25/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268362998,"owners_count":24238544,"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","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["ansible","k3s","kubernets"],"created_at":"2025-06-21T13:02:16.651Z","updated_at":"2026-04-12T16:09:08.523Z","avatar_url":"https://github.com/DudeCalledBro.png","language":"YAML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cloudtechnologie Demo (2025-SS)\n\nIn dieser kurzen Demo werde ich ein lokales K3s Kubernetes Cluster mithilfe von Vagrant und Ansible installieren. Als Provisioner für die virtuellen Maschinen verwende ich Parallels Desktop.\n\nAm Ende dieser Demo haben wir ein kleines Kubernetes Cluster installiert, welches aus einer Control Plane Node und zwei Worker Nodes besteht. Die Installation weiterer Control Plane Nodes macht es komplexer und wird deshalb nicht gezeigt.\n\n## Schritt-für-Schritt\n\n1. Im ersten Schritt starten wir die drei virtuellen Maschinen. Diese habe ich bereits im Vagrant-Manifest vorab konfiguriert (Hostname, Netzwerk und Post-Provisioning). Die Maschinen werden nach Abschluss der Installation noch mit Ansible grundlegend konfiguriert, sodass ein Benutzer und ein autorisierter SSH-Key hinterlegt wird.\n\n    ```bash\n    # Start Virtual Machine Setup\n    vagrant up\n\n    # Check Virtual Machine Setup\n    ansible -m ping all\n    ```\n\n2. Als nächstes wird die eigentliche Control Plane Node, im K3s-Umfeld auch `Server` genannt, installiert. In unserem Fall ist dies `k3s-01`. Hierzu führe ich ein weiteres Ansible-Playbook aus, was die Installation auf dem System durchführt. In diesem Schritt wird außerdem noch MetalLB als Loadbalancer mittels HelmChart installiert.\n\n    ```bash\n    # Install Control Plane\n    ansible-playbook k3s_server.yml\n\n    # Check K3s Cluster Status\n    ansible -m command -a \"kubectl get nodes\" server\n    ```\n\n3. Im vorletzten Schritt werden weitere Worker Nodes dem Cluster hinzugefügt. Diese werden im K3s-Kontext auch `Agents` genannt. Die Installation erfolgt auch hier mittels Ansible.\n\n    ```bash\n    # Install Worker Nodes\n    ansible-playbook k3s_agent.yml\n\n    # Check K3s Cluster Status\n    ansible -m command -a \"kubectl get nodes\" server\n    ```\n\n4. Der Cluster ist nun soweit installiert und die verschiedenen Pods sollten nun aufgelistet werden.\n\n    ```bash\n    # Check K3s Cluster Pods\n    ansible -m command -a \"kubectl get pods -A\" server\n    ```\n\n## Demo-App\n\nZur Prüfung der Funktionalität des Clusters, habe ich ein kleines NGINX-Deployment vorbereitet. Dieses ist zwar nicht besonders hübsch, oder sinnvoll aufgebaut (z.B. Nutzung des Ingress-Controllers). Dafür zeigt es schön, wie eine Applikation im Browser aufgerufen werden kann.\n\n```bash\n# Create Example App Manifests\nansible-playbook example.yml\n\n# Connect to Control Plane Node\nvagrant ssh k3s-01\n\n# Create Example App\nkubectl apply -f /home/vagrant/fom-demo\n\n# Get Pods\nkubectl get pods -n fom\n\n# Scale Kubernetes Pods\nkubectl scale -n fom --replicas=3 deployment/nginx\n```\n\n## License\n\nCopyright © 2025 Niclas Spreng\n\nLicensed under the [MIT license](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdudecalledbro%2Ffom-cloud-demo-ss25","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdudecalledbro%2Ffom-cloud-demo-ss25","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdudecalledbro%2Ffom-cloud-demo-ss25/lists"}