{"action":"created","comment":{"url":"https://api.github.com/repos/helm/charts/pulls/comments/244089153","pull_request_review_id":188010502,"id":244089153,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0NDA4OTE1Mw==","diff_hunk":"@@ -0,0 +1,33 @@\n+{{- $fullName := include \"redis-ha.fullname\" . }}\n+{{- $replicas := int .Values.replicas }}\n+{{- $root := . }}\n+{{- range $i := until $replicas }}\n+---\n+apiVersion: v1\n+kind: Service\n+metadata:\n+  name: {{ $fullName }}-announce-{{ $i }}","path":"stable/redis-ha/templates/redis-ha-announce-service.yaml","position":9,"original_position":9,"commit_id":"a7d88cb14b57d348446632c9358044e4f9b84fd9","original_commit_id":"a7d88cb14b57d348446632c9358044e4f9b84fd9","user":{"login":"ceshihao","id":7711875,"node_id":"MDQ6VXNlcjc3MTE4NzU=","avatar_url":"https://avatars3.githubusercontent.com/u/7711875?v=4","gravatar_id":"","url":"https://api.github.com/users/ceshihao","html_url":"https://github.com/ceshihao","followers_url":"https://api.github.com/users/ceshihao/followers","following_url":"https://api.github.com/users/ceshihao/following{/other_user}","gists_url":"https://api.github.com/users/ceshihao/gists{/gist_id}","starred_url":"https://api.github.com/users/ceshihao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ceshihao/subscriptions","organizations_url":"https://api.github.com/users/ceshihao/orgs","repos_url":"https://api.github.com/users/ceshihao/repos","events_url":"https://api.github.com/users/ceshihao/events{/privacy}","received_events_url":"https://api.github.com/users/ceshihao/received_events","type":"User","site_admin":false},"body":"I think maybe these services are not needed, because `StatefulSet` can have Stable Network ID through headless service.\r\nhttps://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id","created_at":"2018-12-27T06:17:49Z","updated_at":"2018-12-27T06:18:07Z","html_url":"https://github.com/helm/charts/pull/10032#discussion_r244089153","pull_request_url":"https://api.github.com/repos/helm/charts/pulls/10032","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/helm/charts/pulls/comments/244089153"},"html":{"href":"https://github.com/helm/charts/pull/10032#discussion_r244089153"},"pull_request":{"href":"https://api.github.com/repos/helm/charts/pulls/10032"}}},"pull_request":{"url":"https://api.github.com/repos/helm/charts/pulls/10032","id":238866531,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM4ODY2NTMx","html_url":"https://github.com/helm/charts/pull/10032","diff_url":"https://github.com/helm/charts/pull/10032.diff","patch_url":"https://github.com/helm/charts/pull/10032.patch","issue_url":"https://api.github.com/repos/helm/charts/issues/10032","number":10032,"state":"open","locked":false,"title":"[stable/redis-ha] Fix split brain issue","user":{"login":"ssalaues","id":24439848,"node_id":"MDQ6VXNlcjI0NDM5ODQ4","avatar_url":"https://avatars1.githubusercontent.com/u/24439848?v=4","gravatar_id":"","url":"https://api.github.com/users/ssalaues","html_url":"https://github.com/ssalaues","followers_url":"https://api.github.com/users/ssalaues/followers","following_url":"https://api.github.com/users/ssalaues/following{/other_user}","gists_url":"https://api.github.com/users/ssalaues/gists{/gist_id}","starred_url":"https://api.github.com/users/ssalaues/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ssalaues/subscriptions","organizations_url":"https://api.github.com/users/ssalaues/orgs","repos_url":"https://api.github.com/users/ssalaues/repos","events_url":"https://api.github.com/users/ssalaues/events{/privacy}","received_events_url":"https://api.github.com/users/ssalaues/received_events","type":"User","site_admin":false},"body":"#### What this PR does / why we need it:\r\nMajor:\r\nFixes issues where network partitions can result in a split-brain #9488 \r\n  - Better init script that better handles recovery from the split-brain\r\n  - Retained Sentinel IDs\r\n  - Better probes\r\n\r\nMinor:\r\nFixes name override options #9568\r\n\r\n---\r\nPart of the root issue of #9488 in that whenever a pod is deleted/recreated, it gets assigned a new IP address causing the remaining quorum to lose track of the down pod after rescheduling. In ideal scenarios this is okay because the init container will find and attach to an existing quorum. However in the case of a network partition this can easily result in the split-brain issue.\r\n\r\nThese changes leverage the stable IP of a Kubernetes service mapped to the notion of an \"Announce IP\" in redis/sentinel that allow for more stable operation and discovery. This is necessary because both Redis and Sentinel will resolve DNS names and only persist the corresponding IP in the config not the DNS name. \r\n\r\n#### Which issue this PR fixes\r\n*(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*\r\n  - fixes #9568, fixes #9488\r\n\r\n#### Special notes for your reviewer:\r\nIn my test lab, these fixes allow for the the init to fail and crash, preventing the issue from occurring.\r\n\r\ncc @aianus \r\n\r\n#### Checklist\r\n[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]\r\n- [x] [DCO](https://www.helm.sh/blog/helm-dco/index.html) signed\r\n- [x] Chart Version bumped\r\n- [x] Variables are documented in the README.md","created_at":"2018-12-14T23:09:56Z","updated_at":"2018-12-27T06:18:07Z","closed_at":null,"merged_at":null,"merge_commit_sha":"20bc1a22c3db6e67438e7ce606e2a6ccfb2a4daf","assignee":{"login":"cpanato","id":4115580,"node_id":"MDQ6VXNlcjQxMTU1ODA=","avatar_url":"https://avatars2.githubusercontent.com/u/4115580?v=4","gravatar_id":"","url":"https://api.github.com/users/cpanato","html_url":"https://github.com/cpanato","followers_url":"https://api.github.com/users/cpanato/followers","following_url":"https://api.github.com/users/cpanato/following{/other_user}","gists_url":"https://api.github.com/users/cpanato/gists{/gist_id}","starred_url":"https://api.github.com/users/cpanato/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cpanato/subscriptions","organizations_url":"https://api.github.com/users/cpanato/orgs","repos_url":"https://api.github.com/users/cpanato/repos","events_url":"https://api.github.com/users/cpanato/events{/privacy}","received_events_url":"https://api.github.com/users/cpanato/received_events","type":"User","site_admin":false},"assignees":[{"login":"cpanato","id":4115580,"node_id":"MDQ6VXNlcjQxMTU1ODA=","avatar_url":"https://avatars2.githubusercontent.com/u/4115580?v=4","gravatar_id":"","url":"https://api.github.com/users/cpanato","html_url":"https://github.com/cpanato","followers_url":"https://api.github.com/users/cpanato/followers","following_url":"https://api.github.com/users/cpanato/following{/other_user}","gists_url":"https://api.github.com/users/cpanato/gists{/gist_id}","starred_url":"https://api.github.com/users/cpanato/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cpanato/subscriptions","organizations_url":"https://api.github.com/users/cpanato/orgs","repos_url":"https://api.github.com/users/cpanato/repos","events_url":"https://api.github.com/users/cpanato/events{/privacy}","received_events_url":"https://api.github.com/users/cpanato/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"davidkarlsen","id":18299,"node_id":"MDQ6VXNlcjE4Mjk5","avatar_url":"https://avatars0.githubusercontent.com/u/18299?v=4","gravatar_id":"","url":"https://api.github.com/users/davidkarlsen","html_url":"https://github.com/davidkarlsen","followers_url":"https://api.github.com/users/davidkarlsen/followers","following_url":"https://api.github.com/users/davidkarlsen/following{/other_user}","gists_url":"https://api.github.com/users/davidkarlsen/gists{/gist_id}","starred_url":"https://api.github.com/users/davidkarlsen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidkarlsen/subscriptions","organizations_url":"https://api.github.com/users/davidkarlsen/orgs","repos_url":"https://api.github.com/users/davidkarlsen/repos","events_url":"https://api.github.com/users/davidkarlsen/events{/privacy}","received_events_url":"https://api.github.com/users/davidkarlsen/received_events","type":"User","site_admin":false},{"login":"unguiculus","id":925412,"node_id":"MDQ6VXNlcjkyNTQxMg==","avatar_url":"https://avatars1.githubusercontent.com/u/925412?v=4","gravatar_id":"","url":"https://api.github.com/users/unguiculus","html_url":"https://github.com/unguiculus","followers_url":"https://api.github.com/users/unguiculus/followers","following_url":"https://api.github.com/users/unguiculus/following{/other_user}","gists_url":"https://api.github.com/users/unguiculus/gists{/gist_id}","starred_url":"https://api.github.com/users/unguiculus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/unguiculus/subscriptions","organizations_url":"https://api.github.com/users/unguiculus/orgs","repos_url":"https://api.github.com/users/unguiculus/repos","events_url":"https://api.github.com/users/unguiculus/events{/privacy}","received_events_url":"https://api.github.com/users/unguiculus/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":1037076588,"node_id":"MDU6TGFiZWwxMDM3MDc2NTg4","url":"https://api.github.com/repos/helm/charts/labels/Contribution%20Allowed","name":"Contribution Allowed","color":"3df47d","default":false},{"id":676596499,"node_id":"MDU6TGFiZWw2NzY1OTY0OTk=","url":"https://api.github.com/repos/helm/charts/labels/size/L","name":"size/L","color":"ee9900","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/helm/charts/pulls/10032/commits","review_comments_url":"https://api.github.com/repos/helm/charts/pulls/10032/comments","review_comment_url":"https://api.github.com/repos/helm/charts/pulls/comments{/number}","comments_url":"https://api.github.com/repos/helm/charts/issues/10032/comments","statuses_url":"https://api.github.com/repos/helm/charts/statuses/a7d88cb14b57d348446632c9358044e4f9b84fd9","head":{"label":"scality:bugfix/split-brain","ref":"bugfix/split-brain","sha":"a7d88cb14b57d348446632c9358044e4f9b84fd9","user":{"login":"scality","id":383812,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM4MzgxMg==","avatar_url":"https://avatars1.githubusercontent.com/u/383812?v=4","gravatar_id":"","url":"https://api.github.com/users/scality","html_url":"https://github.com/scality","followers_url":"https://api.github.com/users/scality/followers","following_url":"https://api.github.com/users/scality/following{/other_user}","gists_url":"https://api.github.com/users/scality/gists{/gist_id}","starred_url":"https://api.github.com/users/scality/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scality/subscriptions","organizations_url":"https://api.github.com/users/scality/orgs","repos_url":"https://api.github.com/users/scality/repos","events_url":"https://api.github.com/users/scality/events{/privacy}","received_events_url":"https://api.github.com/users/scality/received_events","type":"Organization","site_admin":false},"repo":{"id":121790077,"node_id":"MDEwOlJlcG9zaXRvcnkxMjE3OTAwNzc=","name":"charts","full_name":"scality/charts","private":false,"owner":{"login":"scality","id":383812,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM4MzgxMg==","avatar_url":"https://avatars1.githubusercontent.com/u/383812?v=4","gravatar_id":"","url":"https://api.github.com/users/scality","html_url":"https://github.com/scality","followers_url":"https://api.github.com/users/scality/followers","following_url":"https://api.github.com/users/scality/following{/other_user}","gists_url":"https://api.github.com/users/scality/gists{/gist_id}","starred_url":"https://api.github.com/users/scality/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scality/subscriptions","organizations_url":"https://api.github.com/users/scality/orgs","repos_url":"https://api.github.com/users/scality/repos","events_url":"https://api.github.com/users/scality/events{/privacy}","received_events_url":"https://api.github.com/users/scality/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/scality/charts","description":"Curated applications for Kubernetes","fork":true,"url":"https://api.github.com/repos/scality/charts","forks_url":"https://api.github.com/repos/scality/charts/forks","keys_url":"https://api.github.com/repos/scality/charts/keys{/key_id}","collaborators_url":"https://api.github.com/repos/scality/charts/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/scality/charts/teams","hooks_url":"https://api.github.com/repos/scality/charts/hooks","issue_events_url":"https://api.github.com/repos/scality/charts/issues/events{/number}","events_url":"https://api.github.com/repos/scality/charts/events","assignees_url":"https://api.github.com/repos/scality/charts/assignees{/user}","branches_url":"https://api.github.com/repos/scality/charts/branches{/branch}","tags_url":"https://api.github.com/repos/scality/charts/tags","blobs_url":"https://api.github.com/repos/scality/charts/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/scality/charts/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/scality/charts/git/refs{/sha}","trees_url":"https://api.github.com/repos/scality/charts/git/trees{/sha}","statuses_url":"https://api.github.com/repos/scality/charts/statuses/{sha}","languages_url":"https://api.github.com/repos/scality/charts/languages","stargazers_url":"https://api.github.com/repos/scality/charts/stargazers","contributors_url":"https://api.github.com/repos/scality/charts/contributors","subscribers_url":"https://api.github.com/repos/scality/charts/subscribers","subscription_url":"https://api.github.com/repos/scality/charts/subscription","commits_url":"https://api.github.com/repos/scality/charts/commits{/sha}","git_commits_url":"https://api.github.com/repos/scality/charts/git/commits{/sha}","comments_url":"https://api.github.com/repos/scality/charts/comments{/number}","issue_comment_url":"https://api.github.com/repos/scality/charts/issues/comments{/number}","contents_url":"https://api.github.com/repos/scality/charts/contents/{+path}","compare_url":"https://api.github.com/repos/scality/charts/compare/{base}...{head}","merges_url":"https://api.github.com/repos/scality/charts/merges","archive_url":"https://api.github.com/repos/scality/charts/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/scality/charts/downloads","issues_url":"https://api.github.com/repos/scality/charts/issues{/number}","pulls_url":"https://api.github.com/repos/scality/charts/pulls{/number}","milestones_url":"https://api.github.com/repos/scality/charts/milestones{/number}","notifications_url":"https://api.github.com/repos/scality/charts/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/scality/charts/labels{/name}","releases_url":"https://api.github.com/repos/scality/charts/releases{/id}","deployments_url":"https://api.github.com/repos/scality/charts/deployments","created_at":"2018-02-16T19:12:06Z","updated_at":"2018-10-11T03:32:33Z","pushed_at":"2018-12-19T06:03:36Z","git_url":"git://github.com/scality/charts.git","ssh_url":"git@github.com:scality/charts.git","clone_url":"https://github.com/scality/charts.git","svn_url":"https://github.com/scality/charts","homepage":"","size":14729,"stargazers_count":1,"watchers_count":1,"language":"Smarty","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":1,"watchers":1,"default_branch":"master"}},"base":{"label":"helm:master","ref":"master","sha":"a22d36543c011f2cec9cba6880fdfb6e30a8b3cc","user":{"login":"helm","id":15859888,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE1ODU5ODg4","avatar_url":"https://avatars2.githubusercontent.com/u/15859888?v=4","gravatar_id":"","url":"https://api.github.com/users/helm","html_url":"https://github.com/helm","followers_url":"https://api.github.com/users/helm/followers","following_url":"https://api.github.com/users/helm/following{/other_user}","gists_url":"https://api.github.com/users/helm/gists{/gist_id}","starred_url":"https://api.github.com/users/helm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/helm/subscriptions","organizations_url":"https://api.github.com/users/helm/orgs","repos_url":"https://api.github.com/users/helm/repos","events_url":"https://api.github.com/users/helm/events{/privacy}","received_events_url":"https://api.github.com/users/helm/received_events","type":"Organization","site_admin":false},"repo":{"id":46806184,"node_id":"MDEwOlJlcG9zaXRvcnk0NjgwNjE4NA==","name":"charts","full_name":"helm/charts","private":false,"owner":{"login":"helm","id":15859888,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE1ODU5ODg4","avatar_url":"https://avatars2.githubusercontent.com/u/15859888?v=4","gravatar_id":"","url":"https://api.github.com/users/helm","html_url":"https://github.com/helm","followers_url":"https://api.github.com/users/helm/followers","following_url":"https://api.github.com/users/helm/following{/other_user}","gists_url":"https://api.github.com/users/helm/gists{/gist_id}","starred_url":"https://api.github.com/users/helm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/helm/subscriptions","organizations_url":"https://api.github.com/users/helm/orgs","repos_url":"https://api.github.com/users/helm/repos","events_url":"https://api.github.com/users/helm/events{/privacy}","received_events_url":"https://api.github.com/users/helm/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/helm/charts","description":"Curated applications for Kubernetes","fork":false,"url":"https://api.github.com/repos/helm/charts","forks_url":"https://api.github.com/repos/helm/charts/forks","keys_url":"https://api.github.com/repos/helm/charts/keys{/key_id}","collaborators_url":"https://api.github.com/repos/helm/charts/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/helm/charts/teams","hooks_url":"https://api.github.com/repos/helm/charts/hooks","issue_events_url":"https://api.github.com/repos/helm/charts/issues/events{/number}","events_url":"https://api.github.com/repos/helm/charts/events","assignees_url":"https://api.github.com/repos/helm/charts/assignees{/user}","branches_url":"https://api.github.com/repos/helm/charts/branches{/branch}","tags_url":"https://api.github.com/repos/helm/charts/tags","blobs_url":"https://api.github.com/repos/helm/charts/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/helm/charts/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/helm/charts/git/refs{/sha}","trees_url":"https://api.github.com/repos/helm/charts/git/trees{/sha}","statuses_url":"https://api.github.com/repos/helm/charts/statuses/{sha}","languages_url":"https://api.github.com/repos/helm/charts/languages","stargazers_url":"https://api.github.com/repos/helm/charts/stargazers","contributors_url":"https://api.github.com/repos/helm/charts/contributors","subscribers_url":"https://api.github.com/repos/helm/charts/subscribers","subscription_url":"https://api.github.com/repos/helm/charts/subscription","commits_url":"https://api.github.com/repos/helm/charts/commits{/sha}","git_commits_url":"https://api.github.com/repos/helm/charts/git/commits{/sha}","comments_url":"https://api.github.com/repos/helm/charts/comments{/number}","issue_comment_url":"https://api.github.com/repos/helm/charts/issues/comments{/number}","contents_url":"https://api.github.com/repos/helm/charts/contents/{+path}","compare_url":"https://api.github.com/repos/helm/charts/compare/{base}...{head}","merges_url":"https://api.github.com/repos/helm/charts/merges","archive_url":"https://api.github.com/repos/helm/charts/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/helm/charts/downloads","issues_url":"https://api.github.com/repos/helm/charts/issues{/number}","pulls_url":"https://api.github.com/repos/helm/charts/pulls{/number}","milestones_url":"https://api.github.com/repos/helm/charts/milestones{/number}","notifications_url":"https://api.github.com/repos/helm/charts/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/helm/charts/labels{/name}","releases_url":"https://api.github.com/repos/helm/charts/releases{/id}","deployments_url":"https://api.github.com/repos/helm/charts/deployments","created_at":"2015-11-24T17:05:28Z","updated_at":"2018-12-27T03:55:21Z","pushed_at":"2018-12-27T02:40:16Z","git_url":"git://github.com/helm/charts.git","ssh_url":"git@github.com:helm/charts.git","clone_url":"https://github.com/helm/charts.git","svn_url":"https://github.com/helm/charts","homepage":"","size":15174,"stargazers_count":6159,"watchers_count":6159,"language":"Smarty","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":5654,"mirror_url":null,"archived":false,"open_issues_count":644,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":5654,"open_issues":644,"watchers":6159,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/helm/charts/pulls/10032"},"html":{"href":"https://github.com/helm/charts/pull/10032"},"issue":{"href":"https://api.github.com/repos/helm/charts/issues/10032"},"comments":{"href":"https://api.github.com/repos/helm/charts/issues/10032/comments"},"review_comments":{"href":"https://api.github.com/repos/helm/charts/pulls/10032/comments"},"review_comment":{"href":"https://api.github.com/repos/helm/charts/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/helm/charts/pulls/10032/commits"},"statuses":{"href":"https://api.github.com/repos/helm/charts/statuses/a7d88cb14b57d348446632c9358044e4f9b84fd9"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"ceshihao"}}