{"action":"closed","number":147,"pull_request":{"url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/pulls/147","id":174552303,"html_url":"https://github.com/rootsongjc/kubernetes-handbook/pull/147","diff_url":"https://github.com/rootsongjc/kubernetes-handbook/pull/147.diff","patch_url":"https://github.com/rootsongjc/kubernetes-handbook/pull/147.patch","issue_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/issues/147","number":147,"state":"closed","locked":false,"title":"安装并试用Istio service mesh","user":{"login":"hu279318344","id":18319776,"avatar_url":"https://avatars3.githubusercontent.com/u/18319776?v=4","gravatar_id":"","url":"https://api.github.com/users/hu279318344","html_url":"https://github.com/hu279318344","followers_url":"https://api.github.com/users/hu279318344/followers","following_url":"https://api.github.com/users/hu279318344/following{/other_user}","gists_url":"https://api.github.com/users/hu279318344/gists{/gist_id}","starred_url":"https://api.github.com/users/hu279318344/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hu279318344/subscriptions","organizations_url":"https://api.github.com/users/hu279318344/orgs","repos_url":"https://api.github.com/users/hu279318344/repos","events_url":"https://api.github.com/users/hu279318344/events{/privacy}","received_events_url":"https://api.github.com/users/hu279318344/received_events","type":"User","site_admin":false},"body":"# 安装并试用Istio service mesh\r\n\r\n官方文档地址 [快速开始](https://istio.io/docs/setup/kubernetes/)\r\n\r\n本文根据官网的文档整理而成，步骤包括安装`istio 0.5.1`并创建一个bookinfo的微服务来测试istio的功能。\r\n\r\n文中使用的yaml文件可以在[kubernetes-handbook](https://github.com/rootsongjc/kubernetes-handbook)的`manifests/istio`目录中找到，如果镜像pull失败，请根据官网的镜像自行修改。\r\n\r\n## 安装环境\r\n\r\n- CentOS 7.4.1708\r\n- Docker 17.12.0-ce\r\n- Kubernetes 1.8.5\r\n\r\n## 安装\r\n\r\n**1.下载安装包**\r\n\r\n下载地址：https://github.com/istio/istio/releases\r\n\r\n下载Linux版本的当前最新版安装包\r\n\r\n```bash\r\nwget https://github.com/istio/istio/releases/download/0.5.1/istio-0.5.1-linux.tar.gz\r\n```\r\n\r\n**2.解压**\r\n\r\n解压后，得到的目录结构如下：\r\n\r\n```\r\n├── bin\r\n│   └── istioctl\r\n├── install\r\n│   ├── ansible\r\n│   ├── consul\r\n│   ├── eureka\r\n│   ├── gcp\r\n│   ├── kubernetes\r\n│   ├── README.md\r\n│   └── tools\r\n├── istio.VERSION\r\n├── LICENSE\r\n├── README.md\r\n├── samples\r\n│   ├── bookinfo\r\n│   ├── CONFIG-MIGRATION.md\r\n│   ├── helloworld\r\n│   ├── httpbin\r\n│   ├── kubernetes-blog\r\n│   ├── rawvm\r\n│   ├── README.md\r\n│   └── sleep\r\n└── tools\r\n    ├── cache_buster.yaml\r\n    ├── deb\r\n    ├── githubContrib\r\n    ├── minikube.md\r\n    ├── perf_istio_rules.yaml\r\n    ├── perf_k8svcs.yaml\r\n    ├── README.md\r\n    ├── rules.yml\r\n    ├── setup_perf_cluster.sh\r\n    ├── setup_run\r\n    ├── update_all\r\n    └── vagrant\r\n```\r\n\r\n从文件里表中可以看到，安装包中包括了kubernetes的yaml文件，示例应用和安装模板。\r\n\r\n**3.先决条件**\r\n以下说明要求您可以访问启用了RBAC（基于角色的访问控制）的Kubernetes1.7.3或更新的群集。您还需要安装1.7.3或更高版本。如果您希望启用automatic sidecar injection，则需要Kubernetes 1.9或更高版本。kubectl\r\n\r\n注意：如果您安装了Istio 0.1.x，请在安装新版本之前彻底卸载它（包括适用于所有启用Istio的应用程序窗口的Istio支架）。\r\n安装或升级Kubernetes CLIkubectl以匹配群集支持的版本（CRD支持版本为1.7或更高版本）。\r\n\r\n根据您的Kubernetes提供者：\r\n\r\n要在本地安装Istio，请安装最新版本的Minikube（版本0.22.1或更高版本）。\r\n\r\n**Google Kubernetes引擎**\r\n\r\n检索kubectl的凭证（用<cluster-name>要使用的集群的名称以及集群<zone>所在的区域替换）：\r\n```bash   \r\ngcloud container clusters get-credentials <cluster-name> --zone <zone> --project <project-name>\r\n```\r\n将集群管理员权限授予当前用户（需要管理员权限才能为Istio创建必要的RBAC规则）：\r\n```bash    \r\nkubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=$(gcloud config get-value core/account)\r\n```    \r\n**IBM云容器服务**\r\n\r\n检索kubectl的凭证（用<cluster-name>要使用的集群的名称替换）：\r\n\r\n```bash   \r\n$(bx cs cluster-config <cluster-name>|grep \"export KUBECONFIG\")\r\n```\r\n**IBM Cloud Private2.1或更高版本**\r\n\r\nkubectl根据此处的步骤配置CLI以了解如何访问IBM Cloud Private Cluster。\r\nOpenshift Origin版本3.7或更高版本\r\n\r\n默认情况下，Openshift不允许以UID 0运行容器。启用UID为0的Istio服务帐户的容器以及Prometheus和Grafana插件：\r\n\r\n```bash \r\noc adm policy add-scc-to-user anyuid -z istio-ingress-service-account -n istio-system\r\noc adm policy add-scc-to-user anyuid -z istio-grafana-service-account -n istio-system\r\noc adm policy add-scc-to-user anyuid -z istio-prometheus-service-account -n istio-system\r\n```\r\n运行应用程序窗格的服务帐户需要特权的安全上下文约束作为边车注入的一部分。\r\n\r\n```bash \r\noc adm policy add-scc-to-user privileged -z default -n <target-namespace>\r\n````\r\n\r\n**4.安装步骤**\r\n\r\n从0.2版本开始，Istio安装在它自己的istio-system命名空间中，并且可以管理来自所有其他命名空间的服务。\r\n\r\n转至Istio发布页面以下载与您的操作系统相对应的安装文件。如果您使用的是MacOS或Linux系统，以下命令自动下载并提取最新版本：\r\n\r\n```bash \r\ncurl -L https://git.io/getLatestIstio | sh -\r\n```\r\n\r\n解压缩安装文件并将目录更改为文件位置。\r\n安装目录包含：\r\n\r\n.yamlKubernetes的安装文件install/\r\n中的示例应用程序samples/\r\n目录中的istioctl客户端二进制bin/文件。istioctl在手动注入Envoy作为附属代理并创建路由规则和策略时使用。\r\n该istio.VERSION配置文件\r\n将目录更改为istio包。\r\n例如，如果包是istio-0.5（初步）\r\n\r\n```bash \r\ncd istio-0.5 (preliminary)\r\n```\r\n将istioctl客户端添加到您的PATH。例如，在MacOS或Linux系统上运行以下命令：\r\n\r\n```bash \r\nexport PATH=$PWD/bin:$PATH\r\n```\r\n\r\n安装Istio的核心组件。从下面两个互相排斥的选项中选择一个，或者用Helm Chart交替安装：\r\na）安装Istio而不启用侧车间的相互TLS认证。为具有现有应用程序的群集，使用Istio辅助车的服务需要能够与其他非Istio Kubernetes服务以及使用活动性和准备就绪探测器，无头服务或StatefulSets的应用程序通信的应用程序选择此选项。\r\n\r\n```bash \r\nkubectl apply -f install/kubernetes/istio.yaml\r\n```\r\n\r\n**要么**\r\n\r\nb）安装Istio并启用侧柜之间的相互TLS认证：\r\n\r\n```bash \r\nkubectl apply -f install/kubernetes/istio-auth.yaml\r\n```\r\n\r\n这两个选项都会创建istio-system命名空间以及所需的RBAC权限，并部署Istio-Pilot，Istio-Mixer，Istio-Ingress和Istio-CA（证书颁发机构）。\r\n\r\n可选：如果您的群集的Kubernetes版本是1.9或更高，并且您希望启用自动代理注入，请安装sidecar injector webhook。\r\n验证安装\r\n请确保以下Kubernetes服务部署：istio-pilot，istio-mixer，istio-ingress。\r\n\r\n```bash \r\nkubectl get svc -n istio-system\r\n```\r\n\r\n```bash \r\nNAME            CLUSTER-IP      EXTERNAL-IP       PORT(S)                       AGE\r\nistio-ingress   10.83.245.171   35.184.245.62     80:32730/TCP,443:30574/TCP    5h\r\nistio-pilot     10.83.251.173   <none>            8080/TCP,8081/TCP             5h\r\nistio-mixer     10.83.244.253   <none>            9091/TCP,9094/TCP,42422/TCP   5h\r\n```\r\n\r\n**注意：如果您的集群中不支持外部负载平衡（例如，MINIKUBE）的环境中运行，该EXTERNAL-IP的ISTIO-INGRESS说<PENDING>。您必须使用服务NODEPORT访问应用程序，或使用端口转发.**\r\n\r\n**注意：修改ISTIO.YAML或者ISTIO.YAML中的ISTIO-INGRESS SERVER的TYPE为CLUSTERIP****\r\n\r\n确保相应Kubernetes容器都运行起来：istio-pilot-*，istio-mixer-*，istio-ingress-*，istio-ca-*，和可选的istio-sidecar-injector-*。\r\n\r\n```bash \r\nkubectl get pods -n istio-system\r\n```\r\n```bash \r\nistio-ca-3657790228-j21b9                1/1       Running   0          5h\r\nistio-ingress-1842462111-j3vcs           1/1       Running   0          5h\r\nistio-sidecar-injector-184129454-zdgf5   1/1       Running   0          5h\r\nistio-pilot-2275554717-93c43             1/1       Running   0          5h\r\nistio-mixer-2104784889-20rm8             2/2       Running   0          5h\r\n```\r\n部署您的应用程序\r\n您现在可以部署您自己的应用程序或者像Bookinfo一样随安装提供的示例应用程序之一。注意：应用程序必须对所有HTTP通信使用HTTP / 1.1或HTTP / 2.0协议，因为HTTP / 1.0不受支持。\r\n\r\n如果您启动了Istio-sidecar-injector，如上所示，您可以直接使用应用程序部署应用程序kubectl create。\r\n\r\nIstio Sidecar注入器会自动将Envoy容器注入到您的应用程序窗格中，假设运行在标有名称空间的名称空间中istio-injection=enabled\r\n\r\n```bash \r\nkubectl label namespace <namespace> istio-injection=enabled\r\nkubectl create -n <namspace> -f <your-app-spec>.yaml\r\n```\r\n如果您没有安装Istio-sidecar-injector，则在部署它们之前，必须使用istioctl kube-inject将Envoy容器手动注入应用程序窗格中：\r\n\r\n```bash \r\nkubectl create -f <(istioctl kube-inject -f <your-app-spec>.yaml)\r\n```\r\n卸载\r\n卸载Istio sidecar进样器：\r\n\r\n如果您启用Istio-sidecar-injector，请将其卸载：\r\n\r\nkubectl delete -f install/kubernetes/istio-sidecar-injector-with-ca-bundle.yaml\r\n卸载Istio核心组件。对于0.6（初始）发行版，卸载将删除RBAC权限，istio-system命名空间和分层下的所有资源。忽略不存在资源的错误是安全的，因为它们可能已被分层删除。\r\n\r\na）如果您在禁用相互TLS身份验证的情况下安装了Istio：\r\n\r\n```bash \r\nkubectl delete -f install/kubernetes/istio.yaml\r\n```\r\n\r\n要么\r\n\r\nb）如果您在启用相互TLS身份验证的情况下安装了Istio：\r\n\r\n```bash \r\nkubectl delete -f install/kubernetes/istio-auth.yaml\r\n```","created_at":"2018-03-13T03:57:30Z","updated_at":"2018-03-13T15:12:47Z","closed_at":"2018-03-13T15:12:47Z","merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/pulls/147/commits","review_comments_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/pulls/147/comments","review_comment_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/issues/147/comments","statuses_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/statuses/cfc86dd5fc73b852a4e6c48fc15fee49055a5d2f","head":{"label":"rootsongjc:gh-pages","ref":"gh-pages","sha":"cfc86dd5fc73b852a4e6c48fc15fee49055a5d2f","user":{"login":"rootsongjc","id":3328185,"avatar_url":"https://avatars3.githubusercontent.com/u/3328185?v=4","gravatar_id":"","url":"https://api.github.com/users/rootsongjc","html_url":"https://github.com/rootsongjc","followers_url":"https://api.github.com/users/rootsongjc/followers","following_url":"https://api.github.com/users/rootsongjc/following{/other_user}","gists_url":"https://api.github.com/users/rootsongjc/gists{/gist_id}","starred_url":"https://api.github.com/users/rootsongjc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rootsongjc/subscriptions","organizations_url":"https://api.github.com/users/rootsongjc/orgs","repos_url":"https://api.github.com/users/rootsongjc/repos","events_url":"https://api.github.com/users/rootsongjc/events{/privacy}","received_events_url":"https://api.github.com/users/rootsongjc/received_events","type":"User","site_admin":false},"repo":{"id":88254582,"name":"kubernetes-handbook","full_name":"rootsongjc/kubernetes-handbook","owner":{"login":"rootsongjc","id":3328185,"avatar_url":"https://avatars3.githubusercontent.com/u/3328185?v=4","gravatar_id":"","url":"https://api.github.com/users/rootsongjc","html_url":"https://github.com/rootsongjc","followers_url":"https://api.github.com/users/rootsongjc/followers","following_url":"https://api.github.com/users/rootsongjc/following{/other_user}","gists_url":"https://api.github.com/users/rootsongjc/gists{/gist_id}","starred_url":"https://api.github.com/users/rootsongjc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rootsongjc/subscriptions","organizations_url":"https://api.github.com/users/rootsongjc/orgs","repos_url":"https://api.github.com/users/rootsongjc/repos","events_url":"https://api.github.com/users/rootsongjc/events{/privacy}","received_events_url":"https://api.github.com/users/rootsongjc/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rootsongjc/kubernetes-handbook","description":"Kubernetes中文指南/实践手册 https://jimmysong.io/kubernetes-handbook","fork":false,"url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook","forks_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/forks","keys_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/teams","hooks_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/hooks","issue_events_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/issues/events{/number}","events_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/events","assignees_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/assignees{/user}","branches_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/branches{/branch}","tags_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/tags","blobs_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/git/refs{/sha}","trees_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/statuses/{sha}","languages_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/languages","stargazers_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/stargazers","contributors_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/contributors","subscribers_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/subscribers","subscription_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/subscription","commits_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/commits{/sha}","git_commits_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/git/commits{/sha}","comments_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/comments{/number}","issue_comment_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/issues/comments{/number}","contents_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/contents/{+path}","compare_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/merges","archive_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/downloads","issues_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/issues{/number}","pulls_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/pulls{/number}","milestones_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/milestones{/number}","notifications_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/labels{/name}","releases_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/releases{/id}","deployments_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/deployments","created_at":"2017-04-14T09:34:43Z","updated_at":"2018-03-13T13:34:26Z","pushed_at":"2018-03-13T09:43:50Z","git_url":"git://github.com/rootsongjc/kubernetes-handbook.git","ssh_url":"git@github.com:rootsongjc/kubernetes-handbook.git","clone_url":"https://github.com/rootsongjc/kubernetes-handbook.git","svn_url":"https://github.com/rootsongjc/kubernetes-handbook","homepage":"https://jimmysong.io/kubernetes-handbook","size":103511,"stargazers_count":1547,"watchers_count":1547,"language":"Shell","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":484,"mirror_url":null,"archived":false,"open_issues_count":31,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":484,"open_issues":31,"watchers":1547,"default_branch":"master"}},"base":{"label":"rootsongjc:master","ref":"master","sha":"c27b1d9665fe2ec03b83dd9e46e34d7cfce71434","user":{"login":"rootsongjc","id":3328185,"avatar_url":"https://avatars3.githubusercontent.com/u/3328185?v=4","gravatar_id":"","url":"https://api.github.com/users/rootsongjc","html_url":"https://github.com/rootsongjc","followers_url":"https://api.github.com/users/rootsongjc/followers","following_url":"https://api.github.com/users/rootsongjc/following{/other_user}","gists_url":"https://api.github.com/users/rootsongjc/gists{/gist_id}","starred_url":"https://api.github.com/users/rootsongjc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rootsongjc/subscriptions","organizations_url":"https://api.github.com/users/rootsongjc/orgs","repos_url":"https://api.github.com/users/rootsongjc/repos","events_url":"https://api.github.com/users/rootsongjc/events{/privacy}","received_events_url":"https://api.github.com/users/rootsongjc/received_events","type":"User","site_admin":false},"repo":{"id":88254582,"name":"kubernetes-handbook","full_name":"rootsongjc/kubernetes-handbook","owner":{"login":"rootsongjc","id":3328185,"avatar_url":"https://avatars3.githubusercontent.com/u/3328185?v=4","gravatar_id":"","url":"https://api.github.com/users/rootsongjc","html_url":"https://github.com/rootsongjc","followers_url":"https://api.github.com/users/rootsongjc/followers","following_url":"https://api.github.com/users/rootsongjc/following{/other_user}","gists_url":"https://api.github.com/users/rootsongjc/gists{/gist_id}","starred_url":"https://api.github.com/users/rootsongjc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rootsongjc/subscriptions","organizations_url":"https://api.github.com/users/rootsongjc/orgs","repos_url":"https://api.github.com/users/rootsongjc/repos","events_url":"https://api.github.com/users/rootsongjc/events{/privacy}","received_events_url":"https://api.github.com/users/rootsongjc/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rootsongjc/kubernetes-handbook","description":"Kubernetes中文指南/实践手册 https://jimmysong.io/kubernetes-handbook","fork":false,"url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook","forks_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/forks","keys_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/teams","hooks_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/hooks","issue_events_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/issues/events{/number}","events_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/events","assignees_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/assignees{/user}","branches_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/branches{/branch}","tags_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/tags","blobs_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/git/refs{/sha}","trees_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/statuses/{sha}","languages_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/languages","stargazers_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/stargazers","contributors_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/contributors","subscribers_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/subscribers","subscription_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/subscription","commits_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/commits{/sha}","git_commits_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/git/commits{/sha}","comments_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/comments{/number}","issue_comment_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/issues/comments{/number}","contents_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/contents/{+path}","compare_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/merges","archive_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/downloads","issues_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/issues{/number}","pulls_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/pulls{/number}","milestones_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/milestones{/number}","notifications_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/labels{/name}","releases_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/releases{/id}","deployments_url":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/deployments","created_at":"2017-04-14T09:34:43Z","updated_at":"2018-03-13T13:34:26Z","pushed_at":"2018-03-13T09:43:50Z","git_url":"git://github.com/rootsongjc/kubernetes-handbook.git","ssh_url":"git@github.com:rootsongjc/kubernetes-handbook.git","clone_url":"https://github.com/rootsongjc/kubernetes-handbook.git","svn_url":"https://github.com/rootsongjc/kubernetes-handbook","homepage":"https://jimmysong.io/kubernetes-handbook","size":103511,"stargazers_count":1547,"watchers_count":1547,"language":"Shell","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":484,"mirror_url":null,"archived":false,"open_issues_count":31,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":484,"open_issues":31,"watchers":1547,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/pulls/147"},"html":{"href":"https://github.com/rootsongjc/kubernetes-handbook/pull/147"},"issue":{"href":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/issues/147"},"comments":{"href":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/issues/147/comments"},"review_comments":{"href":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/pulls/147/comments"},"review_comment":{"href":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/pulls/147/commits"},"statuses":{"href":"https://api.github.com/repos/rootsongjc/kubernetes-handbook/statuses/cfc86dd5fc73b852a4e6c48fc15fee49055a5d2f"}},"author_association":"NONE","merged":false,"mergeable":false,"rebaseable":false,"mergeable_state":"dirty","merged_by":null,"comments":1,"review_comments":0,"maintainer_can_modify":false,"commits":278,"additions":712303,"deletions":12646,"changed_files":575}}
{"actor":{"display_login":"rootsongjc"}}