{"id":37106050,"url":"https://github.com/sufuf3/kube5gc","last_synced_at":"2026-01-14T12:46:53.318Z","repository":{"id":87446514,"uuid":"167128381","full_name":"sufuf3/kube5GC","owner":"sufuf3","description":"This project is for deploying NCTU-5GC on kubeCORD","archived":false,"fork":false,"pushed_at":"2019-05-25T02:13:11.000Z","size":26201,"stargazers_count":7,"open_issues_count":2,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-21T07:02:52.629Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","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/sufuf3.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"ko_fi":"sufuf3149"}},"created_at":"2019-01-23T06:15:46.000Z","updated_at":"2024-12-22T10:51:30.000Z","dependencies_parsed_at":"2025-11-21T07:02:11.540Z","dependency_job_id":null,"html_url":"https://github.com/sufuf3/kube5GC","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/sufuf3/kube5GC","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufuf3%2Fkube5GC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufuf3%2Fkube5GC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufuf3%2Fkube5GC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufuf3%2Fkube5GC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sufuf3","download_url":"https://codeload.github.com/sufuf3/kube5GC/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufuf3%2Fkube5GC/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28420814,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T10:47:48.104Z","status":"ssl_error","status_checked_at":"2026-01-14T10:46:19.031Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-01-14T12:46:52.769Z","updated_at":"2026-01-14T12:46:53.303Z","avatar_url":"https://github.com/sufuf3.png","language":"Dockerfile","funding_links":["https://ko-fi.com/sufuf3149"],"categories":[],"sub_categories":[],"readme":"# kube5GC\n\n\u003e This project is for deploying Free5GC on [kubeCORD](https://github.com/sufuf3/kubecord-installer).\n\n## Table of Contents\n\n- [Free5GC Components](#Free5gc-components)\n- [Prepare](#prepare)\n    - [1. Using kubeCORD deploy Kubernetes](#1-using-kubecord-deploy-kubernetes)\n    - [2. Install NFS Server](#2-install-nfs-server)\n    - [3. Install helm](#3-install-helm)\n- [Deploy free5GC](#deploy-free5gc)\n    - [Method 1 - Using yaml](#method-1---using-yaml)\n    - [Method 2 - Using Helm](#method-2---using-helm)\n    - [Method 3 - Using CRD](#method-3---using-crd)\n- [Verification](#verification)\n\n## Free5GC Components\n\n### Components\n\n- mongodb\n- webui\n- HSS\n- PCRF\n- AMF\n- SMF\n- UPF\n\n### Docker images\n\n- 🚧 webui\n    - Docker: [nextepc-webui](https://cloud.docker.com/repository/docker/sufuf3/nextepc-webui)\n- 🚧 nextepc-base\n    - Docker: [nextepc-base](https://cloud.docker.com/repository/registry-1.docker.io/sufuf3/nextepc-base)\n- 🚧 nextepc-build\n    - Docker: [nextepc-build](https://cloud.docker.com/repository/registry-1.docker.io/sufuf3/nextepc-build)\n\n## Prepare\n\n### 1. Using [kubeCORD](https://github.com/sufuf3/kubecord-installer) deploy Kubernetes\n\n### 2. Update `/etc/kubernetes/kubelet.env`\n\n1. Add `--allowed-unsafe-sysctls 'kernel.msg*,net.ipv4.*,net.ipv6.*' \\` into `/etc/kubernetes/kubelet.env`.\n2. `sudo systemctl restart kubelet`\n3. `sudo systemctl status kubelet`\n\n### 3. Install NFS Server\n\nOn node-1.\n\n```sh\nsudo apt-get install -qqy nfs-kernel-server\nsudo mkdir -p /nfsshare/mongodb\necho \"/nfsshare *(rw,sync,no_root_squash)\" | sudo tee /etc/exports\nsudo exportfs -r\nsudo showmount -e\n```\n\n### 4. Install helm\n\nOn node-1.\n\n```sh\ncurl -L https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-linux-amd64.tar.gz \u003e helm-v2.9.1-linux-amd64.tar.gz \u0026\u0026 tar -zxvf helm-v2.9.1-linux-amd64.tar.gz \u0026\u0026 chmod +x linux-amd64/helm \u0026\u0026 sudo mv linux-amd64/helm /usr/local/bin/helm\nrm -rf /home/$USER/helm-v2.9.1-linux-amd64.tar.gz\nsudo pip install yq\nhelm init\nkubectl create serviceaccount --namespace kube-system tiller\nkubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller\nkubectl patch deploy --namespace kube-system tiller-deploy -p '{\"spec\":{\"template\":{\"spec\":{\"serviceAccount\":\"tiller\"}}}}'\n```\n\n### 5. Network Setup\n\n#### 1. Config free5gc.network\n\n```sh\nsudo sh -c \"cat \u003c\u003c EOF \u003e /etc/systemd/network/99-free5gc.netdev\n[NetDev]\nName=uptun\nKind=tun\nEOF\"\n\nsudo systemctl enable systemd-networkd\nsudo systemctl restart systemd-networkd\n\nsudo sh -c \"echo 'net.ipv6.conf.uptun.disable_ipv6=0' \u003e /etc/sysctl.d/30-free5gc.conf\"\nsudo sysctl -p /etc/sysctl.d/30-free5gc.conf\nsudo sh -c \"cat \u003c\u003c EOF \u003e /etc/systemd/network/99-free5gc.network\n[Match]\nName=uptun\n[Network]\nAddress=45.45.0.1/16\nEOF\"\n```\n\n#### 2. SR-IOV serup\n\n**a. Setup VF num on SR-IOV device \u0026 create CRD**\n\n```sh\n$ ip a\n5: ens11f3: \u003cBROADCAST,MULTICAST,UP,LOWER_UP\u003e mtu 1500 qdisc mq portid 8cea1b30da42 state UP group default qlen 1000\n    link/ether 8c:ea:1b:30:da:42 brd ff:ff:ff:ff:ff:ff\n    inet 192.188.2.99/24 brd 192.188.2.255 scope global ens11f3\n       valid_lft forever preferred_lft forever\n    inet6 fe80::8eea:1bff:fe30:da42/64 scope link\n       valid_lft forever preferred_lft forever\n$ echo 30 | sudo tee -a /sys/class/net/ens11f3/device/sriov_numvfs\n$ kubectl createa -f deploy/crdnetwork.yaml\n$ kubectl create -f deploy/sriov-crd.yaml\n$ kubectl get net-attach-def\nNAME                   AGE\nsriov-net1             4h\n```\n\n**b. Build and run SRIOV network device plugin**  \n\nRef: https://github.com/intel/sriov-network-device-plugin#build-and-run-sriov-network-device-plugin  \n\n```sh\n$ git clone https://github.com/intel/sriov-network-device-plugin.git \u0026\u0026 cd sriov-network-device-plugin\n$ make\n$ make image\n```\n\n**c. Setup /etc/pcidp/config.json**  \n\nFirst, use `lspci | grep -i Ethernet` to check interface's sysfs pci address.  \nThen, edit /etc/pcidp/config.json as following:  \n```sh\n{\n    \"resourceList\":\n    [\n        {\n            \"resourceName\": \"sriov_net\",\n            \"rootDevices\": [\"01:00.3\"],\n            \"sriovMode\": true,\n            \"deviceType\": \"netdevice\"\n        }\n    ]\n}\n```\n\n**d. Deploy sriov-network-device-plugin on k8s**  \n\n```sh\n$ kubectl create -f deploy/sriovdp-deploy.yaml\n```\n\n**e. Check**  \n```sh\n$ kubectl get node kubecord-a -o json | jq '.status.allocatable'\n{\n  \"cpu\": \"31800m\",\n  \"ephemeral-storage\": \"226240619760\",\n  \"hugepages-1Gi\": \"8Gi\",\n  \"intel.com/sriov_net\": \"30\",\n  \"memory\": \"56931140Ki\",\n  \"pods\": \"110\"\n}\n```\n\n## Deploy free5GC\n\n### Method 1 - Using yaml\n\n#### 1. Create namespace\n\n```sh\nkubectl create -f deploy/nctu5GC/namespace.yaml\n```\n#### 2. Create mongodb\n1. Update `deploy/nctu5GC/mongodb/pv.yaml`\n```sh\nsed -i \"s/192.168.26.11/${NFS_SERVER_IP}/g\" deploy/nctu5GC/mongodb/pv.yaml\n```\n2. Create mongodb\n```sh\nkubectl create -f deploy/nctu5GC/mongodb/pv.yaml\nkubectl create -f deploy/nctu5GC/mongodb/statefulset.yaml\nkubectl create -f deploy/nctu5GC/mongodb/service-NP.yaml\n```\n\n#### 3. Create webui\n\n```sh\nkubectl create -f deploy/nctu5GC/webui-deployment.yaml\nkubectl create -f deploy/nctu5GC/webui-service-NP.yaml\n```\nPS. Using NodePort\n\nAccess NODE_IP:31727 via web browser.\n\n**以下請按照 IP 順序 deploy**\n\n#### 4. Deploy free5gc-configmap\n\n```sh\nkubectl create -f deploy/nctu5GC/free5gc-configmap.yaml\n```\n\n#### 5. Create AMF\n\n\u003e AMF IP: 10.233.84.202\n\n1. Update `deploy/nctu5GC/amf-freediameter-configmap.yaml`\n   https://hackmd.io/s/S1baJOeEE#Setup-AMF\n\n2. Deploy\n```sh\nkubectl create -f deploy/nctu5GC/amf-freediameter-configmap.yaml\nkubectl create -f deploy/nctu5GC/amf-deployment-SRIOV.yaml\n```\n\n#### 6. Create HSS\n\n\u003e HSS IP: 10.233.84.203\n\n1. Update `deploy/nctu5GC/hss-freediameter-configmap.yaml`\n   https://hackmd.io/s/S1baJOeEE#Setup-HSS\n\n2. Deploy\n```sh\nkubectl create -f deploy/nctu5GC/hss-nextepc-configmap.yaml\nkubectl create -f deploy/nctu5GC/hss-freediameter-configmap.yaml\nkubectl create -f deploy/nctu5GC/hss-service.yaml\nkubectl create -f deploy/nctu5GC/hss-nextepc-deployment.yaml\n```\n\n\n#### 7. Create SMF\n\n\u003e SMF IP: 10.233.84.204\n\n```sh\nkubectl create -f deploy/nctu5GC/smf-freediameter-configmap.yaml\nkubectl create -f deploy/nctu5GC/smf-service-NP.yaml\nkubectl create -f deploy/nctu5GC/smf-deployment.yaml\n```\n\n#### 8. Create PCRF\n\n\u003e PCRF IP: 10.233.84.205\n\n1. Update `deploy/nctu5GC/pcrf-freediameter-configmap.yaml`\n   https://hackmd.io/s/S1baJOeEE#Setup-PCRF\n\n2. Deploy\n```sh\nkubectl create -f deploy/nctu5GC/pcrf-freediameter-configmap.yaml\nkubectl create -f deploy/nctu5GC/pcrf-nextepc-configmap.yaml\nkubectl create -f deploy/nctu5GC/pcrf-service.yaml\nkubectl create -f deploy/nctu5GC/pcrf-nextepc-deployment.yaml\n```\n#### 9. Create UPF\n\n\u003e UPF IP: 10.233.84.206\n\n1. Deploy\n\n```sh\nkubectl create -f deploy/nctu5GC/upf-deployment-SRIOV.yaml\n```\n\n### Method 2 - Using Helm\n\n```sh\nhelm install --name NAME helm-charts/free5gcservice/\n```\n\nNote. Debug  \n\n```sh\nhelm install --name NAME --dry-run --debug helm-charts/free5gcservice/\n```\n\n### Method 3 - Using CRD\n\nPlease refer to https://github.com/sufuf3/free5gc-operator\n\n---\n\n## Network\n\n```sh\n\nkubectl get network-attachment-definitions\n```\n\n## Verification\n\n```sh\n$ kubectl get po -n free5gc -o wide\nNAME                                       READY   STATUS    RESTARTS   AGE     IP              NODE         NOMINATED NODE\namf-deployment-587f78dc7b-vkbcf            1/1     Running   0          3h53m   10.233.84.202   kubecord-a   \u003cnone\u003e\nmongo-0                                    1/1     Running   0          2d9h    10.233.69.141   kubecord-a   \u003cnone\u003e\nnextepc-hss-deployment-77bbb7f986-wj9vf    1/1     Running   0          3h53m   10.233.84.203   kubecord-a   \u003cnone\u003e\npcrf-nextepc-deployment-7f6c776d66-6k4b5   1/1     Running   0          3h53m   10.233.84.205   kubecord-a   \u003cnone\u003e\nsmf-deployment-66d85dcd5b-dcvnt            1/1     Running   0          3h53m   10.233.84.204   kubecord-a   \u003cnone\u003e\nupf-deployment-644d8d8f6-7494d             1/1     Running   5          3h52m   10.233.84.206   kubecord-a   \u003cnone\u003e\nwebui-deployment-6bcfdf7dc9-54khc          1/1     Running   0          2d9h    10.233.69.142   kubecord-a   \u003cnone\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsufuf3%2Fkube5gc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsufuf3%2Fkube5gc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsufuf3%2Fkube5gc/lists"}