{"id":23923968,"url":"https://github.com/gotoren/git-sync-example","last_synced_at":"2025-10-08T15:56:39.879Z","repository":{"id":128786077,"uuid":"344705462","full_name":"GotoRen/git-sync-example","owner":"GotoRen","description":"Kubernetes Sidecar pattern.","archived":false,"fork":false,"pushed_at":"2021-03-12T22:25:56.000Z","size":14,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-08T15:56:38.744Z","etag":null,"topics":["docker","kubenetes","shell","sidecar"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/GotoRen.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2021-03-05T05:32:55.000Z","updated_at":"2022-02-20T17:47:33.000Z","dependencies_parsed_at":"2023-04-01T15:18:37.087Z","dependency_job_id":null,"html_url":"https://github.com/GotoRen/git-sync-example","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/GotoRen/git-sync-example","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GotoRen%2Fgit-sync-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GotoRen%2Fgit-sync-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GotoRen%2Fgit-sync-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GotoRen%2Fgit-sync-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GotoRen","download_url":"https://codeload.github.com/GotoRen/git-sync-example/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GotoRen%2Fgit-sync-example/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278972319,"owners_count":26078017,"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-10-08T02:00:06.501Z","response_time":56,"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":["docker","kubenetes","shell","sidecar"],"created_at":"2025-01-05T18:51:55.839Z","updated_at":"2025-10-08T15:56:39.863Z","avatar_url":"https://github.com/GotoRen.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# git-sync-example\n## 💡 Overview\n- Kubernetes Sidecar pattern\n![pic08](https://user-images.githubusercontent.com/63791288/110704920-fed3b980-8238-11eb-9b47-d9ea5c710655.jpg)\n\n\n## 👩‍🚒 自力でGitリポジトリからの取り込みコンテナを実装する\n- `contents-puller.sh`\n  - 指定したGitリポジトリから定期的にコンテンツを取り込む\n  - リポジトリのURLは環境変数で指定\n- `Dockerfile`\n  - Gitリポジトリからの取り込みコンテナの定義を記述\n  - `contents-puller.sh`を起動するだけのコンテナ\n- `webserver.yaml`\n  - Sidecar Podのマニフェストファイル\n  - `Deployment`\n    - 2つのコンテナと共有ボリュームを定義\n  - `Service`\n    - 外部へ公開するためのNodePortを定義\n\n## 🚀 Run\n```\n### マニフェストを適用\n$ kubectl apply -f webserver.yaml\n\n### コンポーネント一覧の取得\n$ kubectl get po\nNAME                         READY   STATUS    RESTARTS   AGE\nwebserver-6dcc867df8-qfw46   2/2     Running   0          3m25s\n\n$ kubectl get svc\nNAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE\nkubernetes   ClusterIP   10.96.0.1       \u003cnone\u003e        443/TCP        29d\nwebserver    NodePort    10.98.144.247   \u003cnone\u003e        80:32617/TCP   3m46s\n\n### アクセス先のURLを取得\n$ minikube service webserver --url\n🏃  Starting tunnel for service webserver.\n|-----------|-----------|-------------|------------------------|\n| NAMESPACE |   NAME    | TARGET PORT |          URL           |\n|-----------|-----------|-------------|------------------------|\n| default   | webserver |             | http://127.0.0.1:53472 |\n|-----------|-----------|-------------|------------------------|\nhttp://127.0.0.1:53472\n❗  Dockerドライバーをdarwin上で動かしているため、実行するにはターミナルを開く必要があります。\n```\n- [http://locahost:53472](http://locahost:53472)\n*****\n## 🌱 既存のコンテナ（git-sync）を利用する\n- `git-sync.yaml`\n  - Sidecar Podのマニフェストファイル\n  - 上で自力で実装した補助コンテナ（GitHabからコンテンツをpullしてくる役割のコンテナ）と同様の処理を行うコンテナを利用する\n\n## 🚀 Run\n```\n### マニフェストを適用\n$ kubectl apply -f git-sync.yaml\n\n### コンポーネント一覧の取得\n$ kubectl get po\nNAME                       READY   STATUS    RESTARTS   AGE\ngit-sync-c65b77d57-79c52   2/2     Running   0          28s\n\n$ kubectl get svc\nNAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE\ngit-sync     NodePort    10.99.127.180   \u003cnone\u003e        80:31023/TCP   69s\nkubernetes   ClusterIP   10.96.0.1       \u003cnone\u003e        443/TCP        29d\n\n### アクセス先のURLを取得\n$ minikube service git-sync --url\n🏃  Starting tunnel for service git-sync.\n|-----------|----------|-------------|------------------------|\n| NAMESPACE |   NAME   | TARGET PORT |          URL           |\n|-----------|----------|-------------|------------------------|\n| default   | git-sync |             | http://127.0.0.1:55500 |\n|-----------|----------|-------------|------------------------|\nhttp://127.0.0.1:55500\n❗  Dockerドライバーをdarwin上で動かしているため、実行するにはターミナルを開く必要があります。\n```\n- [http://127.0.0.1:55500](http://127.0.0.1:55500)\n\n## 🔎 Monitoring\n- __Prometheus__：グラフ化 / ダッシュボード表示\n- __Grafana__：ログ分析 / データ可視化\n```\n### Build \u0026 Run\n$ docker-compose up -d\n\n### 確認\n=== * 起動するDockerコンテナ * ===\n$ docker ps\nCONTAINER ID   IMAGE                                 COMMAND                  CREATED        STATUS         PORTS                                                                                                      NAMES\n564a512039ec   prom/prometheus                       \"/bin/prometheus --c…\"   12 hours ago   Up 2 seconds   0.0.0.0:9090-\u003e9090/tcp                                                                                     prometheus\na0affa135a90   grafana/grafana                       \"/run.sh\"                12 hours ago   Up 2 seconds   0.0.0.0:3000-\u003e3000/tcp                                                                                     grafana\n\n=== * 作成されるDockerイメージ * ===\n$ docker images\nREPOSITORY                                                     TAG                                                     IMAGE ID       CREATED         SIZE\nprom/prometheus                                                latest                                                  a618f5685492   3 weeks ago     175MB\ngrafana/grafana                                                latest                                                  c9e576dccd68   2 weeks ago     198MB\n\n=== * 作成されるDockerネットワーク * ===\n$ docker network ls\nNETWORK ID     NAME                     DRIVER    SCOPE\n1e0c95d851fe   monitoring_default       bridge    local\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgotoren%2Fgit-sync-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgotoren%2Fgit-sync-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgotoren%2Fgit-sync-example/lists"}