Compare commits

...

2526 Commits

Author SHA1 Message Date
Kubernetes Prow Robot 1c8fbbcc9c Merge pull request #31375 from sftim/20211207_mark_only_live_site_indexable_v1.19
Mark only live site indexable (v1.19 backport)
2022-01-27 11:05:50 -08:00
Tim Bannister adac7dd7f5 Mark live site in HTML
This allows CSS, JavaScript etc to detect if the served website is the
live one.
2022-01-17 22:43:24 +00:00
Tim Bannister e65a330692 Make only live website indexable
This change updates how we run Hugo AND changes the logic for checking
whether a page should be indexable (copied with a backport from upstream
Docsy).
2022-01-17 22:43:15 +00:00
Kubernetes Prow Robot 82719405a5 Merge pull request #30769 from jlbutler/update-119-config-for-123
update release-1.19 config for release 1.23
2021-12-07 15:59:22 -08:00
Jesse Butler 7f1ed8f491 update release-1.19 config for release 1.23 2021-12-06 11:57:49 -05:00
Kubernetes Prow Robot d6a7a8a6f8 Merge pull request #29198 from PI-Victor/config/update-release-1.19
Update config.toml for release-1.19 branch
2021-08-04 16:05:11 -07:00
Victor Palade 3cdbd168a2 config.toml: update versions to the latest patches.
Signed-off-by: Victor Palade <victor@cloudflavor.io>
2021-08-03 22:14:28 +02:00
Kubernetes Prow Robot e2767f8d2f Merge pull request #28777 from ialidzhikov/automated-cherry-pick-of-#28763-origin-release-1.19
Automated cherry pick of #28763: Fix default disk type for Azure
2021-07-27 18:31:35 -07:00
ialidzhikov 36ee4d1779 Fix default disk type for Azure
Signed-off-by: ialidzhikov <i.alidjikov@gmail.com>
2021-07-03 23:27:49 +03:00
Kubernetes Prow Robot f379a71640 Merge pull request #28129 from kubernetes/release-1.19-ja.1
Commit first work from 1.19 milestone
2021-05-26 05:21:21 -07:00
inductor 73b3cf8784 commit first work from 1.19 milestone 2021-05-26 10:10:10 +00:00
Kubernetes Prow Robot 6866260642 Merge pull request #27454 from reylejano/update-release-1.19-config.toml
Update 1.19 config.toml for release 1.21
2021-04-08 12:30:03 -07:00
Rey Lejano b7f0e98c51 update release-1.19 config.toml for release 1.21 2021-04-07 16:02:29 -07:00
Kubernetes Prow Robot 477de0c2dd Merge pull request #27274 from sftim/20210328_remove_announcement_v1.19
Remove stale announcement
2021-03-30 18:48:58 -07:00
Tim Bannister 5fc5cc0c94 Remove stale announcement
This announcement was live when the v1.19 release branch was made,
but is no longer active.

(Since this release, we updated the mechanism for publishing
announcements, but have not backported those changes).
2021-03-28 20:07:58 +01:00
Kubernetes Prow Robot ebe6b227e8 Merge pull request #26143 from shu-mutou/remove-basic-auth-119
Remove Static Password File section
2021-01-24 00:32:53 -08:00
Shu Muto 78da08cc6c Remove Static Password File section
Due to removed on v1.19, remove Static Password File section from
`docs/reference/access-authn-authz/authentication.md`.
2021-01-19 15:25:07 +09:00
Kubernetes Prow Robot 229e32812e Merge pull request #25883 from sculley/fix-upgrade-kubeadm-docs-release-1.19
re-positioned drain/uncorden steps in kubeadm upgrade docs in release-1.19
2020-12-31 16:25:52 -08:00
Sam Culley 0d63e873ff re-positioned drain/uncorden steps in kubeadm upgrade docs 2020-12-31 07:25:46 +00:00
Kubernetes Prow Robot 2d45075620 Merge pull request #25553 from kbhawkey/fix-latest-version
release-1.19, fix latest and deprecated parameters
2020-12-14 03:05:28 -08:00
Karen Bradshaw 6fa51f75a4 fix latest parameter
set deprecated true

replace latest-version shortcode
2020-12-13 19:35:18 -05:00
Kubernetes Prow Robot fa6409c6eb Merge pull request #25572 from sftim/20201210_match_api_reference_to_version
Match API reference to version of Kubernetes we're documenting
2020-12-13 15:01:27 -08:00
Tim Bannister 3ddc8cc2be Match API reference to version of Kubernetes we're documenting 2020-12-11 16:29:05 +00:00
Kubernetes Prow Robot 958c5bd7b8 Merge pull request #25467 from annajung/release-1.19-config-change
Update 1.19 config.toml for release 1.20
2020-12-08 14:19:33 -08:00
Anna 5309821c8e Merge pull request #25465 from annajung/release-1.19
Merge master into release-1.19 to keep in sync
2020-12-07 14:01:15 -06:00
Anna Jung (VMware) bb6b39db54 Update config.toml for release 1.20
Signed-off-by: Anna Jung (VMware) <antheaj@vmware.com>
2020-12-07 10:57:14 -06:00
Kubernetes Prow Robot b905af1f34 Merge pull request #24911 from roycaihw/restore-etcd
document one should restart all system components after restoring etcd
2020-12-07 07:19:27 -08:00
Kubernetes Prow Robot 0f966a7637 Merge pull request #24854 from zshihang/bound
add metric and flag information for BoundServiceAccountTokenVolume
2020-12-07 07:09:26 -08:00
Kubernetes Prow Robot 30099309f8 Merge pull request #25444 from guzj11/patch-10
Update configure-dns-cluster.md
2020-12-07 07:01:28 -08:00
Kubernetes Prow Robot b6f9c2c581 Merge pull request #25146 from serewicz/patch-1
Update container-runtimes.md
2020-12-07 06:59:26 -08:00
Kubernetes Prow Robot b9daf99599 Merge pull request #25449 from guzj11/patch-11
Update guestbook.md
2020-12-07 06:57:26 -08:00
Kubernetes Prow Robot 1cfe0a4769 Merge pull request #25456 from Arhell/sync
[zh] sync missing period in logging.md
2020-12-07 06:55:26 -08:00
guzj11 12d2845dc5 Update configure-dns-cluster.md 2020-12-07 22:50:41 +08:00
guzj11 c613f7561e Update configure-dns-cluster.md 2020-12-07 22:50:41 +08:00
guzj11 3451609fdd Update configure-dns-cluster.md 2020-12-07 22:50:41 +08:00
guzj11 ef092b3365 Update configure-dns-cluster.md
apply suggestion from tengqm
2020-12-07 22:49:52 +08:00
guzj11 fe6d79d480 Update guestbook.md
sync with en version.

Update guestbook.md

apply suggestions from tengqm

Apply suggestions from code review

Co-authored-by: Qiming Teng <tengqim@cn.ibm.com>
2020-12-07 22:32:08 +08:00
Arhell cfbe452d06 [zh] sync missing period in logging.md 2020-12-07 15:56:30 +02:00
Kubernetes Prow Robot 49f7b70944 Merge pull request #25429 from jiazxjason/patch-22
Update zh trans safely-drain-node.md
2020-12-07 04:19:26 -08:00
Kubernetes Prow Robot a0cf6cae5d Merge pull request #25421 from jiaj12/patch-37
Update kubectl-plugins.md
2020-12-07 01:41:26 -08:00
jiajie a902f96a60 Update kubectl-plugins.md 2020-12-07 17:06:11 +08:00
Kubernetes Prow Robot 5dc5ba1142 Merge pull request #25450 from jiaj12/patch-50
Update new-features.md
2020-12-07 00:47:26 -08:00
jiajie fc13bc7a1c Update new-features.md 2020-12-07 16:36:08 +08:00
Kubernetes Prow Robot 85afbcb05a Merge pull request #25439 from jiaj12/patch-47
Update http-proxy-access-api.md
2020-12-06 23:59:26 -08:00
jiajie 44a2b1871d Update new-features.md
update zh content to match en master branch
2020-12-07 15:56:28 +08:00
Kubernetes Prow Robot af9cc1b7eb Merge pull request #25446 from ycyxuehan/patch-4
Update certificates.md
2020-12-06 23:43:26 -08:00
jiajie 99467aea3e Update http-proxy-access-api.md 2020-12-07 15:40:22 +08:00
bing c97259b9fc Update certificates.md
修正markdown链接错误
2020-12-07 15:31:40 +08:00
guzj11 2a29c7320a Update configure-dns-cluster.md
sync with the en version.
2020-12-07 15:30:50 +08:00
jiazxjason 8ca648a285 Update safely-drain-node.md 2020-12-07 15:12:31 +08:00
jiazxjason 03e09ed876 Update content/zh/docs/tasks/administer-cluster/safely-drain-node.md
Co-authored-by: Qiming Teng <tengqim@cn.ibm.com>
2020-12-07 15:11:16 +08:00
Kubernetes Prow Robot 8cbcce2fd2 Merge pull request #25438 from jiaj12/patch-46
Update configure-service-account.md
2020-12-06 22:31:26 -08:00
jiajie 81b4221ed8 Update http-proxy-access-api.md
put a missing line back
2020-12-07 14:07:08 +08:00
jiazxjason e04bd16578 Update safely-drain-node.md 2020-12-07 14:01:09 +08:00
guzj11 0c084cf152 Update user-guide-content-moved.md (#25437)
* Update user-guide-content-moved.md

update user-guide-content-move.md to sync with en 
and add the translation.

* Apply suggestions from code review

Co-authored-by: Qiming Teng <tengqim@cn.ibm.com>

Co-authored-by: Qiming Teng <tengqim@cn.ibm.com>
2020-12-06 21:59:26 -08:00
jiajie 8e8257ab06 Update configure-service-account.md
put a missing line back
2020-12-07 13:59:07 +08:00
Kubernetes Prow Robot e1e4cdee5b Merge pull request #25435 from izeye/patch-1
Add a missing period in logging.md
2020-12-06 18:51:26 -08:00
Kubernetes Prow Robot 8470f960f2 Merge pull request #25424 from jiaj12/patch-40
Update _index.md
2020-12-06 18:37:25 -08:00
Kubernetes Prow Robot fce18dc04f Merge pull request #25432 from jiaj12/patch-43
Update reserve-compute-resources.md
2020-12-06 18:33:25 -08:00
jiajie d32863501f Update _index.md 2020-12-07 10:30:03 +08:00
Johnny Lim b1f91de703 Add a missing period in logging.md 2020-12-07 11:24:00 +09:00
jiajie 953e4ecf85 Update reserve-compute-resources.md
add a missing en line
2020-12-07 10:11:33 +08:00
Kubernetes Prow Robot 0734372e8f Merge pull request #24693 from colindev/patch-1
Update certificates.md
2020-12-06 17:49:26 -08:00
jiazxjason b4484da6f6 Update safely-drain-node.md 2020-12-07 09:46:12 +08:00
Kubernetes Prow Robot 23be39e00d Merge pull request #25368 from guzj11/patch-7
Update managing-secret-using-kubectl.md
2020-12-06 17:43:26 -08:00
Kubernetes Prow Robot 1d28f36c1c Merge pull request #25427 from yuandongx/PR-25418
[ZH]sync en[PR 25418]
2020-12-06 17:39:27 -08:00
yuandongx cfad7022fa Sycn change from EN(PR 25418) 2020-12-07 01:21:57 +00:00
Kubernetes Prow Robot bc5fc1ed44 Merge pull request #25422 from jiaj12/patch-38
Update _index.md
2020-12-06 17:03:26 -08:00
Kubernetes Prow Robot 4e90fc3812 Merge pull request #25415 from kubernetes/dev-1.19-ko.6
Sixth Korean l10n work for release-1.19
2020-12-06 16:03:26 -08:00
Kubernetes Prow Robot 7ad4627328 Merge pull request #25418 from bl-ue/patch-1
Containers in a pod share their MAC address
2020-12-06 12:29:26 -08:00
jiajie 594debf864 Update _index.md
update zh content to match en master branch
2020-12-06 23:40:30 +08:00
jiajie cebb262223 Update _index.md
sync to en branch
2020-12-06 23:23:55 +08:00
jiajie db3ee6e7b6 Update kubectl-plugins.md
update doc to match master branch
2020-12-06 23:20:34 +08:00
bl-ue 5f5952973e Containers in a pod share their MAC address
Containers in a pod share their MAC address as well as IP address
2020-12-06 08:17:59 -05:00
Kubernetes Prow Robot bc72bf3319 Merge pull request #25410 from sftim/20201204_typo_fix
Fix spelling error
2020-12-06 02:51:25 -08:00
Kubernetes Prow Robot 5636e8732f Merge pull request #25405 from tengqm/zh-fix-links-4
[zh] Fix links in zh localization (4)
2020-12-06 01:21:25 -08:00
Arhell dd950df8bd Sixth Korean l10n work for release-1.19
- fix Korean translation of 'object' (#25370)
- Update outdated files in the dev-1.19-ko.6 branch (2) (#25403)
- Translate setup/release/version-skew-policy.md in Korean (#25345)
- Translate tutorials/configuration/configure-java-microservice/configure-java-microservice/ into Korean (#24981)
- Translate health-checks.md into Korean (#25342)
- Translate reference/glossary/api-group.md in Korean (#25321)
- Translate reference/glossary/object.md in Korean (#25318)
- Translate tutorials/configuration/configure-java-microservice/configure-java-microservice-interactive/ into Korean (#24984)
- switch New York Times case study to use youtube shortcode (ko) (#25287)

Co-authored-by: seokho-son <shsongist@gmail.com>
Co-authored-by: Jerry Park <jaehwa@gmail.com>
Co-authored-by: PyungHo Yoon <learder@gmail.com>
Co-authored-by: mylovepooh <jun8414@gmail.com>
Co-authored-by: jmkim <jm1223.kim@samsung.com>
Co-authored-by: santachopa <santachopa@naver.com>
Co-authored-by: Arhell <arhell333@gmail.com>
2020-12-06 18:15:20 +09:00
Kubernetes Prow Robot 434f5e96bd Merge pull request #24674 from tengqm/fix-24507
[zh] Translate docs/setup/production-environment/windows/intro-windows-in-kubernetes.md
2020-12-05 22:49:25 -08:00
Kubernetes Prow Robot d29319028f Merge pull request #25412 from Arhell/sync
[zh] sync remove problems in DaemonSet fixed by controllerRef
2020-12-05 16:41:25 -08:00
Kubernetes Prow Robot d575183ad5 Merge pull request #25401 from tengqm/zh-fix-links-3
[zh] Fix links in zh localization (3)
2020-12-05 16:39:25 -08:00
Arhell 246ded8b5a [zh] sync remove problems in DaemonSet fixed by controllerRef 2020-12-06 01:26:53 +02:00
Kubernetes Prow Robot f06402e1d1 Merge pull request #24418 from liggitt/tls-server
Clarify external kubelet server approver requirements
2020-12-05 08:43:25 -08:00
Qiming Teng 4abcae9498 [zh] Translate docs/tasks/configure-pod-container/configure-gmsa.md 2020-12-05 13:34:32 +08:00
Kubernetes Prow Robot 3208b29045 Merge pull request #25404 from feloy/feloy-gsod-report
Report for my GSoD'20 project: Update how the Kubernetes website serves API references
2020-12-04 18:57:25 -08:00
Philippe Martin 4b8e1d0047 fix period 2020-12-05 03:26:58 +01:00
Philippe Martin b12d3cb114 Editor's note + Review 2020-12-05 03:20:42 +01:00
Kubernetes Prow Robot 03cf213bf1 Merge pull request #25348 from talonx/patch-1
Corrected the field names in the secret
2020-12-04 14:45:26 -08:00
Kubernetes Prow Robot 3b8399c7b8 Merge pull request #25286 from keshy/patch-1
Updated Cheat sheet to include additional command to get shell access to a running pod
2020-12-04 14:43:25 -08:00
Tim Bannister 077a74e076 Fix spelling error 2020-12-04 22:33:09 +00:00
Kubernetes Prow Robot 742ad39955 Merge pull request #25365 from RA489/updatemkube
Update install minikube page
2020-12-04 11:57:26 -08:00
Haowei Cai c6175427bb document one should restart all system components after restoring etcd 2020-12-04 10:45:29 -08:00
Philippe Martin 169712f33e future work + review 2020-12-04 19:04:50 +01:00
Kubernetes Prow Robot b81e259c13 Merge pull request #25393 from janetkuo/patch-1
Remove problems in DaemonSet fixed by controllerRef
2020-12-04 09:54:01 -08:00
Kubernetes Prow Robot 298c12b2c6 Merge pull request #25408 from breakliu/fix-zh-disruptions-typo
fix disruptions.md typo
2020-12-04 07:19:59 -08:00
Kubernetes Prow Robot c5c6d10305 Merge pull request #25397 from tengqm/zh-fix-links-1
[zh] Fix links in zh localization (1)
2020-12-04 07:17:59 -08:00
Philippe Martin 551037ad30 Season + headings 2020-12-04 15:51:47 +01:00
Philippe Martin 22e8714903 Add Celeste Horgan 2020-12-04 13:28:13 +01:00
breakliu e4d5725f69 fix disruptions.md typo 2020-12-04 19:38:26 +08:00
Philippe Martin 72b62dd3dd review 2020-12-04 12:07:46 +01:00
Philippe Martin 4b49c9accb add link to github 2020-12-04 11:48:58 +01:00
Qiming Teng abab517ffc [zh] Fix links in zh localization (4) 2020-12-04 18:26:04 +08:00
Philippe Martin eda601a4e2 Report for my GSoD'20 project
Update how the Kubernetes website serves API references
2020-12-04 11:20:21 +01:00
Kubernetes Prow Robot 6dee53937f Merge pull request #25398 from tengqm/zh-fix-links-2
[zh] Fix links in zh localization (2)
2020-12-04 01:47:25 -08:00
Qiming Teng b9e8fb699e [zh] Fix links in zh localization (3) 2020-12-04 16:05:40 +08:00
Kubernetes Prow Robot 5b26df32bd Merge pull request #25372 from dominrivera/patch-3
Update pod.md
2020-12-03 23:55:26 -08:00
Qiming Teng 35b6327159 [zh] Fix links in zh localization (2) 2020-12-04 14:54:02 +08:00
Qiming Teng 482351ef2a [zh] Fix links in zh localization (1) 2020-12-04 14:10:01 +08:00
Kubernetes Prow Robot 9c696a5883 Merge pull request #25385 from Arhell/sync-metrics
sync metrics for kubernetes system component
2020-12-03 21:59:26 -08:00
Kubernetes Prow Robot 2a7443289b Merge pull request #25312 from rayw000/code-of-conduct-use-proper-language
[zh] Replace English CNCF code of conduct with Chinese one
2020-12-03 21:57:26 -08:00
Kubernetes Prow Robot 11c82f30a6 Merge pull request #25303 from npu21/cronjob_zh
CronJob example should include imagePullPolicy: IfNotPresent
2020-12-03 21:55:26 -08:00
Kubernetes Prow Robot 3de9aadd93 Merge pull request #25293 from tengqm/zh-auth-2
[zh] Sync English site changes for authentication ref
2020-12-03 21:53:26 -08:00
Kubernetes Prow Robot 4939fe5d84 Merge pull request #24492 from tengqm/zh-ccm
[zh] Translate cloud-controller-manager reference
2020-12-03 21:51:25 -08:00
Kubernetes Prow Robot 81f76f4fcc Merge pull request #25290 from tengqm/zh-auth-1
[zh] Sync changes from English (auth references)
2020-12-03 21:49:25 -08:00
Kubernetes Prow Robot a17d27eb83 Merge pull request #25185 from tengqm/zh-resync-crd-versioning
[zh] Resync tasks/.../custom-resource-definition-versioning.md
2020-12-03 21:23:25 -08:00
Kubernetes Prow Robot 6864aced17 Merge pull request #25200 from tengqm/link-pvs
Add links to volumes from persistent volumes
2020-12-03 18:19:25 -08:00
Janet Kuo e837312f1f Remove problems in DaemonSet fixed by controllerRef
The sentence describes a problem that's solved by the introduction of controllerRef (ownerRef with controller==true) feature. Removing it.
2020-12-03 17:20:22 -08:00
Qiming Teng 9ddc0a3ad9 Add links to volumes from persistent volumes
When working with persistent volumes, I have to refer to the persitent
volumes page now and then, only to find that the information I need is
on a different page. The PR

- adds some links to ease navigation and
- currects the spelling of volume types, for example, `iscsi` is the type
  to specify rather than `iSCSI`,
- sort the volume type list in alphabetic order.
- added `photonPersistentDisk` as one of valid persistent volume type to
  use, though we don't have any documentation other than API spec for it.
2020-12-04 09:16:23 +08:00
Arhell 954770b0a6 sync metrics for kubernetes system component 2020-12-04 00:49:25 +02:00
Kubernetes Prow Robot dcdf3f0bac Merge pull request #25382 from sftim/20201203_fix_blog_typo
Fix blog typo
2020-12-03 12:35:26 -08:00
Tim Bannister 4e98e45fe6 Fix blog typo 2020-12-03 19:40:43 +00:00
Kubernetes Prow Robot 0ed1c2da5b Merge pull request #25380 from craiglpeters/patch-5
Add reference to AKS
2020-12-03 11:29:26 -08:00
Craig Peters 5bd49df68f Add reference to AKS
Add reference to AKS as a managed Kubernetes service
2020-12-03 11:15:54 -08:00
Kubernetes Prow Robot e0a2a5f4c5 Merge pull request #25374 from kbhawkey/update-reference-yml
update reference.yml for 1.20 reference docs
2020-12-03 09:47:00 -08:00
Kubernetes Prow Robot d6636e50c2 Merge pull request #24474 from sftim/20201010_clarify_api_versions_redux
Tweak docs about Kubernetes API versions
2020-12-03 08:51:00 -08:00
Karen Bradshaw 65dcd7fdae update reference.yml for 1.20 reference docs 2020-12-03 09:07:43 -05:00
Kubernetes Prow Robot 480d1df9db Merge pull request #25373 from mrbobbytables/fixup
Correct dockershim release removal target
2020-12-03 05:49:00 -08:00
Bob Killen e23de90f19 Correct dockershim release removal target 2020-12-03 07:57:25 -05:00
Kubernetes Prow Robot 30afb3b5f2 Merge pull request #25369 from helight/update_content/zh/docs/concepts/configuration/overview.md
[zh]: udpate content/zh/docs/concepts/configuration/overview.md
2020-12-03 04:07:00 -08:00
Domingo Rivera 4669987e96 Update pod.md
Broken references correction.
2020-12-03 13:00:57 +01:00
helight d3c0fae627 udpate content/zh/docs/concepts/configuration/overview.md 2020-12-03 19:23:06 +08:00
Kubernetes Prow Robot a3d4a4066b Merge pull request #25357 from EmilyM1/metrics-for-k8-system-component
metrics for kubernetes system component
2020-12-03 02:21:00 -08:00
helight fff830aa51 udpate content/zh/docs/concepts/configuration/overview.md 2020-12-03 16:49:23 +08:00
helight d1f92ec276 udpate content/zh/docs/concepts/configuration/overview.md 2020-12-03 16:47:03 +08:00
guzj11 30badbc6ec Update managing-secret-using-kubectl.md 2020-12-03 16:10:13 +08:00
Qiming Teng 54ab3dafff [zh] Resync tasks/.../custom-resource-definition-versioning.md 2020-12-03 16:09:56 +08:00
Qiming Teng bab256b788 [zh] Sync changes from English (auth references) 2020-12-03 15:47:59 +08:00
Kubernetes Prow Robot bafa12cce2 Merge pull request #25363 from standup-jb/master
Update horizontal-pod-autoscale.md,resolve 404 page
2020-12-02 23:34:59 -08:00
RA489 2e470d20e8 Update install minikube page 2020-12-03 11:49:23 +05:30
Jiang Biao 5f1a44e25e Update content/zh/docs/tasks/run-application/horizontal-pod-autoscale.md
Co-authored-by: Qiming Teng <tengqim@cn.ibm.com>
2020-12-03 12:52:49 +08:00
Kubernetes Prow Robot e9c31dca9d Merge pull request #25304 from guzj11/patch-3
Sync concepts/cluster-administration/networking.md
2020-12-02 20:10:59 -08:00
Kubernetes Prow Robot 95bd09deae Merge pull request #24968 from tengqm/zh-resync-volume
[zh] Resync docs/concepts/storage/volumes.md
2020-12-02 19:59:00 -08:00
Jiang Biao b88779c598 Update horizontal-pod-autoscale.md
这个地方,中文的文档还未翻译,打开是404,建议先跳转到英文的文档。https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#horizontalpodautoscaler-v1-autoscaling
2020-12-03 11:49:14 +08:00
Kubernetes Prow Robot ce02564a37 Merge pull request #25356 from Arhell/sync
update md format (zh)
2020-12-02 19:30:59 -08:00
guzj11 aca0a3bcf4 Sync concepts/cluster-administration/networking.md
Apply suggestions from code review

Co-authored-by: Qiming Teng <tengqim@cn.ibm.com>
2020-12-03 11:30:35 +08:00
Kubernetes Prow Robot dde96d7573 Merge pull request #25329 from howieyuen/command-line-tools
[zh] sync command-line-tools reference of kube-apiserver
2020-12-02 19:26:59 -08:00
Kubernetes Prow Robot e7ef8fd8c9 Merge pull request #25346 from howieyuen/command-line-tools-2
[zh] sync kube-controller-manager, kube-proxy and kubelet-authentication-authorization
2020-12-02 19:25:00 -08:00
Kubernetes Prow Robot 810ff1d80f Merge pull request #25361 from coderanger/patch-4
Add cross-link to FAQ to the first dockershim post.
2020-12-02 19:23:00 -08:00
Kubernetes Prow Robot 9674dbe9c4 Merge pull request #25338 from yuandongx/issues-25247-3
[zh]sync changes from english.
2020-12-02 19:21:00 -08:00
Noah Kantrowitz 9ef54282cb Add cross-link to FAQ to the first dockershim post. 2020-12-02 19:16:05 -08:00
Kubernetes Prow Robot a6e48cb0f9 Merge pull request #25360 from mrbobbytables/faq
Add dockershim faq
2020-12-02 18:50:59 -08:00
Hao Yuan 05381f6078 sync kube-controller-manager, kube-proxy and kubelet-authentication-authorization 2020-12-03 10:47:29 +08:00
yuandongx 93e96c005c sync changes.
update

20201203 update
2020-12-03 02:45:13 +00:00
Hao Yuan 9bf6009431 sync command-line-tools reference of kube-apiserver 2020-12-03 10:37:15 +08:00
Bob Killen cf92dc8f07 Add dockershim faq blog post 2020-12-02 21:31:29 -05:00
Kubernetes Prow Robot 6e369f6ec0 Merge pull request #25330 from tengqm/zh-resync-glossary
[zh] Sync glossary reference
2020-12-02 17:43:01 -08:00
Jorge O. Castro 9e71e76034 Initial commit to explain the dockershim deprecation (#25359)
* Initial commit to explain the dockershim deprecation

Signed-off-by: Jorge O. Castro <jorgec@vmware.com>

* Fix overly long links so they render correctly

Signed-off-by: Jorge O. Castro <jorgec@vmware.com>

* Add author byline

Signed-off-by: Jorge O. Castro <jorgec@vmware.com>
2020-12-02 16:48:59 -08:00
Emily Moss ee5a0df6ad remove text fragment 2020-12-02 15:30:05 -08:00
Kubernetes Prow Robot 29801cc8e4 Merge pull request #25340 from gavinfish/zone-revise
Revise running in multiple zones
2020-12-02 15:15:00 -08:00
Arhell 968374759f update md format (zh) 2020-12-03 00:46:46 +02:00
Kubernetes Prow Robot 1081c4d411 Merge pull request #25352 from cdlliuy/patch-1
Update md format to make it more easier to read
2020-12-02 10:06:51 -08:00
ying 8e0973b22b Update md format to make it more easier to read
Before the changes,  the statement of the set-values messed up together, so it is hard to read it out clearly.
2020-12-02 23:59:14 +08:00
Kubernetes Prow Robot 6f0128c21f Merge pull request #24897 from tengqm/zh-resync-secret
[zh] Resync docs/concepts/configuration/secret.md
2020-12-02 05:40:50 -08:00
Kubernetes Prow Robot 92f5f9e108 Merge pull request #25349 from soulseen/patch-1
[zh] update external service note
2020-12-02 05:24:52 -08:00
Kubernetes Prow Robot d68ae0bc7a Merge pull request #25350 from yuandongx/patch-1
[zh]Update cronjob.yaml
2020-12-02 05:22:50 -08:00
Xu Yuandong 8c7f47a253 Update cronjob.yaml 2020-12-02 18:05:49 +08:00
Xiaoyang Zhu 03e669b626 [zh] update external service note 2020-12-02 17:40:35 +08:00
Kubernetes Prow Robot f2a78fa5d5 Merge pull request #23119 from devries/statefulset-mysql-language
Replace master/slave with primary/replica in MySQL StatefulSet example
2020-12-02 01:04:50 -08:00
Hrishikesh Barua 43d071e8eb Corrected the field names in the secret 2020-12-02 14:25:30 +05:30
Jie Shen a6e8f8bca1 Revise multiple zones 2020-12-02 12:52:30 +08:00
Kubernetes Prow Robot c7545c18be Merge pull request #25277 from natrem/patch-1
Update configure-liveness-readiness-startup-probes.md
2020-12-01 11:46:51 -08:00
Qiming Teng b9d2bbdb00 [zh] Sync glossary reference 2020-12-01 20:28:11 +08:00
Kubernetes Prow Robot dba6763d09 Merge pull request #25244 from jialaijun/update_glossary
update the markdown file in the glossary directory for Chinese version.
2020-12-01 01:12:50 -08:00
Xu Yuandong ec4d60aa80 [zh] Sync change from English (Issues 25247) (#25322)
* sync kubectl/jsonpath.md for [kubernetes/website#25247]

* sync kubectl/jsonpath.md for [kubernetes/website#25247]

* sync kubectl/cheatsheet.md

* update

* update

* update ...

* update ...

* update ...
2020-12-01 01:10:50 -08:00
Xu Yuandong 4f9b919a88 [zh]Sync changes under content/zh/docs/reference folder for Issues kubernetes/website#25247. (#25308)
* sync

sys labels-annotations-taints.md

* sync 'scheduling/config.md'

* sync issues-security/security.md

* sync _index.md

* sync reference/tools.md

* update

* update

* misssing words

* update

* update to fix some lines

* update to fix some lines

* update to delete wihtpsace

* line is  too long
2020-12-01 01:02:50 -08:00
Kubernetes Prow Robot 123744b1bd Merge pull request #25314 from zhaojizhuang/using-api
[zh] Sync using-api
2020-11-30 21:08:47 -08:00
zhaojizhuang 9af43634cc [zh] Sync using-api 2020-12-01 11:03:14 +08:00
jialaijun fdc3b6ce29 update markdown files in glossary dirctory. 2020-12-01 10:25:54 +08:00
Tim Bannister 84fbb5db42 Use appropriate name for control plane in kubeadm reference (#24990)
* Replace several references to “master”

* Revise parameter for kubeadm join
2020-11-30 09:54:52 -08:00
Kubernetes Prow Robot 64ebeb3645 Merge pull request #25313 from ausias-armesto/ausias-armesto-wrong-spelling
Wrong Spelling
2020-11-30 08:30:50 -08:00
Kubernetes Prow Robot 7d45131fec Merge pull request #25309 from pjhwa/readmeko-24620
Update README-ko.md file
2020-11-30 08:28:50 -08:00
Kubernetes Prow Robot 7dc04b488c Merge pull request #25198 from bl-ue/bl-ue/fix-broken-link
Fix broken link
2020-11-30 08:26:50 -08:00
ausias-armesto 0c858f8813 Wrong participate 2020-11-30 13:38:40 +01:00
Ray Wang 20fdd094e6 Change URL which suggests where to get the latest code of conduct 2020-11-30 19:24:12 +08:00
Kubernetes Prow Robot 3e9ae6102a Merge pull request #25294 from zamataku/patch-1
[ja] Update Chained selectors shell command to follow the English version
2020-11-30 03:22:49 -08:00
Ray Wang 36b010c1dc Replace English CNCF code of conduct into Chinese one 2020-11-30 19:12:07 +08:00
Kubernetes Prow Robot f9f8eb13bf Merge pull request #25310 from guzj11/patch-4
[zh] Sync feature-gates.md
2020-11-30 01:58:50 -08:00
guzj11 6935846fce [zh] Sync feature-gates.md
#25165
2020-11-30 16:36:33 +08:00
Jerry Park 533d9006e1 Update README-ko.md file 2020-11-30 17:19:42 +09:00
keshy f3107d250b Update content/en/docs/reference/kubectl/cheatsheet.md
Ack on recommended change.

Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-11-29 23:37:13 -08:00
Qiming Teng b8c9b2fa30 [zh] Sync English site changes for authentication ref
Some changes are large because ... the original translator failed to
include the English source. I don't know why those PRs got merged in the
first place.
2020-11-30 15:04:26 +08:00
Kubernetes Prow Robot 86901e7d7a Merge pull request #25305 from epiclen/patch-1
Update assign-pod-node.md
2020-11-29 23:02:49 -08:00
Kubernetes Prow Robot ce6c1de907 Merge pull request #25307 from epiclen/patch-2
Update taint-and-toleration.md
2020-11-29 22:58:48 -08:00
zamataku 4bd1802005 Update Chained selectors shell command
Let me propose change to follow the English version.
https://github.com/kubernetes/website/blame/79c1ab1fd2836726379c3debef18e955faeedbb2/content/en/docs/concepts/overview/working-with-objects/field-selectors.md#L46
2020-11-30 15:56:30 +09:00
epiclen 007d7e210c Update taint-and-toleration.md 2020-11-30 14:27:23 +08:00
epiclen 7b63fc0645 Update assign-pod-node.md
fix 分表 to 分别
2020-11-30 14:05:12 +08:00
Kubernetes Prow Robot 0b69ba78f0 Merge pull request #25302 from npu21/cronjob_en
CronJob example should include imagePullPolicy: IfNotPresent
2020-11-29 18:32:48 -08:00
Zhang Yong 58c3db1ab8 CronJob example should include imagePullPolicy: IfNotPresent 2020-11-30 10:31:00 +08:00
Zhang Yong f979037143 CronJob example should include imagePullPolicy: IfNotPresent 2020-11-30 10:19:00 +08:00
Kubernetes Prow Robot 6dbefab4c7 Merge pull request #25275 from howieyuen/kubeadm
[zh] sync changes in docs/reference/setup-tools/kubeadm/ directory
2020-11-29 18:16:48 -08:00
Kubernetes Prow Robot c9390e25f8 Merge pull request #25267 from howieyuen/kubeadm-generated
[zh] sync changes in docs/reference/setup-tools/kubeadm/generated/ directory
2020-11-29 18:14:48 -08:00
Hao Yuan 679b45e2c2 sync changes in docs/reference/setup-tools/kubeadm/ directory 2020-11-30 09:58:37 +08:00
Yong Zhang c5181466f1 Merge pull request #8 from kubernetes/master
merge
2020-11-30 09:57:05 +08:00
Hao Yuan ecaa42b7b9 sync changes in docs/reference/setup-tools/kubeadm/generated/ directory 2020-11-30 09:55:25 +08:00
Kubernetes Prow Robot d3c68aa923 Merge pull request #25301 from Arhell/upd-link
sync link to CSI ephemeral volumes (zh)
2020-11-29 16:42:48 -08:00
Arhell c4edcaabaa sync link to CSI ephemeral volumes (zh) 2020-11-30 01:53:06 +02:00
Kubernetes Prow Robot ec9bfbd16e Merge pull request #25292 from michielvangendt/patch-1
Fix link to CSI ephemeral volumes
2020-11-29 13:36:48 -08:00
Kubernetes Prow Robot 79c1ab1fd2 Merge pull request #25272 from Xaseron/patch-1
Remove minion from germen nodes.md
2020-11-28 09:08:48 -08:00
Kubernetes Prow Robot 53f03cf563 Merge pull request #25026 from sftim/20201113_revise_ingress_controller_list
Revise ingress controller list
2020-11-28 07:48:47 -08:00
Michiel Van Gendt 01d4a0a4dd Fix link to CSI ephemeral volumes 2020-11-28 12:43:49 +01:00
Kubernetes Prow Robot 60bf9a9636 Merge pull request #25271 from guzj11/patch-2
Sync tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md
2020-11-28 02:22:47 -08:00
jialaijun 04df324331 update markdown file in glossary directory 2020-11-28 09:42:08 +08:00
Kubernetes Prow Robot 9e010e5e19 Merge pull request #24651 from markruler/update-ko-i18n-strings
Update Korean i18n strings and ordering the entries
2020-11-27 12:32:48 -08:00
keshy b752ca0690 Update cheatsheet.md
Added another useful command for obtaining shell access to a running k8s pod.
2020-11-27 11:40:28 -08:00
Tim Bannister 53739e7997 Revise ingress controller list
- note that AWS load balancer integration is now in-project
- sort alphabetically
- link to documentation for the product
- revise wording to always describe the ingress controller rather than
  the service / product that the ingress controller integrates with
2020-11-27 19:19:46 +00:00
Kubernetes Prow Robot c26fe7e49f Merge pull request #25255 from shuuji3/patch-4
Fix the text in the Mermaid diagram on the reference/access-authn-authz/authentication/ page
2020-11-27 09:46:47 -08:00
Kubernetes Prow Robot 4c5cb52237 Merge pull request #25263 from saintmalik/fix-url-bug
Fix broken url in docs
2020-11-27 09:36:47 -08:00
Kubernetes Prow Robot c4c17a9b8a Merge pull request #25282 from kubernetes/dev-1.19-ko.5
Fifth Korean l10n work for release-1.19
2020-11-27 09:06:47 -08:00
kosehy@gmail.com 64f9f3ebd4 Fifth Korean l10n work for release-1.19
- Update outdated in concept secret.md (#25254)
- Update outdated resource quotas for ko5 (#25261)
- Mistranslation on kubelet-authentication authorization.md in korean (#25223)
- Update outdated files in dev-1.19-ko.5 part-03 (#25159)
- Update outdated files in the upstream/dev-1.19-ko.5 branch (#25103)
- Update outdated files in dev-1.19-ko.5 part-02 (#25152)
- Translate reference/glossary/container-lifecycle-hooks.md in Korean (#25071)
- Translate reference/command-line-tools-reference/kube-proxy into korean (#24817)
- Translate reference/scheduling/config.md into Korean (#24489)
- Translate reference/kubectl/jsonpath into Korean (#24868)

Co-authored-by: seokho-son <shsongist@gmail.com>
Co-authored-by: Jerry Park <jaehwa@gmail.com>
Co-authored-by: kosehy@gmail.com <kosehy@gmail.com>
Co-authored-by: santachopa <santachopa@naver.com>
2020-11-28 01:45:42 +09:00
Pascal Verdage 7aa6abab25 Update configure-liveness-readiness-startup-probes.md 2020-11-27 10:44:49 +01:00
Michael Werner 04c6868a1a Remove minion from germen nodes.md 2020-11-27 09:40:00 +01:00
guzj11 a121748b84 Sync tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md 2020-11-27 16:37:08 +08:00
Kubernetes Prow Robot 32cf18ecd2 Merge pull request #25017 from tengqm/zh-sync-5
[zh] Sync changes from English site (5)
2020-11-26 20:58:19 -08:00
Saintmalik cbffc023e9 Fix broken url in docs 2020-11-27 04:27:04 +00:00
jialaijun 72fb7e4d30 update referenced file in directory of glossary 2020-11-27 11:33:02 +08:00
Kubernetes Prow Robot de92c57d1a Merge pull request #25257 from zhaojizhuang/refrence-remove
[zh]sync removed file for content/en/docs/reference
2020-11-26 19:10:19 -08:00
Kubernetes Prow Robot c589c391eb Merge pull request #25258 from Arhell/upd-taint
improve Taints and Tolerations example (zh)
2020-11-26 17:00:19 -08:00
jialaijun ad8b32ffce update glossary 2020-11-27 08:57:08 +08:00
Arhell 8388ca4593 improve Taints and Tolerations example (zh) 2020-11-27 01:03:28 +02:00
zhaojizhuang e41eb58bc2 [zh]sync remoed file for content/en/docs/reference 2020-11-27 01:01:56 +08:00
Kubernetes Prow Robot a0560f3c62 Merge pull request #25202 from mfilocha/synchronize-pl-localization-20201124
Synchronize Polish localization 2020-11-24 - part 1
2020-11-26 03:58:20 -08:00
TAKAHASHI Shuuji 2bc7fbad27 Fix the text in the authorization diagram 2020-11-26 19:09:42 +09:00
Maciej Filocha 5cf5bf210c Synchronize Polish localization 2020-11-24 part 1.
Update Polish localization up to 99bfbd5ffe.
Part 1.

Co-authored-by: Karol Pucyński <9209870+kpucynski@users.noreply.github.com>
2020-11-26 10:35:16 +01:00
Kubernetes Prow Robot 770c0362dd Merge pull request #25243 from Arhell/upd-video
video block sync
2020-11-26 00:26:19 -08:00
Kubernetes Prow Robot a8efcda498 Merge pull request #25125 from L3o-pold/patch-1
Improve Taints and Tolerations example
2020-11-25 21:50:19 -08:00
Kubernetes Prow Robot cb802d23b1 Merge pull request #25147 from timhughes/patch-1
Updates links to Dex
2020-11-25 21:46:19 -08:00
Kubernetes Prow Robot 27ca111c09 Merge pull request #25194 from ymmt2005/patch-2
Add Coil CNI to networking.md
2020-11-25 21:42:19 -08:00
Qiming Teng 72a2bafb47 [zh] Resync docs/concepts/configuration/secret.md 2020-11-26 13:36:27 +08:00
Kubernetes Prow Robot c013ba439e Merge pull request #25234 from zhaojizhuang/3rd
[zh] sync reference/using-api/client-libraries.md
2020-11-25 19:14:19 -08:00
zhaojizhuang 7afd1bd292 [zh]sync Add 3rd party content warning to sync Add 3rd party content warning to Ingress Controllers concept and client-libraries 2020-11-26 10:58:56 +08:00
jialaijun 10c09ed849 update glossary 2020-11-26 10:34:37 +08:00
Kubernetes Prow Robot 861a8fa676 Merge pull request #25246 from nate-double-u/24049-add-success-threshold-default-value
Updating docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes
2020-11-25 18:20:19 -08:00
Nate W f205837b9a Updating docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes
Adding the successThreshold default value of startupProbe in the Configure Probes section.

fixes: https://github.com/kubernetes/website/issues/24049
Signed-off-by: Nate W <4453979+nate-double-u@users.noreply.github.com>
2020-11-25 17:29:21 -08:00
Kubernetes Prow Robot a10fb8d3ef Merge pull request #25181 from shuuji3/en/replace-openid-diagram-with-mermaid
Replace the sequence diagram on authentication page using Mermaid
2020-11-25 16:54:20 -08:00
Kubernetes Prow Robot 5ddf805d3b Merge pull request #24794 from lovebaby979/README-pl
update broken link
2020-11-25 16:16:19 -08:00
Kubernetes Prow Robot a27c157ef7 Merge pull request #24701 from ramnar/patch-1
commands to create job and cronjob
2020-11-25 16:14:19 -08:00
Arhell e1bc6ac555 video block sync 2020-11-26 00:40:16 +02:00
Kubernetes Prow Robot cdd6e9a059 Merge pull request #24525 from sftim/20201012_explain_pod_template_updates
Improve explanation about pod template updates
2020-11-25 07:20:39 -08:00
Kubernetes Prow Robot 43071259c2 Merge pull request #24777 from chlunde/patch-1
AWS ALB Ingress Controller renamed to AWS Load Balancer Controller
2020-11-25 07:18:40 -08:00
Kubernetes Prow Robot a712d2b0de Merge pull request #25138 from habibrosyad/gh-25124
Switch New York Times case study to use youtube shortcode
2020-11-25 07:10:39 -08:00
Tim Hughes f5132af21e Updates links to Dex 2020-11-25 13:48:56 +00:00
Kubernetes Prow Robot b4df624a5e Merge pull request #25231 from ThePrincelle/patch-1
Fix the raw HTML code being displayed on the website
2020-11-25 04:18:38 -08:00
Maxime Princelle 0c1f88009b Update the table in parse the HTML code
The HTML code was not processed and therefore was [displayed on the website in raw HTML](https://kubernetes.io/fr/docs/reference/kubectl/kubectl/).
2020-11-25 12:37:23 +01:00
jialaijun 7260dbf1c6 update the markdown file in the glossary directory. 2020-11-25 18:29:43 +08:00
Qiming Teng e97677e6de [zh] Sync changes from English site (5) 2020-11-25 18:09:42 +08:00
Kubernetes Prow Robot 0d9baecb5e Merge pull request #25154 from tengqm/zh-sync-10
[zh] Sync changes from English site (10)
2020-11-24 19:56:39 -08:00
Kubernetes Prow Robot 0468384247 Merge pull request #25057 from tengqm/zh-sync-6
[zh] Sync changes from English site (6)
2020-11-24 19:48:38 -08:00
Kubernetes Prow Robot cea3965290 Merge pull request #25225 from mfilocha/synchronize-pl-localization-20201124b
Synchronize Polish localization 2020-11-24 - part 2
2020-11-24 13:40:39 -08:00
Carl Henrik Lunde 30bf45ee5e Update with correct AWS product name
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-11-24 22:00:16 +01:00
Maciej Filocha 871fa8f2b9 Synchronize Polish localization 2020-11-24 part 2.
Update Polish localization up to 99bfbd5ffe.
Part 2.
2020-11-24 20:27:38 +01:00
Kubernetes Prow Robot b267e6d1d0 Merge pull request #25165 from m-yosefpor/master
CustomResourceDefaulting promoted to GA
2020-11-24 01:09:01 -08:00
Qiming Teng 86ca2a9c12 [zh] Sync changes from English site (6) 2020-11-24 14:03:06 +08:00
Kubernetes Prow Robot 99bfbd5ffe Merge pull request #24861 from tengqm/zh-guide-new
Update requirements for ZH localization
2020-11-23 21:57:00 -08:00
Kubernetes Prow Robot 5fabc13896 Merge pull request #25130 from tengqm/zh-sync-crd
[zh] sync tasks/extend-kubernetes/custom-resources/custom-resource-de…
2020-11-23 20:49:00 -08:00
Kubernetes Prow Robot c37cac5afd Merge pull request #25188 from tengqm/zh-sync-12
[zh] Sync changes from English site (12)
2020-11-23 20:42:59 -08:00
Kubernetes Prow Robot a7a9a04fac Merge pull request #25187 from tengqm/zh-sync-11
[zh] Sync changes from English site (11)
2020-11-23 20:39:00 -08:00
Qiming Teng f42b28f864 [zh] Sync changes from English site (10) 2020-11-24 09:48:52 +08:00
Kubernetes Prow Robot bd59f5578a Merge pull request #25186 from tengqm/zh-sync-managing-tls
[zh] Sync tasks/tls/managing-tls-in-a-cluster.md
2020-11-23 17:37:01 -08:00
Qiming Teng 81bc52053d [zh] Sync changes from English site (12) 2020-11-24 09:35:56 +08:00
Qiming Teng 50178b017d [zh] Sync tasks/tls/managing-tls-in-a-cluster.md 2020-11-24 09:30:12 +08:00
Qiming Teng dafaec2d7e [zh] sync tasks/extend-kubernetes/custom-resources/custom-resource-definitions.md 2020-11-24 09:23:51 +08:00
Kubernetes Prow Robot da0f304a12 Merge pull request #25108 from RA489/zh_minikube
使用 Minikube 安装 Kubernetes
2020-11-23 17:19:00 -08:00
bl-ue d38bbe24ee Fix broken link
In content/{en, ja, ko, zh}/docs/setup/production-environment/windows/user-guide-windows-containers.md:

    https://gist.github.com/{wagnerandrade => 19WAS85}/5424431
2020-11-23 16:02:21 -05:00
Kubernetes Prow Robot 2c1667062b Merge pull request #25155 from apelisse/patch-2
Replace incorrect `granular` by `set/map`
2020-11-23 11:31:01 -08:00
Kubernetes Prow Robot 8c61a3f2b0 Merge pull request #24423 from neolit123/1.20-amend-ca-rotation-page
manual-ca-rotation: adjust note for "--client-ca-file"
2020-11-23 10:45:02 -08:00
Yamamoto, Hirotaka 499435dc14 Add Coil CNI to networking.md
Coil is a new open-source CNI plugin for Kubernetes.

Resources:
- https://github.com/cybozu-go/coil
- https://blog.kintone.io/entry/coilv2
2020-11-23 16:31:43 +00:00
Kubernetes Prow Robot 793960018d Merge pull request #25128 from tengqm/zh-sync-install-kubectl
[zh] Sync tasks/tools/install-kubectl.md
2020-11-23 07:53:35 -08:00
Kubernetes Prow Robot cf5df68247 Merge pull request #25129 from tengqm/zh-sync-tools-idx
[zh] sync tasks/tools/_index.md
2020-11-23 07:51:33 -08:00
Kubernetes Prow Robot 372cd5e443 Merge pull request #25137 from tengqm/zh-sync-hpa-walkthrough
[zh] sync tasks/run-application/horizontal-pod-autoscale-walkthrough.md
2020-11-23 07:41:35 -08:00
Kubernetes Prow Robot 0d5954de5c Merge pull request #25167 from zhaojizhuang/podtopo
[zh] sync pod-topylogy-spread-contraints for chinese
2020-11-23 07:35:36 -08:00
Kubernetes Prow Robot f2233db65f Merge pull request #25173 from sftim/20201122_revert_banner
Revert banner after KubeCon
2020-11-23 07:15:34 -08:00
Kubernetes Prow Robot 154b7dd99b Merge pull request #25184 from tengqm/zh-resync-kubeadm-upgrade
[zh] Resync kubeadm-upgrade
2020-11-23 06:47:34 -08:00
Kubernetes Prow Robot bb5b270f1d Merge pull request #25139 from tengqm/zh-sync-9
[zh] Sync English site changes (9)
2020-11-23 06:33:34 -08:00
Kubernetes Prow Robot c7ee26a474 Merge pull request #25180 from RA489/kindupdate
Update kind doc
2020-11-23 00:55:36 -08:00
Qiming Teng d3ca62e17c [zh] sync tasks/run-application/horizontal-pod-autoscale-walkthrough.md 2020-11-23 16:51:47 +08:00
Qiming Teng 754f3da47e [zh] Sync tasks/tools/install-kubectl.md 2020-11-23 16:49:35 +08:00
Qiming Teng 6c447c9282 [zh] Resync kubeadm-upgrade 2020-11-23 16:41:45 +08:00
TAKAHASHI Shuuji b5c0e5ea14 Replace the diagram on authentication page with the one by mermaid. 2020-11-23 14:12:21 +09:00
RA489 ec0612b4b2 使用 Minikube 安装 Kubernetes 2020-11-23 09:57:38 +05:30
RA489 815832f03a Update kind doc 2020-11-23 09:50:45 +05:30
zhaojizhuang 9d8718e0c2 [zh] sync pod-topylogy-spread-contraints for chinese 2020-11-23 10:49:50 +08:00
Qiming Teng aca3e081fe [zh] Sync changes from English site (11) 2020-11-23 10:37:57 +08:00
Kubernetes Prow Robot fd65678baa Merge pull request #25166 from zhiguo-lu/zh-trans-task-cluster-upgrade
[zh] Translate task cluster-upgrade into Chinese
2020-11-22 18:09:34 -08:00
Kubernetes Prow Robot 5d0765d34c Merge pull request #25162 from zhiguo-lu/zh-trans-task-enable-disable-api
[zh] Translate task enable-disable-api into Chinese
2020-11-22 18:01:34 -08:00
luzg 0720b1d6dc [zh] Translate task enable-disable-api
make change according to tengqm's comment
2020-11-23 09:54:37 +08:00
Qiming Teng 51949a9403 [zh] Sync English site changes (9) 2020-11-23 09:34:47 +08:00
Kubernetes Prow Robot 97a882c38d Merge pull request #25135 from tengqm/zh-sync-resource-metrics-pipeline
[zh] Sync tasks/debug-application-cluster/resource-metrics-pipeline.md
2020-11-22 17:25:33 -08:00
Qiming Teng 5abd960d9c [zh] Sync tasks/debug-application-cluster/resource-metrics-pipeline.md 2020-11-23 09:21:04 +08:00
Kubernetes Prow Robot 53a7fb6fa7 Merge pull request #25141 from zhaojizhuang/feature-gate
[zh]sync chinese trans for feature-gate
2020-11-22 17:13:34 -08:00
Kubernetes Prow Robot 6df521179f Merge pull request #25168 from shuuji3/en/fix-typo-of-openid-dialog
Fix a typo in the k8s_oidc_login.svg diagram.
2020-11-22 12:19:34 -08:00
Tim Bannister 0dc8c50074 Revert banner after KubeCon
This reverts commit 59510913ab
2020-11-22 20:12:41 +00:00
Kubernetes Prow Robot 455de2e516 Merge pull request #25116 from zhaojizhuang/updatedocsy
[zh] fix The problem of missing translation
2020-11-22 12:05:34 -08:00
Kubernetes Prow Robot e415c960a9 Merge pull request #25158 from HollowMan6/patch-1
Fix typo
2020-11-22 11:57:33 -08:00
TAKAHASHI Shuuji 9334de1569 Fix a typo in the k8s_oidc_login.svg diagram. 2020-11-23 01:58:33 +09:00
luzg edff1c8535 [zh] Translate task cluster-upgrade 2020-11-22 22:55:08 +08:00
Mohammad Yosefpor 5f5128fe5e CustomResourceDefaulting promoted to GA 2020-11-22 18:16:30 +03:30
Kubernetes Prow Robot 80efb1e56a Merge pull request #25120 from mkontani/mkontani/patch-1
Update authentication.md
2020-11-22 02:51:33 -08:00
Kubernetes Prow Robot 3d6b8110ab Merge pull request #25127 from tengqm/zh-sync-audit
[zh] sync tasks/debug-application-cluster/audit.md
2020-11-21 21:51:34 -08:00
Kubernetes Prow Robot 412a30196b Merge pull request #25063 from tengqm/zh-sync-8
[zh] Sync changes from English site (8)
2020-11-21 21:23:33 -08:00
Kubernetes Prow Robot 02db4737fa Merge pull request #25058 from tengqm/zh-sync-7
[zh] Sync changes from English site (7)
2020-11-21 21:21:33 -08:00
Kubernetes Prow Robot e676d9a090 Merge pull request #25016 from tengqm/zh-sync-endpointslice
[zh] Resync endpoint-slice page
2020-11-21 20:45:33 -08:00
Kubernetes Prow Robot 184777ef33 Merge pull request #25015 from zhiguo-lu/zh-translate-reference-server-side-apply
[zh] translate reference server-side-apply
2020-11-21 20:41:33 -08:00
Kubernetes Prow Robot d4b8de6964 Merge pull request #25008 from tengqm/zh-sync-4
[zh] Sync changes from English site (4)
2020-11-21 20:39:33 -08:00
Kubernetes Prow Robot 2978aea5c2 Merge pull request #25001 from tengqm/zh-sync-3
[zh] Sync changes from English site (3)
2020-11-21 20:35:33 -08:00
Kubernetes Prow Robot 78f1dfdfa1 Merge pull request #25131 from tengqm/zh-sync-konnectivity
[zh] sync tasks/extend-kubernetes/setup-konnectivity.md
2020-11-21 20:25:33 -08:00
Kubernetes Prow Robot 49092f32d2 Merge pull request #25136 from tengqm/zh-sync-troubleshooting
[zh] resync troubleshooting
2020-11-21 20:21:33 -08:00
Kubernetes Prow Robot 8cffdd9d12 Merge pull request #25132 from tengqm/zh-sync-enabling-endpointslice
[zh] Sync tasks/administer-cluster/enabling-endpointslices.md
2020-11-21 19:35:33 -08:00
Kubernetes Prow Robot cbe169e876 Merge pull request #25134 from tengqm/zh-sync-security-context
[zh] sync tasks/configure-pod-container/security-context.md
2020-11-21 19:31:33 -08:00
Kubernetes Prow Robot 9220cd5081 Merge pull request #25133 from tengqm/zh-sync-downwardapi
[zh] sync downward-api-volume-expose-pod-information.md
2020-11-21 19:29:33 -08:00
Hollow Man c0eafeb534 Fix typo
hoding -> holding
2020-11-21 22:53:22 +08:00
Kubernetes Prow Robot 14e2775c56 Merge pull request #25156 from zhaojizhuang/kubectl
[zh] sync #25113 for zh,fix kubectl get -f
2020-11-21 05:03:33 -08:00
zhaojizhuang 49662c8ffd [zh] sync #25113 for zh,fix kubectl get -f
fix example error when use kubectl get -f
2020-11-21 20:52:15 +08:00
zhaojizhuang 9c369c15ec [zh]sync chinese trans for feature-gate 2020-11-21 20:42:57 +08:00
luzg 92b10eb1fc [zh] translate reference server-side-apply
make change according to tengqm's comment
2020-11-21 16:06:00 +08:00
Antoine Pelisse 7b0d453e47 Replace incorrect granular by set/map. 2020-11-20 20:46:47 -08:00
Kubernetes Prow Robot b3ab0710da Merge pull request #25011 from tengqm/zh-sync-pod-topology
[zh] Resync pod-topology-spread-constraints page
2020-11-20 18:33:33 -08:00
Shihang Zhang ade35778db add metric and flag information for BoundServiceAccountTokenVolume 2020-11-20 15:04:39 -08:00
Kubernetes Prow Robot 8b174740e5 Merge pull request #25113 from zhaojizhuang/fixexample
fix example error when use kubectl get -f
2020-11-20 09:28:52 -08:00
Kubernetes Prow Robot cb7c4b6431 Merge pull request #23042 from sftim/20200809_update_audit_task
Update cluster auditing task page
2020-11-20 08:18:50 -08:00
zhaojizhuang 7beee58927 fix example error when use kubectl get -f 2020-11-20 23:59:51 +08:00
zhaojizhuang 7be20fa41e [zh]overwrite i18n for docsy 2020-11-20 23:56:04 +08:00
serewicz 07a8b3315d Update container-runtimes.md
The current command on line 125 throws a permission error. The sudo elevation of rights applies to the containerd command, not the write (>) to a file owned by root.

This is the command as copied from the current page:
student@master:~$ sudo containerd config default > /etc/containerd/config.toml
-bash: /etc/containerd/config.toml: Permission denied

Instead leverage sudo tee. It works and no more error: 
student@master:~$ containerd config default | sudo tee /etc/containerd/config.toml
2020-11-20 09:16:59 -06:00
Kubernetes Prow Robot d63933db6e Merge pull request #24415 from sftim/20201007_remove_cluster_management_task
Remove cluster management task
2020-11-20 06:52:51 -08:00
Tim Bannister 59dcd57cc9 Revise cluster management task
After removing the sections of the page that are not in line with the
content guide, there is little left.

Edit pages that link to removed task to no longer link there.
Redirect using 302 status so that there is a future opportunity to reinstate
the page or something like it.

- Avoid links to removed cluster management task
- Broaden applicability of “Safely Drain A Node”
- Add (stub) cluster upgrade task page
- Add a basic page about upgrading your cluster.
- Add a task page about enabling or disabling HTTP APIs
2020-11-20 10:22:25 +00:00
M. Habib Rosyad 4ba449d527 Switch New York Times case study to use youtube shortcode 2020-11-20 14:32:12 +07:00
Qiming Teng 2dac08f68f [zh] sync tasks/debug-application-cluster/audit.md 2020-11-20 15:18:48 +08:00
Qiming Teng 119fbd49c8 [zh] sync tasks/tools/_index.md 2020-11-20 15:00:08 +08:00
Qiming Teng 7ba7891716 [zh] sync tasks/extend-kubernetes/setup-konnectivity.md 2020-11-20 14:08:08 +08:00
Qiming Teng 0fb07f776b [zh] Sync tasks/administer-cluster/enabling-endpointslices.md 2020-11-20 13:56:36 +08:00
Qiming Teng 8ca50ece47 [zh] sync downward-api-volume-expose-pod-information.md
The English change is only about quote characters used.
2020-11-20 13:37:06 +08:00
Qiming Teng 1352540616 [zh] sync tasks/configure-pod-container/security-context.md 2020-11-20 13:32:31 +08:00
Qiming Teng b554875dea [zh] resync troubleshooting 2020-11-20 10:52:48 +08:00
Kubernetes Prow Robot 1e38b53fc8 Merge pull request #25073 from tengqm/tweak-binpacking
Tweak page style for resource-bin-packing
2020-11-19 18:30:51 -08:00
Kubernetes Prow Robot 6c562c44a8 Merge pull request #25112 from zhaojizhuang/zh-readme
[zh] synchronize zh for readme
2020-11-19 18:06:51 -08:00
Kubernetes Prow Robot 6337b521dc Merge pull request #25047 from Arhell/upd-shortcode
update shortcode branch name
2020-11-19 17:34:51 -08:00
Kubernetes Prow Robot 962ec2ae71 Merge pull request #25126 from Arhell/sync-link
video block sync
2020-11-19 15:34:51 -08:00
Arhell 699676985a video block sync 2020-11-20 00:59:38 +02:00
Léopold Jacquot 937ddcea5a Improve Taints and Tolerations example 2020-11-19 22:17:34 +01:00
Kubernetes Prow Robot 11d11a6adc Merge pull request #25122 from Marusyk/25118
Remove automatic index from tutorials list
2020-11-19 12:52:52 -08:00
Roman Marusyk 7ae8024f03 Remove automatic index from tutorials list 2020-11-19 22:26:59 +02:00
Kubernetes Prow Robot bc687f287c Merge pull request #24899 from shuuji3/en/fix-button-styling-of-tasks
Apply the common blue style to buttons under .main class
2020-11-19 10:48:52 -08:00
Kubernetes Prow Robot 5548e3f7c9 Merge pull request #25090 from nodecaf/patch-1
Update taint-and-toleration.md
2020-11-19 10:40:51 -08:00
mkontani c2a33c3403 fix dex/kubernetes link 2020-11-19 18:09:22 +00:00
Kubernetes Prow Robot 52d7e453fd Merge pull request #25105 from shuuji3/patch-4
Update URL of krew plugin list
2020-11-19 08:54:51 -08:00
zhaojizhuang a3c01c191a [zh] synchronize zh for readme 2020-11-19 22:12:19 +08:00
Kubernetes Prow Robot 3cc410cd01 Merge pull request #25086 from bassaer/fix-jp-cheatsheet
remove a conflict marker from Japanese cheatsheet.md
2020-11-18 22:10:50 -08:00
TAKAHASHI Shuuji 52a54dbf01 Update the URL of krew plugin list 2020-11-18 22:59:14 -05:00
Pushkar Joglekar f732e8ea87 Adding cloud native security whitepaper blog post with image (#25010)
* Adding cloud native security whitepaper blog post with image

* Injecting image in a markdown native way instead of html tags

Co-authored-by: Tim Bannister <tim@scalefactory.com>

* Switch image to SVG

* Update cloud native security whitepaper link

Linked to CNCF blog post

Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-11-18 10:42:04 -08:00
Kubernetes Prow Robot 35b3eba07d Merge pull request #24643 from cognifloyd/patch-1
Fix minor typo in StatefulSets docs
2020-11-18 09:58:05 -08:00
Kubernetes Prow Robot 95217e66b1 Merge pull request #25102 from balanceiskey/patch-1
Update configmap.md
2020-11-18 09:54:05 -08:00
Kubernetes Prow Robot 17f418f6d0 Merge pull request #25087 from sftim/20201117_add_cks_training
Add CKS to training page
2020-11-18 09:50:07 -08:00
Tim Bannister 938d569e8e Add CKS to training page
CKS is a two-hour, performance-based certification exam that provides
assurance that a certificant has the skills, knowledge, and competence on
a broad range of best practices for securing container-based applications
and Kubernetes platforms during build, deployment, and runtime. And now
it's live.
2020-11-18 17:38:31 +00:00
Sundeep Malladi 97629eba26 Update configmap.md 2020-11-18 10:40:55 -06:00
Kubernetes Prow Robot 754db5345e Merge pull request #25089 from scoulomb-dup-fork/cm-cmd-args
Improve configmap usage as pod command and args
2020-11-18 06:54:05 -08:00
Kubernetes Prow Robot 8d225a1c73 Merge pull request #25088 from jjasghar/patch-1
Update health-checks.md
2020-11-18 06:28:06 -08:00
Kubernetes Prow Robot 8a585553e1 Merge pull request #25092 from tengqm/fix-shortcode
Use card mode for cncf-landscape shortcode
2020-11-18 06:26:05 -08:00
Qiming Teng 2c38cb1bdc Tweak page style for resource-bin-packing 2020-11-18 16:34:09 +08:00
Kubernetes Prow Robot cc0d8b78ad Merge pull request #25068 from scoulomb-dup-fork/cm
Use configmap inside a k8s pod command, as entrypoint is docker specific
2020-11-17 22:54:04 -08:00
Qiming Teng ac725258d2 [zh] Resync pod-topology-spread-constraints page 2020-11-18 14:10:32 +08:00
ramnar 4ed2587df3 implemented review comments 2020-11-18 10:03:23 +05:30
Kubernetes Prow Robot 077f3a450e Merge pull request #25093 from DangHT/master
[zh] remove redundant content
2020-11-17 20:00:04 -08:00
DangHT 920e551903 [zh] fix content error 2020-11-18 11:47:04 +08:00
DangHT 9dc3733b56 [zh] fix content error 2020-11-18 11:42:58 +08:00
DangHT ce42422211 [zh] remove redundant content 2020-11-18 10:52:55 +08:00
DangHT 414266968a Merge pull request #1 from kubernetes/master
update from upstream
2020-11-18 10:47:46 +08:00
Kubernetes Prow Robot 606d0da197 Merge pull request #25079 from mysunshine92/update-feature-gates-ServiceAppProtocol
Update feature-gates: delete redundant description for ServiceAppProtocol
2020-11-17 18:34:05 -08:00
wangyamei 9ff6274c68 Update feature-gates: delete redundant description for ServiceAppProtocol 2020-11-18 10:12:32 +08:00
Qiming Teng 51ab191ec0 Use card mode for cncf-landscape shortcode
The repeated icons are causing confusing.
2020-11-18 10:12:01 +08:00
Kubernetes Prow Robot 28b9c608d7 Merge pull request #24826 from Arhell/fix-button
fix "read more" button
2020-11-17 13:58:05 -08:00
Sylvain COULOMBEL 08fbeb5953 Use configmap inside a k8s pod command, as entrypoint is docker specific 2020-11-17 22:34:17 +01:00
nodecaf 24bd49980b Update taint-and-toleration.md
Missing key=value in the key taint removal example
2020-11-18 08:31:36 +11:00
Sylvain COULOMBEL 1ec78b1f28 Improve configmap usage as pod command and args 2020-11-17 21:54:25 +01:00
JJ Asghar 3be56a6099 Update health-checks.md
Looks like the formatting for ```shell isn't outputting correctly on the page.

Signed-off-by: JJ Asghar <jjasghar@gmail.com>
2020-11-17 14:45:19 -06:00
Kubernetes Prow Robot de6d96dc5c Merge pull request #25083 from eyenx/patch-2
Update dead Link to Docker EE Installation
2020-11-17 10:58:05 -08:00
Kubernetes Prow Robot ade0bc97d4 Merge pull request #25084 from sftim/20201117_fix_kubecon_banner
Fix KubeCon banner
2020-11-17 09:14:05 -08:00
bassaer 8ae0b72e59 remove conflict marker 2020-11-18 01:44:42 +09:00
Kubernetes Prow Robot bb270a2b82 Merge pull request #25085 from sharath94z/patch-1
Fix typo in container restart policy doc
2020-11-17 08:16:04 -08:00
SHARATH ARADHYAMATH 983df6134c Fix typo in container restart policy #25041
Issue: https://github.com/kubernetes/website/issues/25041

Description: Missing space in the word "forthat", it should be "for that".

Fix: Fixed the missing space in "forthat" under the topic "Container restart policy".

Doc link: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
2020-11-17 20:11:39 +05:30
Tim Bannister 88d31d27a2 Fix KubeCon banner
- match event theme
  artwork color copied from https://github.com/cncf/artwork/blob/master/examples/other.md
- fix broken logo link
2020-11-17 13:36:50 +00:00
Toni Tauro ccbab9c9d6 Update dead Link to Docker EE Installation
Link to official documentation. Mirantis Link is dead (404)
2020-11-17 14:33:43 +01:00
Kubernetes Prow Robot 497e2ccb10 Merge pull request #25036 from tengqm/zh-sync-network-policy
[zh] Resync concepts/services-networking/network-policies.md
2020-11-17 04:30:07 -08:00
Qiming Teng 84df6d3207 [zh] Resync network-policies 2020-11-17 16:50:29 +08:00
Kubernetes Prow Robot dcd16d57fa Merge pull request #25072 from yuandongx/patch-1
【ZH】typo : 云控制器管理器的基础概念 #25060
2020-11-16 21:20:05 -08:00
Xu Yuandong 9fe5011ec8 【ZH】typo : 云控制器管理器的基础概念 #25060
fix typo kubernetes/website#25060
2020-11-17 12:32:14 +08:00
Kubernetes Prow Robot ce40d8da83 Merge pull request #24538 from Cweiping/feature/fix_node-conformance_apiserver_adress_error
fix node-conformance apiserver adress flag error
2020-11-16 18:46:04 -08:00
Weiping Cai e245787641 fix node-conformance apiserver adress error
Signed-off-by: Weiping Cai <weiping.cai@daocloud.io>
2020-11-17 10:11:45 +08:00
Kubernetes Prow Robot a0803dbc59 Merge pull request #24999 from tengqm/zh-sync-2
[zh] Sync changes from English site (2)
2020-11-16 17:46:04 -08:00
Kubernetes Prow Robot 45da282d76 Merge pull request #24998 from tengqm/zh-sync-1
[zh] Sync changes from English site (1)
2020-11-16 17:44:06 -08:00
Kubernetes Prow Robot 3f689758dc Merge pull request #24719 from tengqm/zh-translate-test
[zh] Translate docs/test.md
2020-11-16 17:42:05 -08:00
Kubernetes Prow Robot e5f81e70fa Merge pull request #25050 from pierrchen/etcdSetup
kubeadm: add instruction to check kubelet status
2020-11-16 16:22:05 -08:00
Tim Bannister 304661b156 Update cluster auditing task page
Tidying; also drop details of third-party audit configuration

- aggregated API servers
- remove examples of log shipping with fluentd and Logstash

These examples would find a better home in a blog article or elsewhere
on the web. For example, a new blog article that provides detailed
advice about how to deploy log aggregation, configure log shipping into
the aggregator, and protect the audit logs from tampering.
2020-11-16 22:34:04 +00:00
Arhell 6953047371 fix "read more" button 2020-11-17 00:24:37 +02:00
Lubomir I. Ivanov c6ac783000 manual-rotation-of-ca-certificates: use kube-controller-manager naming 2020-11-16 23:09:07 +02:00
Lubomir I. Ivanov 61e330d06d manual-ca-rotation: adjust note for "--client-ca-file"
- Instead of telling the users to remove the flag, tell them
that they can point to a copy of the new CA for --client-ca-file
--cluster-signing-cert-file that is not in a bundle with the old CA.
- Don't reference the kubeadm issue. If sig-auth has a tracking
issue for --client-ca-file / --cmanual-ca-rotation: adjust note for "--client-ca-file"

- Instead of telling the users to remove the --client-ca-file flag,
tell them that they can point to a copy of the new CA.
Mention the same for --cluster-signing-cert-file.
- Don't reference the kubeadm issue. If sig-auth has a tracking
issue for --client-ca-file / --cluster-signing-cert-file and bundles
we can add that at some point.
2020-11-16 23:09:07 +02:00
Kubernetes Prow Robot 2c60b53b0c Merge pull request #25049 from tengqm/drop-turnkey
[zh] Drop turnkey cloud solutions
2020-11-16 07:17:05 -08:00
Kubernetes Prow Robot 6a4f5a7f5a Merge pull request #25045 from tengqm/zh-sync-workloads-index
[zh] Resync concepts/workloads/_index.md
2020-11-16 06:51:05 -08:00
Kubernetes Prow Robot 8c7b1c590c Merge pull request #24554 from sftim/20201013_dot_github_code_owners
Set code owners for /.github
2020-11-16 02:57:05 -08:00
Bin Chen 74243e9397 kubeadm: add instruction to check kubelet status
kubelet can fail to start due to various reason, e.g mismatching cgroup
drivers. Add this step to save user from having to go back and check when
found etcd cluster is not running successfully.
2020-11-16 19:50:31 +11:00
Kubernetes Prow Robot adb8342b01 Merge pull request #25059 from tptpp/patch-1
Wrong translation of ServiceTypes:LoadBalancer
2020-11-16 00:21:05 -08:00
Qiming Teng 7ce6ab0a47 [zh] Sync changes from English site (8) 2020-11-16 16:06:42 +08:00
tp 6671db257e Wrong translation of ServiceTypes:LoadBalancer
doc url:
https://kubernetes.io/zh/docs/concepts/services-networking/service/

part:
publishing-services-service-types -- LoadBalancer

maybe trnaslate as "云提供商的负载均衡器" is better.
2020-11-16 15:01:46 +08:00
Kubernetes Prow Robot f33d9c4259 Merge pull request #25051 from DangHT/master
[zh] modify links to en-docs in tutorials to zh-docs
2020-11-15 22:55:04 -08:00
Kubernetes Prow Robot c5c7f9b80a Merge pull request #25048 from zhiguo-lu/zh-translate-tutorials-configure-java-microservice
[zh] translate tutorials configure-java-microservice into Chinese
2020-11-15 22:43:04 -08:00
Kubernetes Prow Robot 03aeb29949 Merge pull request #25038 from zhiguo-lu/zh-translate-glossary-object
[zh] translate glossary object into Chinese
2020-11-15 22:41:04 -08:00
DangHT eba0555d1b [zh] modify links to en-docs in tutorials to zh-docs 2020-11-16 14:37:36 +08:00
Qiming Teng 089040daa7 [zh] Sync changes from English site (7) 2020-11-16 14:16:15 +08:00
DangHT 6a1b29f3d7 [zh] modify links to en-docs in tutorials to zh-docs 2020-11-16 10:25:23 +08:00
luzg ad5ba636e5 [zh] translate glossary object into Chinese
fix according to tengqm's comment
2020-11-16 09:58:32 +08:00
luzg 33a9942381 [zh] translate tutorials configure-java-microservice
fix according to tengqm's comment
2020-11-16 09:37:03 +08:00
Qiming Teng c82d8239d9 [zh] Resync docs/concepts/storage/volumes.md 2020-11-16 09:33:48 +08:00
Qiming Teng 15a8fb69ab [zh] Drop turnkey cloud solutions
This is a sync from English site and a follow up for #25032.
2020-11-16 09:13:22 +08:00
Kubernetes Prow Robot d29b150064 Merge pull request #25032 from zhiguo-lu/zh-translate-setup-turnkey-solutions
[zh] translate setup's Turnkey Cloud Solutions into Chinese
2020-11-15 17:13:05 -08:00
Kubernetes Prow Robot edbab98ce4 Merge pull request #25044 from runzhen/patch-1
remove 3 duplicate words
2020-11-15 17:03:04 -08:00
Kubernetes Prow Robot 9ecc3c1837 Merge pull request #25021 from howieyuen/zh-controlling-access
[zh] translate content/en/docs/concepts/security/controlling-access.md
2020-11-15 17:01:04 -08:00
Kubernetes Prow Robot 8540e67a0b Merge pull request #25004 from celestehorgan/techdocs-7
Use k8s more widely
2020-11-15 13:31:03 -08:00
Kubernetes Prow Robot 5207862bfb Merge pull request #24961 from translucens/add-pod-security-standards-ja
Add ja translation of concepts/security/pod-security-standards.md
2020-11-15 08:11:04 -08:00
Arhell 578c478d08 update shortcode branch name 2020-11-15 15:18:42 +02:00
Qiming Teng d941ca2868 [zh] Resync concepts/workloads/_index.md 2020-11-15 17:43:21 +08:00
translucens d53952b961 Apply suggestions from code review
Co-authored-by: bells17 <bells171@gmail.com>
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-11-15 12:52:43 +09:00
Runzhen 10e21a5513 remove 3 duplicate words
remove one of the two "保存在" words.
2020-11-14 14:40:18 -08:00
Hao Yuan a3eff7dabc translate content/en/docs/concepts/security/controlling-access.md 2020-11-14 21:11:35 +08:00
Kubernetes Prow Robot 4f6022591d Merge pull request #25006 from frbimo/update_zn_docs
[zh] Sync changes on quality-service-pod.md from English doc
2020-11-14 00:01:04 -08:00
Qiming Teng 9dbaf53f80 [zh] Sync changes from English site (1) 2020-11-14 11:06:05 +08:00
luzg 54d5270823 [zh] translate setup's Turnkey Cloud Solutions 2020-11-14 10:39:07 +08:00
Kubernetes Prow Robot 27613f38c6 Merge pull request #25024 from abarbare/patch-1
Fix secret FR translation error
2020-11-13 03:52:24 -08:00
abarbare 5b3036414b fixup! Fix secret FR translation error 2020-11-13 12:27:23 +01:00
Kubernetes Prow Robot f6583424ca Merge pull request #24978 from lanandra/language_id_pod
fix typo file in language id pod
2020-11-13 02:56:34 -08:00
abarbare d67c693d4c Fix secret FR translation error 2020-11-13 11:14:07 +01:00
Qiming Teng 062378dc5a [zh] Resync endpoint-slice page 2020-11-13 16:16:57 +08:00
Andrei Kvapil 798b5c9f2a Add missing steps to configure konnectivity-server (#24141)
* Add missing steps to configure konnectivity-server

* Update content/en/docs/tasks/extend-kubernetes/setup-konnectivity.md

Co-authored-by: Tim Bannister <tim@scalefactory.com>

* Update content/en/docs/tasks/extend-kubernetes/setup-konnectivity.md

Co-authored-by: Tim Bannister <tim@scalefactory.com>

* Update content/en/docs/tasks/extend-kubernetes/setup-konnectivity.md

Co-authored-by: Tim Bannister <tim@scalefactory.com>

* update konnectivity manifests

* remove tcp configuration

Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-11-12 23:52:23 -08:00
Kubernetes Prow Robot 3bfab68f23 Merge pull request #25003 from sftim/20201112_ingress_controllers_add_3rd_party_content_warning
Add 3rd party content warning to Ingress Controllers concept
2020-11-12 22:50:24 -08:00
Kubernetes Prow Robot 72836ea1ad Merge pull request #24965 from howieyuen/zh-pod-overhead
[zh] sync from EN verison, move Pod Overhead concept inside Scheduling & Eviction
2020-11-12 21:46:23 -08:00
Qiming Teng 2d8e136e6a [zh] Sync changes from English site (4) 2020-11-13 11:03:25 +08:00
frbimo b2aa481d3d [zh] Sync changes on quality-service-pod from English site
Signed-off-by: frbimo <fr.bimo@gmail.com>
2020-11-13 10:21:23 +08:00
Kubernetes Prow Robot 5e9f630058 Merge pull request #25005 from Arhell/upd-branch
update branch name
2020-11-12 17:20:25 -08:00
Arhell 98e133fb75 update branch name 2020-11-13 01:09:12 +02:00
Celeste Horgan cf76fafcff Use k8s more widely
Signed-off-by: Celeste Horgan <celeste@cncf.io>
2020-11-12 10:43:46 -08:00
Tim Bannister 0302b2d362 Add 3rd party content warning to Ingress Controllers concept 2020-11-12 17:53:41 +00:00
Kubernetes Prow Robot a0af0316f6 Merge pull request #24997 from sshukun/update-chinese-localization
[zh] Resync docs/tutorials/stateful-application/zookeeper.md
2020-11-12 08:18:51 -08:00
Kubernetes Prow Robot d1aa295e43 Merge pull request #24883 from howieyuen/zh-horizontal-pod-autoscale
[zh] sync docs/tasks/run-application/horizontal-pod-autoscale.md
2020-11-12 06:16:51 -08:00
Kubernetes Prow Robot 7cff81ec28 Merge pull request #25000 from howieyuen/zh-kubeadm
[zh] change en links to zh for kubeadm _index.md
2020-11-12 05:06:50 -08:00
Qiming Teng 95ab5ac197 [zh] Sync changes from English site (3) 2020-11-12 21:03:41 +08:00
Hao Yuan 1bd4a606ac change en links to zh 2020-11-12 20:38:37 +08:00
Qiming Teng 8ae2209de3 [zh] Sync changes from English site (2) 2020-11-12 19:52:04 +08:00
Kubernetes Prow Robot de471ada50 Merge pull request #24996 from sshukun/fix-zookeeper
fix docs/tutorials/stateful-application/zookeeper.md
2020-11-12 03:44:52 -08:00
Kubernetes Prow Robot 0eba42809e Merge pull request #24970 from kubernetes/add-button
Adding button "Learn Kubernetes Basics"
2020-11-12 03:16:51 -08:00
Song Shukun 591e1b94fd fix docs/tutorials/stateful-application/zookeeper.md 2020-11-12 20:06:54 +09:00
Song Shukun 092eee935a [zh] Resync docs/tutorials/stateful-application/zookeeper.md 2020-11-12 20:03:38 +09:00
Kubernetes Prow Robot 3dda55be99 Merge pull request #24977 from gsabatini2016/patch-1
Update replicaset.md
2020-11-12 02:16:50 -08:00
Kubernetes Prow Robot 7a44e1a820 Merge pull request #24201 from CriaHu/hyq-929
translate docs/setup/production-environment/tools/kubespray.md
2020-11-11 19:56:51 -08:00
Cria Hu 1d15f8eefa translate docs/setup/production-environment/tools/kubespray.md 2020-11-12 11:30:19 +08:00
Kubernetes Prow Robot 80ce002b26 Merge pull request #24988 from hellotaotao/patch-1
Update deploy-intro.html
2020-11-11 18:16:50 -08:00
Kubernetes Prow Robot 23e77fd5a6 Merge pull request #24974 from zaheerm/patch-1
Correct link to external-storage
2020-11-11 18:14:50 -08:00
Kubernetes Prow Robot edc4444330 Merge pull request #24994 from sftim/20201111_fix_branch_name_advice
Fix branch name advice
2020-11-11 18:02:50 -08:00
Tim Bannister daa2c4718d Fix branch name advice
Fixup for commit 28c8c2e9b2
2020-11-11 23:35:06 +00:00
Kubernetes Prow Robot 28c8c2e9b2 Merge pull request #24993 from Arhell/fix-branch-name
fix branch name
2020-11-11 15:32:51 -08:00
Arhell f41b214818 fix branch name 2020-11-12 01:24:31 +02:00
Arhell 7c2f959048 fix branch name 2020-11-12 01:09:02 +02:00
Arhell 96a86da7c1 fix branch name 2020-11-12 01:02:31 +02:00
Nguyen Hai Truong 5dc6252a52 Adding button "Learn Kubernetes Basics"
Signed-off-by: Nguyen Hai Truong <nguyenhaitruonghp@gmail.com>
2020-11-11 23:29:12 +07:00
translucens 7bd6c3f53e Update content/ja/docs/concepts/security/pod-security-standards.md
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-11-12 00:16:25 +09:00
Zaheer Merali e3db381880 Move link away from deprecated external-storage repo 2020-11-11 14:54:45 +00:00
Tao Wang f1de329547 Update deploy-intro.html 2020-11-12 00:58:48 +10:30
Kubernetes Prow Robot 96469d515e Merge pull request #24567 from saintmalik/fix-url-bug
Fix broken url in docs
2020-11-10 19:37:48 -08:00
Kubernetes Prow Robot 56cf8f59f0 Merge pull request #24424 from sftim/20201007_large_cluster_guidance
Revise large cluster guidance
2020-11-10 18:37:48 -08:00
Kubernetes Prow Robot 0ea25adf2a Merge pull request #24829 from habibrosyad/gh-23660-pt
Improve maintainability of case studies styling for PT
2020-11-10 18:31:48 -08:00
Kubernetes Prow Robot 6d90079245 Merge pull request #23842 from tengqm/improve-sa-admin
Improve ServiceAccount administration doc
2020-11-10 18:25:48 -08:00
Kubernetes Prow Robot 6133dce173 Merge pull request #24972 from Arhell/fix-blockquote
remove useless sign
2020-11-10 16:40:42 -08:00
Arhell b2f6f137cf remove useless sign 2020-11-11 00:33:19 +02:00
Gabriel Sabbatini 4d2ee3b62e Update replicaset.md
Word Correction
2020-11-10 16:22:49 -03:00
lanandra bbc9872839 fix typo file in language id pod
edit docs/concepts/workloads/pods/pod.md
2020-11-11 02:13:59 +07:00
Zaheer Merali 927a127b48 Correct link to external-storage 2020-11-10 17:07:06 +00:00
Kubernetes Prow Robot 435bd0b63f Merge pull request #24958 from sshukun/fix-url
fix link in /docs/tutorials/stateful-application/zookeeper.md
2020-11-10 07:44:40 -08:00
Kubernetes Prow Robot 4555f35723 Merge pull request #24796 from lovebaby979/README-vi
update broken link
2020-11-10 06:50:40 -08:00
Kubernetes Prow Robot b93e6fb277 Merge pull request #24947 from fadhilyori/fix-typo-configuration-secret
fix typo in configuration secret page
2020-11-10 02:54:39 -08:00
yuanhao 0871ec8196 sync from EN verison, move Pod Overhead concept inside Scheduling & Eviction 2020-11-10 14:40:29 +08:00
ramnar ba4b043336 updated review comments
updated review comments
2020-11-10 07:08:40 +05:30
ramnar 18e4eaff07 implemented feedback
implemented feedback
2020-11-10 07:05:16 +05:30
Kubernetes Prow Robot e3109f5829 Merge pull request #24963 from sftim/20201109_fix_flow_control_metrics_merge_wrong_branch
Revert pull request 24905
2020-11-09 16:34:41 -08:00
Tim Bannister 595850ca21 Revert pull request 24905
This reverts commit a9a7249330, reversing
changes made to 6d72006c7e - because these
commits were applied to the wrong branch.
2020-11-09 21:32:44 +00:00
Kubernetes Prow Robot a9a7249330 Merge pull request #24905 from adtac/apfsnake
flow control metrics: switch to snake_case for labels
2020-11-09 12:34:27 -08:00
Soichiro KAWAMURA 8dc5b5ed9c add ja translation of concepts/security/pod-security-standards.md 2020-11-10 00:42:41 +09:00
Song Shukun f3d1fd3351 fix link in /docs/tutorials/stateful-application/zookeeper.md 2020-11-09 18:12:49 +09:00
Kubernetes Prow Robot 6d72006c7e Merge pull request #24942 from timyinshi/scheduler
modify the chinese url
2020-11-08 17:43:38 -08:00
timyinshi b97e1b44f8 modify the error url of scheduler
Signed-off-by: timyinshi <shiguangyin@inspur.com>
2020-11-09 09:30:53 +08:00
Kubernetes Prow Robot 77f6a5cf0c Merge pull request #24951 from Arhell/add-shortcode
add shortcode to training page
2020-11-08 15:17:37 -08:00
Arhell 88091c32fd add shortcode to training page 2020-11-09 00:37:05 +02:00
Kubernetes Prow Robot 358bc69dde Merge pull request #24878 from ebriand/patch-5
Update default admission plugins for 1.19
2020-11-08 12:07:37 -08:00
Kubernetes Prow Robot 1db894c643 Merge pull request #24894 from tengqm/zh-sync-resource-quota
[zh] Sync changes to docs/concepts/policy/resource-quotas.md
2020-11-08 12:05:37 -08:00
Kubernetes Prow Robot 5a01c122ab Merge pull request #24939 from Arhell/fix-training
update training page
2020-11-08 05:27:37 -08:00
Kubernetes Prow Robot 1d5ecc7af8 Merge pull request #24936 from ruiwen-zhao/qos
Explicitly mention init containers in the QoS doc
2020-11-07 23:35:37 -08:00
Kubernetes Prow Robot c56f45626e Merge pull request #24934 from KoopaKing/patch-1
Fix formatting issue in Compute Resource Quota documentation
2020-11-07 21:13:37 -08:00
Kubernetes Prow Robot ed5f42e51c Merge pull request #24941 from timyinshi/pod-priority
modify the error chinese word of how
2020-11-07 21:05:37 -08:00
Qiming Teng 4bf6c16cca [zh] Sync changes to docs/concepts/policy/resource-quotas.md
Also fixed a nit in English version.
2020-11-08 10:50:16 +08:00
Fadhil Yori Hibatullah b40ebdacf4 fix typo in configuration secret page 2020-11-07 18:46:40 +07:00
Kubernetes Prow Robot 6bab17e19e Merge pull request #24945 from okutasan/fix-typo-declarativeconfig
fix typo file on declarative-config page
2020-11-07 02:57:36 -08:00
Kubernetes Prow Robot 52bc215c4c Merge pull request #24944 from lanandra/lanandra_id_logging
edit content/id/docs/concepts/cluster-administration/logging.md
2020-11-07 02:31:37 -08:00
okutasan ea6cbc04a2 fix typo file on declarative-config page 2020-11-07 17:22:53 +07:00
lanandra cd1ea0b666 edit content/id/docs/concepts/cluster-administration/logging.md
change file to berkas at line 55
2020-11-07 17:19:15 +07:00
Kubernetes Prow Robot 95e8bc6341 Merge pull request #24943 from azemoning/fixtypo-imperativecommand
fix typo on imperative-command page for Bahasa Indonesia
2020-11-07 01:53:37 -08:00
azemoning d6106372b6 fix typo on imperative-command page 2020-11-07 16:21:16 +07:00
timyinshi e34ca6b9d4 modify the chinese url
Signed-off-by: timyinshi <shiguangyin@inspur.com>
2020-11-07 15:34:19 +08:00
timyinshi bbe8f113bb modify the error chinese word of how
Signed-off-by: timyinshi <shiguangyin@inspur.com>
2020-11-07 15:15:53 +08:00
Kubernetes Prow Robot abd6de3acf Merge pull request #24924 from Arhell/upd-page
add shortcode to training page
2020-11-06 19:51:37 -08:00
Arhell 685eceaf04 update training page 2020-11-07 02:31:45 +02:00
ruiwen-zhao 75456274f9 Explicitly mention init containers in the QoS doc 2020-11-06 19:19:38 +00:00
Chris Bowzer 975cf8c261 Fix formatting issue in Compute Resource Quota documentation 2020-11-06 10:52:47 -08:00
Adhityaa Chandrasekar 5ab1d974b5 flow control metrics: switch to snake_case for labels
Signed-off-by: Adhityaa Chandrasekar <adtac@google.com>
2020-11-06 16:19:12 +00:00
Kubernetes Prow Robot 7716cd69d4 Merge pull request #24922 from nasa9084/update-sig-docs-ja-reviewers
Update SIG-docs-ja reviewers
2020-11-06 07:10:51 -08:00
Arhell 5300d6d935 add shortcode to training page 2020-11-06 11:29:13 +02:00
nasa9084 fbc696808a Update SIG-docs-ja reviewers 2020-11-06 15:25:54 +09:00
Kubernetes Prow Robot 7485a48ae6 Merge pull request #23142 from nishipy/issue23120
Translate concepts/cluster-administration/cloud-providers/ into Japanese
2020-11-05 21:20:50 -08:00
nishipy 20e450f515 Update content/ja/docs/concepts/cluster-administration/cloud-providers.md
Co-authored-by: bells17 <bells171@gmail.com>
2020-11-06 13:16:50 +09:00
Kubernetes Prow Robot 4dc8145f28 Merge pull request #24887 from thockin/kep-1659-topology-trivial-non-english
KEP 1659 topology: trivial non-English changes
2020-11-05 18:00:50 -08:00
Tim Hockin 7e7423a474 Make trivial non-en changes for KEP 1659
There are still some non-trivial changes that will need help.

English was https://github.com/kubernetes/website/pull/24783
2020-11-05 16:54:01 -08:00
Tim Bannister f80591272c Add advice about control plane resilience for large clusters 2020-11-05 17:33:39 +00:00
Tim Bannister 0600eaedde Reword “Building large clusters”
The existing page had lots of references to specific products. Those
references aren't in line with the current content guide, so I cut them
out.

I then reshaped the page to be a general set of advice about managing
and running large clusters.
2020-11-05 17:33:39 +00:00
Eric Briand cee9e620ca Use different wording to not quote current version 2020-11-05 17:21:08 +01:00
Kubernetes Prow Robot 76e773ce85 Merge pull request #24892 from Arhell/add-shortcode
update training page
2020-11-05 07:08:54 -08:00
Kubernetes Prow Robot cfbd72982b Merge pull request #24879 from inductor/update/readme_ja
Update Japanese README
2020-11-05 07:06:54 -08:00
Kubernetes Prow Robot 48adecb949 Merge pull request #24903 from inductor/top_ja_kubecon
Update the kubecon date
2020-11-05 06:46:54 -08:00
Kubernetes Prow Robot 34d211884c Merge pull request #23235 from shuuji3/concepts/services-networking/network-policies
Translate concepts/services-networking/network-policies into Japanese
2020-11-05 06:45:05 -08:00
Kubernetes Prow Robot 794b11c19b Merge pull request #24902 from inductor/feature/update_localization_ja_guide
Update localization guide for Japanese
2020-11-05 06:08:54 -08:00
inductor 1eda04a26f update the kubecon date 2020-11-05 23:07:59 +09:00
inductor 28f1091c76 upadte branch name 2020-11-05 22:54:59 +09:00
Kubernetes Prow Robot 8298b7ae19 Merge pull request #24869 from kubernetes/dev-1.18-ja.1
First Japanese l10n work for release-1.18
2020-11-05 05:50:54 -08:00
Kubernetes Prow Robot 1ea8a1701c Merge pull request #24830 from habibrosyad/gh-23660-ja
Improve maintainability of case studies styling for JA
2020-11-05 04:56:54 -08:00
Kubernetes Prow Robot c5903c9335 Merge pull request #23355 from shuuji3/concepts/services-networking/endpoint-slices
Translate concepts/services-networking/endpoint-slices into Japanese
2020-11-05 03:58:55 -08:00
TAKAHASHI Shuuji 36d5fe6d3d Apply the common blue style to buttons under .main class. 2020-11-05 20:45:11 +09:00
Kubernetes Prow Robot 51a541c161 Merge pull request #24890 from russellb/ovn-kube
Add OVN-Kubernetes to list of cluster add-ons
2020-11-04 23:46:52 -08:00
Kubernetes Prow Robot f56415b69e Merge pull request #24893 from tengqm/fix-lsync-script
Fix logic in lsync script
2020-11-04 23:30:52 -08:00
Qiming Teng 427adb7a8a Fix logic in lsync script
The logic in the previous fix for supporting directory comparison was
incorrect. It was using the last commit in the target directory for
history checking. However, some files in the target directory might be
out of sync long before the last commit to the directory.

This PR changes the script to do a history checking on a per-file basis.
2020-11-05 11:36:11 +08:00
Kubernetes Prow Robot 06f22a2dc5 Merge pull request #24855 from BenTheElder/patch-1
fix kind download link
2020-11-04 16:28:52 -08:00
Kubernetes Prow Robot afa5196363 Merge pull request #24825 from novas0x2a/patch-1
document HPA's implicit deactivation
2020-11-04 16:26:53 -08:00
Arhell 866bcf8eb0 update training page 2020-11-05 00:42:44 +02:00
Kubernetes Prow Robot 90722553f5 Merge pull request #24753 from nate-double-u/24731-fix-.editorconfig-md
.editorconfig: turning off trim_trailing_whitespace for markdown files
2020-11-04 14:16:53 -08:00
Russell Bryant 21b52415e0 Add OVN-Kubernetes to list of cluster add-ons
OVN-Kubernetes is another network provider for Kubernetes.  Add it to the list
of other similar add-ons.
2020-11-04 17:09:06 -05:00
Kubernetes Prow Robot 04787a1903 Merge pull request #24865 from Arhell/fix-heading
fix heading level
2020-11-04 12:36:53 -08:00
Kubernetes Prow Robot 787ba6e147 Merge pull request #24886 from thockin/kep-1659-doc-topology-labels
KEP 1659 topology labels, small revert
2020-11-04 12:24:53 -08:00
Kubernetes Prow Robot 9f2d0825ff Merge pull request #24880 from inductor/add_eu2021
Add link to KubeCon Virtual EU 2021
2020-11-04 10:46:53 -08:00
Tim Hockin 6fdb3e10d7 Revert storage-related topology changes 2020-11-04 09:01:42 -08:00
Jakob 8c68745c0f improve structure of finalizer section in CRD guide (#24851)
- It's now more precise regarding the format of finalizers (which have to
  consist of a namespace and a name, separated by a forward slash or they
  will get rejected by the apiserver, with the exception of built in ones)
- It's less repetitve in general
2020-11-04 08:00:05 -08:00
Kubernetes Prow Robot 0b222bd47c Merge pull request #24875 from Arhell/upd-training
add shortcode for training page
2020-11-04 07:58:05 -08:00
Kubernetes Prow Robot c779b2152b Merge pull request #24783 from thockin/kep-1659-doc-topology-labels
Better docs for standard topology labels
2020-11-04 07:38:04 -08:00
Hao Yuan 7c80ffc07f sync docs/tasks/run-application/horizontal-pod-autoscale.md 2020-11-04 22:12:51 +08:00
Kubernetes Prow Robot db658b2d8e Merge pull request #24831 from habibrosyad/gh-23660-ko
Improve maintainability of case studies styling for KO
2020-11-04 04:40:04 -08:00
inductor ace3ea8d1a Add link to KubeCon Virtual EU 2021 2020-11-04 20:38:16 +09:00
inductor f62b60bf8b update readme-ja 2020-11-04 20:33:21 +09:00
Eric Briand c869ef67a8 Update default admission plugins for 1.19 2020-11-04 09:56:20 +01:00
Kubernetes Prow Robot 5199878fb2 Merge pull request #24768 from kbhawkey/kb-content-third-party-cleanup-1
clean up turnkey cloud solutions
2020-11-04 00:46:04 -08:00
Shuzo Kato 76b032875c fix mistranslation
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-11-04 11:49:06 +09:00
Shuzo Kato c760bb6c5a replace パラメータ with パラメーター 2020-11-04 11:49:02 +09:00
Shuzo Kato 56b56b8798 Apply suggestions from code review
Co-authored-by: inductor(Kohei) <kela@inductor.me>
2020-11-04 11:47:51 +09:00
Shuzo Kato fd5bb7209c fix typo 2020-11-04 11:47:21 +09:00
Shuzo Kato 21f64826d0 Update persistent-volumes.md 2020-11-04 11:47:20 +09:00
hikkie3110 7c49ba346e Update content/ja/docs/concepts/workloads/controllers/deployment.md
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-11-04 11:47:20 +09:00
hikkie3110 5c684ec1e1 update deployment.md for v1.18 2020-11-04 11:47:20 +09:00
hikkie3110 65a5b9cb41 update deployment.md for v1.18 2020-11-04 11:47:20 +09:00
hikkie3110 6006c3f39b Update content/ja/docs/tasks/access-application-cluster/web-ui-dashboard.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:47:19 +09:00
hikkie3110 c025fe137c Update content/ja/docs/tasks/access-application-cluster/web-ui-dashboard.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:47:19 +09:00
hikkie3110 dd5d8157de Update content/ja/docs/tasks/access-application-cluster/web-ui-dashboard.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:47:19 +09:00
hikkie3110 bab4ede89e update web-ui-dashboard.md for v1.18 2020-11-04 11:47:19 +09:00
Shuzo Kato 35f9316649 Apply suggestions from code review
Co-authored-by: inductor(Kohei) <kela@inductor.me>
2020-11-04 11:47:18 +09:00
Shuzo Kato 90fafa3a13 Update content/ja/docs/concepts/extend-kubernetes/extend-cluster.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:47:18 +09:00
Shuzo Kato 6000d8386f Update extend-cluster.md 2020-11-04 11:47:18 +09:00
hikkie3110 8ebf1c56b0 Move content/ja/docs/concepts/configuration/assign-pod-node.md to content/ja/docs/concepts/scheduling-eviction/assign-pod-node.md 2020-11-04 11:47:14 +09:00
hikkie3110 f30fcb5dbd Move content/ja/docs/concepts/configuration/assign-pod-node.md to content/ja/docs/concepts/scheduling-eviction/assign-pod-node.md 2020-11-04 11:46:33 +09:00
Keita Akutsu c55ada1639 ja-trans: Improve Japanese translation in docs/tasks/administer-cluster/nodelocaldns #24433 2020-11-04 11:46:33 +09:00
Keita Akutsu c9472d78db ja-trans: Translate docs/tasks/administer-cluster/nodelocaldns into Japanese #24433 2020-11-04 11:46:32 +09:00
Shuzo Kato 39e7437455 deleted duplicate lines 2020-11-04 11:46:32 +09:00
Shuzo Kato 24d9191cdd added hashtag
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-11-04 11:46:32 +09:00
Shuzo Kato 90618a3ca3 apply suggestions and replaced configration/extension with 設定/拡張 2020-11-04 11:46:32 +09:00
Shuzo Kato a9836cdf4e apply suggestions 2020-11-04 11:46:31 +09:00
Shuzo Kato 58f928cb18 Update _index.md 2020-11-04 11:46:31 +09:00
Takaaki Fujii f42e49fab7 modify "Namespace" translate 2 2020-11-04 11:46:31 +09:00
takaf04 9518835577 modify "Namespace" translate 1
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-11-04 11:46:31 +09:00
takaf04 7b0377ad5a removed unnecessary char
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:46:30 +09:00
Takaaki Fujii c85942837b finished translating cheartsheet.md 2020-11-04 11:46:28 +09:00
hikkie3110 ace9f7b0ed update cassandra.md for v1.18 2020-11-04 11:45:22 +09:00
hikkie3110 55393e833f update cassandra.md for v1.18 2020-11-04 11:45:22 +09:00
yu-kasuya efe076f908 Apply suggestions from code review
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:45:22 +09:00
YukiKasuya be90e20b41 Update ja/docs/reference/access-authn-authz/authentication.md 2020-11-04 11:45:22 +09:00
YukiKasuya 7617c96d53 Update ja/docs/reference/access-authn-authz/authentication.md 2020-11-04 11:45:21 +09:00
Takaaki Fujii 07ec30894b deleted reviewers 2020-11-04 11:45:21 +09:00
Takaaki Fujii 384bb3de92 translated kubectl overview.md 2020-11-04 11:45:16 +09:00
YukiKasuya 73e75c7325 Update ja/docs/concepts/overview/working-with-objects/labels.md 2020-11-04 11:38:44 +09:00
yu-kasuya 32aa2ece0d Apply suggestions from code review
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:38:44 +09:00
YukiKasuya a7712d814b Update ja/docs/tasks/administer-cluster/developing-cloud-controller-manager.md 2020-11-04 11:38:44 +09:00
YukiKasuya a7ee415e9b Update ja/docs/tasks/administer-cluster/developing-cloud-controller-manager.md 2020-11-04 11:38:43 +09:00
hikkie3110 0e2d918ba8 update minikube.md for v1.18 2020-11-04 11:38:43 +09:00
tkms0106 fda183e522 Fix broken link
not translated into Japanese yet
2020-11-04 11:38:43 +09:00
tkms0106 0f2e89919c Replace em characters for en characters
to follow the style guide
2020-11-04 11:38:43 +09:00
Takumi Sue 25c09c5f9b Replace em brackets for en brackets
to follow the style guide

Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:38:42 +09:00
Takumi Sue 2befbab852 Improve translation
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:38:42 +09:00
tkms0106 51a2280038 Replace "feature gate" for "フィーチャーゲート" 2020-11-04 11:38:42 +09:00
Takumi Sue bc1520e71c Translate "feature gate" into "フィーチャーゲート"
and update link to japanese version

Co-authored-by: makocchi <makocchi@gmail.com>
2020-11-04 11:38:42 +09:00
tkms0106 cc05498b41 Update japanese services-networking/service.md
to follow v1.18 of the original (English) text
2020-11-04 11:38:41 +09:00
Jin Hase e99ade3e49 Update content/ja/docs/concepts/workloads/pods/pod-lifecycle.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:38:41 +09:00
Jin Hase 3b2f0ad46d Update content/ja/docs/concepts/workloads/pods/pod-lifecycle.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:38:41 +09:00
Jin Hase d95ed85a50 Update content/ja/docs/concepts/workloads/pods/pod-lifecycle.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:38:41 +09:00
Jin Hase af207cb0f9 Update content/ja/docs/concepts/workloads/pods/pod-lifecycle.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:38:40 +09:00
Jin Hase 522318eff1 Update content/ja/docs/concepts/workloads/pods/pod-lifecycle.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:38:40 +09:00
Jin Hase 295ca64c40 Update content/ja/docs/concepts/workloads/pods/pod-lifecycle.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:38:40 +09:00
Jin Hase 52a6943fee Update pod-lifecycle.md 2020-11-04 11:38:40 +09:00
Jin Hase f180a79342 Delete Japanese doc concepts/workloads/pods/pod.md 2020-11-04 11:38:39 +09:00
Jin Hase 6acafe23b8 Update Japanese localization on concepts/workloads/pods/pod-lifecycle.md 2020-11-04 11:38:39 +09:00
ShotaKitazawa 1965e44ac9 fix typo 2020-11-04 11:38:39 +09:00
YukiKasuya 3f0d8ecde2 Update ja/docs/tasks/run-application/force-delete-stateful-set-pod.md 2020-11-04 11:38:39 +09:00
yu-kasuya bea5c0ed61 Apply suggestions from code review
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:38:38 +09:00
YukiKasuya 54b79a5406 Update ja/docs/setup/best-practices/cluster-large.md 2020-11-04 11:38:38 +09:00
YukiKasuya c2ee0d9eb1 Update ja/docs/concepts/services-networking/_index.md 2020-11-04 11:38:38 +09:00
YukiKasuya f25b316b44 Update ja/docs/reference/_index.md 2020-11-04 11:38:38 +09:00
Shuzo Kato 1b5fd47397 Update content/ja/docs/concepts/extend-kubernetes/operator.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:38:37 +09:00
Shuzo Kato 8e231bd99f apply suggestions 2020-11-04 11:38:37 +09:00
Shuzo Kato e32bf8f038 Update operator.md 2020-11-04 11:38:37 +09:00
YukiKasuya 79afbcf5cc Update ja/docs/tutorials/stateless-application/expose-external-ip-address.md 2020-11-04 11:38:37 +09:00
YukiKasuya f3ee0dd2a7 Update ja/docs/tutorials/stateless-application/expose-external-ip-address.md 2020-11-04 11:38:36 +09:00
Shuzo Kato cfb164ca3a apply suggestions 2020-11-04 11:38:36 +09:00
Shuzo Kato 53121cbed3 apply suggestions 2020-11-04 11:38:36 +09:00
Shuzo Kato b8e399b206 Update custom-resources.md 2020-11-04 11:38:36 +09:00
Soichiro KAWAMURA fbb8d5950d align indents under ordered lists 2020-11-04 11:38:35 +09:00
Soichiro KAWAMURA e749fe5cb2 install-kubectl.md (ja): follow v1.18 2020-11-04 11:38:35 +09:00
Soichiro KAWAMURA 3256091cdd follow 1.18 ingress.md 2020-11-04 11:38:35 +09:00
yu-kasuya 83558be8ad Apply suggestions from code review
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:38:35 +09:00
yu-kasuya b403d06cc8 Apply suggestions from code review
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-11-04 11:38:34 +09:00
YukiKasuya fa4854c55e Update ja/docs/tutorials/hello-minikube.md 2020-11-04 11:38:34 +09:00
YukiKasuya 8ca15fb3e7 Update ja/docs/tutorials/hello-minikube.md 2020-11-04 11:38:34 +09:00
YukiKasuya 9a91829a86 Update ja/docs/tutorials/hello-minikube.md 2020-11-04 11:38:34 +09:00
akitok 8da1f7fc97 Update content/ja/docs/concepts/workloads/controllers/statefulset.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:38:33 +09:00
akitok 618080d5d9 Update content/ja/docs/concepts/workloads/controllers/statefulset.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:38:33 +09:00
akitok f942cd3e9a Update content/ja/docs/concepts/workloads/controllers/statefulset.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:38:33 +09:00
Akito Kobayashi 352a93c797 Make docs/concepts/workloads/controllers/statefulset.md follow v1.18 of the original text 2020-11-04 11:38:33 +09:00
inductor 28a3b3028d delete unnecessary file 2020-11-04 11:38:32 +09:00
Shuzo Kato b040c5a673 apply a suggestion from review 2020-11-04 11:38:32 +09:00
Shuzo Kato db5302c78b replace zenkaku numbers with hankaku numbers 2020-11-04 11:38:32 +09:00
Shuzo Kato 7878c052d6 Apply suggestions from code review
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-11-04 11:38:31 +09:00
Shuzo Kato 890c212101 Translated multiple-zones.md 2020-11-04 11:38:31 +09:00
YukiKasuya 7a6f50df4d Update ja/docs/concepts/services-networking/dns-pod-service.md 2020-11-04 11:38:31 +09:00
YukiKasuya 088c4dc011 Update ja/docs/concepts/services-networking/connect-applications-service.md 2020-11-04 11:38:31 +09:00
yoichiro0217 fd3dcc2777 コメント対応 2020-11-04 11:38:30 +09:00
yoichiro0217 8f0e8074b6 issue-23614の日本語翻訳 コメント対応 2020-11-04 11:38:30 +09:00
yoichiro0217 8fbf98518c issue-23614の日本語翻訳 2020-11-04 11:38:30 +09:00
YukiKasuya 5b6c6a8e65 fix some word 2020-11-04 11:38:30 +09:00
yu-kasuya 3c8bd09da5 Apply suggestions from code review
Co-authored-by: bells17 <bells171@gmail.com>
2020-11-04 11:38:29 +09:00
YukiKasuya 0621356977 Update ja/docs/concepts/workloads/controllers/cron-jobs.md 2020-11-04 11:38:29 +09:00
inductor(Kohei) c2658dfc74 Update content/ja/docs/reference/command-line-tools-reference/feature-gates.md 2020-11-04 11:38:29 +09:00
inductor(Kohei) 2f2ebae427 Update content/ja/docs/reference/command-line-tools-reference/feature-gates.md 2020-11-04 11:38:29 +09:00
inductor 5753e47564 update feature gaet 2020-11-04 11:38:28 +09:00
Shuzo Kato aa8e3e5af9 Update container-runtimes.md 2020-11-04 11:38:28 +09:00
Naoki Oketani ff8a1a5fe8 modify zenkaku colon to hankaku colon 2020-11-04 11:38:28 +09:00
daisuke0131 dcc613eaf1 Update namespaces.md 2020-11-04 11:38:28 +09:00
YukiKasuya 746fa8c1f7 delete some lines 2020-11-04 11:38:27 +09:00
YukiKasuya c7c7461d94 Update ja/docs/tasks/configure-pod-container/assign-cpu-resource.md 2020-11-04 11:38:27 +09:00
YukiKasuya 594ffa7cc3 update some words following comment 2020-11-04 11:38:27 +09:00
YukiKasuya dc35c70530 Update ja/docs/reference/glossary/statefulset.md 2020-11-04 11:38:27 +09:00
yu-kasuya db9eb1d215 Apply suggestions from code review
Co-authored-by: inductor(Kohei) <kela@inductor.me>
2020-11-04 11:38:26 +09:00
YukiKasuya d98ea890c2 Update ja/docs/reference/glossary/platform-developer.md 2020-11-04 11:38:26 +09:00
Shuzo Kato a045acfe94 apply a suggestion from review 2020-11-04 11:38:26 +09:00
Shuzo Kato ff381e1444 Update field-selectors.md 2020-11-04 11:38:26 +09:00
Shuzo Kato 6f905f2a58 apply suggestions 2020-11-04 11:38:25 +09:00
Shuzo Kato ff29a34608 translate components.md 2020-11-04 11:38:25 +09:00
yu-kasuya 77c4cf3dc2 Apply suggestions from code review
Co-authored-by: inductor(Kohei) <kela@inductor.me>
2020-11-04 11:38:25 +09:00
yu-kasuya 57e3ee6069 Apply suggestions from code review
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-11-04 11:38:25 +09:00
YukiKasuya a1d78a3b86 fix some commented words 2020-11-04 11:38:25 +09:00
YukiKasuya 26d4a99925 fix commented words 2020-11-04 11:38:24 +09:00
YukiKasuya 9244f9e4aa translate cloud-controller.md 2020-11-04 11:38:24 +09:00
yu-kasuya d95d0c1f1b Apply suggestions from code review
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-11-04 11:38:24 +09:00
YukiKasuya 2d4db22652 update word for stateless 2020-11-04 11:38:24 +09:00
YukiKasuya 57e4e1eaab Update ja/docs/reference/glossary/deployment.md 2020-11-04 11:38:23 +09:00
yu-kasuya c22eee0090 Apply suggestions from code review
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-11-04 11:38:23 +09:00
YukiKasuya 1a1ac8f4f4 Update ja/docs/tasks/administer-cluster/coredns.md 2020-11-04 11:38:23 +09:00
Jin Hase 78a96c2818 Update podpreset.md 2020-11-04 11:38:23 +09:00
Jin Hase 80c360ecfb Update Japanese localization on concepts/workloads/pods/podpreset.md follow 2020-11-04 11:38:22 +09:00
YukiKasuya e70daec5a2 Update ja/docs/reference/glossary/node.md 2020-11-04 11:38:22 +09:00
pururaj1908 1c7fbc9040 Updated ja minikube.md to follow v1.18 changes 2020-11-04 11:38:22 +09:00
TAKAHASHI Shuuji 8220b4a1c0 Update _index.md 2020-11-04 11:38:22 +09:00
TAKAHASHI Shuuji a27aef9dc8 Make docs/tasks/debug-application-cluster/_index.md follow v1.18 of the original text 2020-11-04 11:38:21 +09:00
YukiKasuya 40e06dcd41 Update ja/docs/tasks/configure-pod-container/assign-memory-resource.md 2020-11-04 11:38:21 +09:00
yu-kasuya ad90db2cf5 Apply suggestions from code review
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-11-04 11:38:21 +09:00
yu-kasuya a1142f69ed Apply suggestions from code review
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-11-04 11:38:21 +09:00
YukiKasuya 899e02aeb7 Update ja/docs/tasks/administer-cluster/enabling-endpointslices.md 2020-11-04 11:38:20 +09:00
tkms0106 817e3bfe9b Update japanese ingress-controllers.md
to follow v1.18 of the original (English) text
2020-11-04 11:38:20 +09:00
takaf04 8ae6419091 Update content/ja/docs/reference/glossary/volume.md
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-11-04 11:38:20 +09:00
Takaaki Fujii 2c2947187b fixed short description 2020-11-04 11:38:20 +09:00
Takaaki Fujii a61c14b165 finished translate 2020-11-04 11:38:19 +09:00
Jin Hase f0c7c540fd Update volume-pvc-datasource.md 2020-11-04 11:38:19 +09:00
Jin Hase e6f33dd3e6 Update Japanese localization on concepts/storage/volume-pvc-datasource.md 2020-11-04 11:38:19 +09:00
Shuzo Kato d285d43f76 Update kubernetes-objects.md 2020-11-04 11:38:19 +09:00
Shuzo Kato 6622978b23 Apply suggestions from code review
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-11-04 11:38:18 +09:00
Shuzo Kato bf8386f235 Apply suggestions from code review
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-11-04 11:38:18 +09:00
Shuzo Kato 3f20b116b1 Revert "pulled job.md from master and added english heading title"
This reverts commit 1756223848ce5a10ce8a2d90df6a5fd8e90cc61b.
2020-11-04 11:38:18 +09:00
Shuzo Kato 6c1601c26e pulled job.md from master and added english heading title 2020-11-04 11:38:18 +09:00
Shuzo Kato 2135d79e7c fixed link 2020-11-04 11:38:17 +09:00
Shuzo Kato cd78bc4b07 Revert "fixed link"
This reverts commit 175f6974b86b7b5b11711402b5e4f66d8f6b6264.
2020-11-04 11:38:17 +09:00
Shuzo Kato 536d49174a fixed link 2020-11-04 11:38:14 +09:00
Shuzo Kato 0377d7ba37 fixed hashtag link 2020-11-04 11:37:42 +09:00
Shuzo Kato 949260c0e4 Update ttlafterfinished.md 2020-11-04 11:37:41 +09:00
Shuzo Kato 239cf338d7 Update ttlafterfinished.md 2020-11-04 11:37:41 +09:00
Shuzo Kato 023b0dd968 Update ttlafterfinished.md 2020-11-04 11:37:41 +09:00
Shuzo Kato 4a40397bc3 Update ttlafterfinished.md 2020-11-04 11:37:41 +09:00
TAKAHASHI Shuuji db611d74af Make docs/tasks/administer-cluster/_index.md follow v1.18 of the original text 2020-11-04 11:37:40 +09:00
Tadaki Sakai 067dc06039 fix mark up in Ja concepts/workloads/controllers/deployment.md 2020-11-04 11:37:40 +09:00
Tadaki Sakai 1641b7e34c fix translation for "such as"
In the context, "Development, Staging and Production" is example, so I think "といった" is appropriate.
2020-11-04 11:37:40 +09:00
hikkie3110 bfeee745f3 Update content/ja/docs/concepts/architecture/nodes.md
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-11-04 11:37:40 +09:00
hikkie3110 cbba4077b2 update nodes.md for v1.18 2020-11-04 11:37:39 +09:00
hikkie3110 e21280f19e update nodes.md for v1.18 2020-11-04 11:37:39 +09:00
Jin Hase 9297d8dbaa Update content/ja/docs/concepts/containers/container-lifecycle-hooks.md
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-11-04 11:37:39 +09:00
Jin Hase ae96a7aca9 Update Japanese localization on concepts/containers/container-lifecycle-hooks.md 2020-11-04 11:37:39 +09:00
arisgi a59e157940 Remove unnecessary spaces 2020-11-04 11:37:38 +09:00
arisgi 1bafdfee03 Translate docs/concepts/configuration/overview.md into Japanese 2020-11-04 11:37:38 +09:00
Shuzo Kato 744e475fff translated common-labels.md 2020-11-04 11:37:38 +09:00
takaf04 7dd5550b06 Update content/ja/docs/concepts/containers/_index.md
Co-authored-by: inductor(Kohei) <kela@inductor.me>
2020-11-04 11:37:38 +09:00
takaf04 f2dd2b515e Update content/ja/docs/concepts/containers/_index.md
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-11-04 11:37:38 +09:00
Takaaki Fujii 65612f2c68 finish translate 2020-11-04 11:37:37 +09:00
TAKAHASHI Shuuji 037e108865 Update the link
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-11-04 11:37:37 +09:00
TAKAHASHI Shuuji 866fe31acb Make docs/tasks/_index.md follow v1.18 of the original text 2020-11-04 11:37:37 +09:00
Shuzo Kato fd31e94f02 translated what-is-kubernetes.md 2020-11-04 11:37:37 +09:00
TAKAHASHI Shuuji 4a50a07a3f Make docs/tasks/access-application-cluster/_index.md follow v1.18 of the original text 2020-11-04 11:37:36 +09:00
TAKAHASHI Shuuji 32a72991f7 Make docs/tasks/configure-pod-container/_index.md follow v1.18 of the original text 2020-11-04 11:37:36 +09:00
Shuzo Kato e5e8415840 update links 2020-11-04 11:37:36 +09:00
Jin Hase 320648440e Update Japanese localization on tutorials/stateful-application/mysql-wordpress-persistent-volume.md 2020-11-04 11:37:36 +09:00
Jin Hase a2e11b741f Update content/ja/docs/tasks/administer-cluster/running-cloud-controller.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-04 11:37:35 +09:00
Jin Hase f7517161e3 Update content/ja/docs/tasks/administer-cluster/running-cloud-controller.md
Co-authored-by: inductor(Kohei) <kela@inductor.me>
2020-11-04 11:37:35 +09:00
Jin Hase 7df4ce95e0 Update Japanese localization on tasks/administer-cluster/running-cloud-controller.md 2020-11-04 11:37:35 +09:00
yu-kasuya 530a85cbe2 Apply suggestions from code review
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-11-04 11:37:35 +09:00
yu-kasuya 4e87c9e701 Apply suggestions from code review
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-11-04 11:37:34 +09:00
YukiKasuya 427a7e8782 Update ja/docs/reference/glossary/control-plane.md 2020-11-04 11:37:34 +09:00
Jin Hase 372bcd7b72 Update content/ja/docs/concepts/workloads/controllers/daemonset.md
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-11-04 11:37:34 +09:00
Jin Hase 2cc1ced9d5 Update Japanese localization on concepts/workloads/controllers/daemonset.md 2020-11-04 11:37:34 +09:00
Shuzo Kato a59c29be1a Update _index.md 2020-11-04 11:37:33 +09:00
Shuzo Kato 58cb155fd8 Update _index.md 2020-11-04 11:37:33 +09:00
YukiKasuya 60ba9f697d Update ja/docs/tutorials/kubernetes-basics/create-cluster/cluster-interactive.html 2020-11-04 11:37:33 +09:00
Tadaki Sakai 24dcb7b206 fix diagonal line mark up of "replication" 2020-11-04 11:37:33 +09:00
Shuzo Kato cb0f2a9519 Update certificates.md 2020-11-04 11:37:32 +09:00
YukiKasuya 64813947bd Update ja/docs/tutorials/kubernetes-basics/deploy-app/deploy-interactive.html 2020-11-04 11:37:32 +09:00
Tadaki Sakai edb89f7f8f Fix typo in Ja concepts/overview/what-is-kubernetes.md
Fixed typo for word "stateless".
2020-11-04 11:37:32 +09:00
yu-kasuya 7b627c5229 Apply suggestions from code review
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-11-04 11:37:32 +09:00
YukiKasuya 5848086102 fix some words 2020-11-04 11:37:31 +09:00
yu-kasuya 3cbdf97530 Apply suggestions from code review
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-11-04 11:37:31 +09:00
YukiKasuya 624d15cdc4 Updata content/ja/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md 2020-11-04 11:37:31 +09:00
Shuzo Kato c9ed105f44 Update node-conformance.md 2020-11-04 11:37:31 +09:00
Shuzo Kato 44552a817d Update resource-quotas.md 2020-11-04 11:37:30 +09:00
Shuzo Kato 011fab911e Update resource-quotas.md 2020-11-04 11:37:30 +09:00
Shuzo Kato f9469f99d2 Update resource-quotas.md 2020-11-04 11:37:30 +09:00
YukiKasuya a17f9d843b Update ja/docs/tutorials/services/source-ip.md 2020-11-04 11:37:30 +09:00
YukiKasuya e7c156a4ff Update ja/docs/tutorials/kubernetes-basics/expose/expose-intro.html 2020-11-04 11:37:29 +09:00
YukiKasuya b03e68d000 Update ja/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro.html 2020-11-04 11:37:29 +09:00
tkms0106 3dde44206e Update japanese list-all-running-container-images.md
to follow v1.18 of the original (English) text
2020-11-04 11:37:29 +09:00
zettaittenani 8c348075d2 Fix ingress.md's links for ingress controller 2020-11-04 11:37:29 +09:00
Naoki Oketani eda77a06a3 modify link title 2020-11-04 11:37:29 +09:00
YukiKasuya 4d361be2b0 Update ja/docs/tutorials/kubernetes-basics/scale/scale-intro.html 2020-11-04 11:37:28 +09:00
Shuzo Kato eca608559e Update _index.md 2020-11-04 11:37:28 +09:00
Shuzo Kato 1bcce822a1 Update delete-stateful-set.md 2020-11-04 11:37:28 +09:00
YukiKasuya b7e031c621 delete newline 2020-11-04 11:37:28 +09:00
YukiKasuya 9dfe0f044e updateja/docs/tasks/access-application-cluster/service-access-application-cluster.md 2020-11-04 11:37:27 +09:00
yu-kasuya e1bcc4fff9 Apply suggestions from code review
Co-authored-by: inductor(Kohei) <kela@inductor.me>
2020-11-04 11:37:27 +09:00
YukiKasuya 61d24d7787 update ja/docs/tasks/access-application-cluster/connecting-frontend-backend.md 2020-11-04 11:37:27 +09:00
YukiKasuya b82b1ff73c update ja/docs/tasks/access-application-cluster/connecting-frontend-backend.md 2020-11-04 11:37:27 +09:00
Shuzo Kato 3d0034f42c Update attach-handler-lifecycle-event.md 2020-11-04 11:37:26 +09:00
Shuzo Kato 495415c3f3 Update configure-pod-configmap.md 2020-11-04 11:37:26 +09:00
Takuya Niita 60c7c21151 modify #23451 2020-11-04 11:37:26 +09:00
Takuya Niita 731b0da4f7 modify #23451 2020-11-04 11:37:26 +09:00
Takuya Niita e6691df380 modify #23451 2020-11-04 11:37:25 +09:00
Takuya Niita 3bc4bafda7 modify #23451 2020-11-04 11:37:25 +09:00
arisgi d3db4e1e86 Translate "Determine the Reason for Pod Failure" 2020-11-04 11:37:25 +09:00
opeco17 b487ca44a3 Update content/ja/docs/tasks/debug-application-cluster/debug-service.md
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-11-04 11:37:25 +09:00
opeco17 212076bc45 Update content/ja/docs/tasks/debug-application-cluster/debug-service.md
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-11-04 11:37:24 +09:00
opeco17 87c0bcadcd fix 24484 2020-11-04 11:37:24 +09:00
Shuzo Kato a74f06a0fe Update debug-pod-replication-controller.md 2020-11-04 11:37:24 +09:00
Shuzo Kato aa0cbfe61f Update debug-pod-replication-controller.md 2020-11-04 11:37:24 +09:00
YukiKasuya cb7ad7d3ad update word and link 2020-11-04 11:37:23 +09:00
YukiKasuya b73acdfa6a fix newline 2020-11-04 11:37:23 +09:00
YukiKasuya a144437c21 update ja/doc networking 2020-11-04 11:37:23 +09:00
hide d083d39750 Update content/ja/docs/tasks/debug-application-cluster/get-shell-running-container.md
Co-authored-by: inductor(Kohei) <kela@inductor.me>
2020-11-04 11:37:23 +09:00
hide cc4ba71849 Update content/ja/docs/tasks/debug-application-cluster/get-shell-running-container.md
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-11-04 11:37:22 +09:00
hideUW ae2fedaf19 Update the document to follow v1.18. 2020-11-04 11:37:22 +09:00
Shuzo Kato acea56b17a Update content/ja/docs/tasks/debug-application-cluster/debug-stateful-set.md
Co-authored-by: inductor(Kohei) <kela@inductor.me>
2020-11-04 11:37:22 +09:00
Shuzo Kato 7f5c052bf8 Update debug-stateful-set.md 2020-11-04 11:37:22 +09:00
YukiKasuya ab82c697f4 delete unnecessary space 2020-11-04 11:37:21 +09:00
YukiKasuya 045cf0cc24 update controller.md 2020-11-04 11:37:21 +09:00
Shuzo Kato 4343035a91 Update quality-service-pod.md 2020-11-04 11:37:21 +09:00
Jin Hase a0e8cf7913 Update Japanese localization on tasks/inject-data-application/_index.md 2020-11-04 11:37:21 +09:00
Jin Hase fcee7bcc7f Update Japanese localization on tasks/run-application/_index.md 2020-11-04 11:37:20 +09:00
Shuzo Kato 5fc11ca307 Update install-service-catalog-using-sc.md 2020-11-04 11:37:20 +09:00
Shuzo Kato 1b0b309901 Update run-stateless-application-deployment.md 2020-11-04 11:37:20 +09:00
tkms0106 ac62dadf5b Update content/ja/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md
to follow v1.18 of the original (English) text
2020-11-04 11:37:20 +09:00
Jin Hase 26a8a1ce63 Update Japanese localization on tasks/inject-data-application/define-environment-variable-container.md 2020-11-04 11:37:20 +09:00
Shuzo Kato 8c762dc6a6 Update replicaset.md 2020-11-04 11:37:19 +09:00
Shuzo Kato 2de0c23a1f Update install-service-catalog-using-helm.md 2020-11-04 11:37:19 +09:00
Shuzo Kato 469e3ba973 Update garbage-collection.md 2020-11-04 11:37:19 +09:00
YukiKasuya 821aeb70ba update ja communicate-containers-same-pod-shared-volume.md 2020-11-04 11:37:19 +09:00
YukiKasuya 916881f70f update ja communicate-containers-same-pod-shared-volume.md 2020-11-04 11:37:18 +09:00
Shuzo Kato dd216b3ffc Update run-replicated-stateful-application.md 2020-11-04 11:37:18 +09:00
Shuzo Kato 1b30cc320b Update run-replicated-stateful-application.md 2020-11-04 11:37:18 +09:00
Shuzo Kato cd625d0a52 Update run-replicated-stateful-application.md 2020-11-04 11:37:18 +09:00
Jin Hase 9731c566a8 Update content/ja/docs/concepts/containers/runtime-class.md
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-11-04 11:37:17 +09:00
Jin Hase 0a75fa0bae Update content/ja/docs/concepts/containers/runtime-class.md
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-11-04 11:37:17 +09:00
Jin Hase b90563f347 Update content/ja/docs/concepts/containers/runtime-class.md
Co-authored-by: makocchi <makocchi@gmail.com>
2020-11-04 11:37:17 +09:00
Jin Hase 2efdc53209 Update Japanese localization on concepts/containers/runtime-class.md 2020-11-04 11:37:17 +09:00
TAKAHASHI Shuuji 211acbe519 Translate tasks/tools into Japanese. 2020-11-04 11:37:16 +09:00
TAKAHASHI Shuuji dd02880d0c Update tasks/tools/_index.md from en/ directory. 2020-11-04 11:37:16 +09:00
keita mochizuki d1faa62d41 Fix -apiserver-advertise-address
Fix --apiserver-advertize-address=<ip-address> to --apiserver-advertise-address=<ip-address>.
2020-11-04 11:37:16 +09:00
Kubernetes Prow Robot 6691d8e7b2 Merge pull request #24863 from povsister/signing-duration
Fix experimental flag example
2020-11-03 18:32:03 -08:00
Kubernetes Prow Robot ad2b20bac5 Merge pull request #24440 from oomichi/fix-notfound
ja: Removing references of `kubectl rolling-update`
2020-11-03 18:26:04 -08:00
Arhell e0bad3430a add shortcode for training page 2020-11-04 01:36:12 +02:00
Karen Bradshaw a8f07b6a1b modify width of iframe 2020-11-03 16:24:20 -05:00
Karen Bradshaw 1e1e016d17 testing landscape shortcode 2020-11-03 15:52:15 -05:00
Karen Bradshaw dd618cff39 clean up turnkey cloud solutions 2020-11-03 15:40:26 -05:00
Kubernetes Prow Robot a31ed022c1 Merge pull request #24014 from Arhell/upd-training
add cncf-landscape shortcode for training page
2020-11-03 12:38:04 -08:00
Tim Hockin 300c2e8545 Better docs for standard topology labels
As per KEP 1659, topology labels are now more formalized.  Move away
from the older `failure-domain.beta` names ands use `topology` names
instead.
2020-11-03 11:27:58 -08:00
Kubernetes Prow Robot 000942227e Merge pull request #24748 from npu21/win-ja
fix Docker file link
2020-11-03 08:22:16 -08:00
Kubernetes Prow Robot cd2809b6eb Merge pull request #23931 from shuuji3/concepts/storage/storage-capacity
Translate concepts/storage/storage-capacity into Japanese
2020-11-03 07:04:16 -08:00
Kubernetes Prow Robot 0f9296f450 Merge pull request #24866 from alculquicondor/fix-default-spread-state
Fix feature state for cluster-level default topology spread
2020-11-03 06:50:16 -08:00
Aldo Culquicondor eda7a79ea2 Fix feature state for cluster-level default topology spread
The configuration is part of the PodTopologySpread feature
(previously known as EvenPodsSpread)
2020-11-03 09:29:27 -05:00
Kubernetes Prow Robot 11f3079845 Merge pull request #22995 from inductor/feature/improve_build
Improve front build
2020-11-03 04:18:16 -08:00
Arhell 08b566111d fix heading level 2020-11-03 10:54:58 +02:00
povsister 3189bdf52a Fix experimental flag example 2020-11-03 14:30:44 +08:00
Kubernetes Prow Robot 9415afa685 Merge pull request #24856 from cblecker/dan
new blog post: Remembering Dan Kohn
2020-11-02 19:12:14 -08:00
Qiming Teng 3fe2113b57 Update requirements for ZH localization
This PR updates the ZH localization guide on updating existing
translations.
2020-11-03 10:39:58 +08:00
Christoph Blecker dbdea6b354 new blog post: Remembering Dan Kohn 2020-11-02 15:44:33 -08:00
Benjamin Elder 674e1ee90f fix download link
without comment on the article, addressing https://github.com/kubernetes/kubernetes/issues/96086 🙃
2020-11-02 13:42:43 -08:00
Kubernetes Prow Robot dc5093f2f2 Merge pull request #24819 from doug-fish/master
Add missing space
2020-11-02 07:24:54 -08:00
Kubernetes Prow Robot 6a887a3204 Merge pull request #24841 from sftim/20201101_fix_container_runtime_apt_pgp_key_instructions
Fix incorrect instructions for adding PGP keys to APT
2020-11-02 06:48:53 -08:00
TAKAHASHI Shuuji b5a66fe4db Append a missing sentence 2020-11-02 20:47:03 +09:00
TAKAHASHI Shuuji 237298b5a1 Apply suggestions from code review
Co-authored-by: bells17 <bells171@gmail.com>
2020-11-02 20:42:57 +09:00
Kubernetes Prow Robot 803cadf059 Merge pull request #24833 from kubernetes/dev-1.19-ko.4
Forth Korean l10n work for release-1.19
2020-11-02 03:28:52 -08:00
TAKAHASHI Shuuji dba15377f2 Replace 'コントローラ' with 'コントローラー'. 2020-11-02 14:49:24 +09:00
TAKAHASHI Shuuji 60990a4e0f Apply suggestions from code review
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-11-02 13:30:34 +09:00
Kubernetes Prow Robot 2217a60568 Merge pull request #24842 from ydcool/zh-resync-overview-components
[zh] Resync docs/concepts/overview/components.md
2020-11-01 19:32:51 -08:00
Dominic Yin 40095e32db [zh] Resync docs/concepts/overview/components.md 2020-11-02 10:49:07 +08:00
Kubernetes Prow Robot b21d8183aa Merge pull request #24813 from ydcool/zh-rsync-container-runtimes
[zh] Resync docs/setup/production-environment/container-runtimes.md
2020-11-01 17:52:53 -08:00
Dominic Yin 4dbc9f6018 [zh] Resync docs/setup/production-environment/container-runtimes.md 2020-11-02 09:24:25 +08:00
Kubernetes Prow Robot ec9947cf25 Merge pull request #24836 from zhanw15/patch-1
Update zh translation in configure-pod-configmap.md
2020-11-01 16:56:52 -08:00
Tim Bannister dbb93e842e Fix incorrect instructions for adding PGP keys to APT 2020-11-01 23:18:05 +00:00
zhanwang 5cf1d6702d Update zh translation in configure-pod-configmap.md 2020-11-01 16:39:42 +00:00
Jerry Park 6d27247c1e Forth Korean l10n work for release-1.19
- Fix ko glossary managed service title (#24621)
- Translate reference/glossary/service-broker.md in Korean (#24632)
- Translate reference/command-line-tools-reference/kubelet-authentication-authorization.md into korean (#24623)
- Update outdated files in the dev-1.19-ko.4 branch (#24622)
- Translate setup/production-environment/tools/kubeadm/self-hosting/ into Korean (#24655)
- Translate reference/kubectl/kubectl.md into Korean (#24482)
- docs: fix typo (#24713)
- Translate connecting-frontend-backend to Korean (#24422)
- Translate reference/kubectl/conventions.md into Korean (#24614)
- Translate k8s 1.19 relaese note in korean (#24633)

Co-authored-by: seokho-son <shsongist@gmail.com>
Co-authored-by: santachopa <santachopa@naver.com>
Co-authored-by: kosehy@gmail.com <kosehy@gmail.com>
Co-authored-by: Jerry Park <jaehwa@gmail.com>
Co-authored-by: markruler <csu0414@gmail.com>
Co-authored-by: noel <neutiyoo@gmail.com>
Co-authored-by: coolguyhong <podolsmith@naver.com>
Co-authored-by: chhanz <han0495@gmail.com>
Co-authored-by: bluefriday <bluefriday86@gmail.com>
2020-11-02 00:10:15 +09:00
Qiming Teng 612a1c8c7c [zh] Translate docs/test.md 2020-11-01 22:17:09 +08:00
M. Habib Rosyad df2285edf1 Improve maintainability of case studies styling for KO 2020-11-01 20:15:40 +07:00
M. Habib Rosyad 072f8a7dcb Improve maintainability of case studies styling for JA 2020-11-01 15:27:42 +07:00
M. Habib Rosyad 4450d7ecf4 Improve maintainability of case studies styling for PT 2020-11-01 12:36:40 +07:00
inductor 59d643b8a3 fix build 2020-11-01 11:01:10 +09:00
inductor 28209e0b00 apply review 2020-11-01 10:40:22 +09:00
inductor 3f7f7f7b8e rebase master 2020-11-01 10:40:22 +09:00
Mike Lundy 862482e4d1 Apply suggestions from code review
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-10-31 12:00:00 -07:00
Kubernetes Prow Robot e8b028acab Merge pull request #24827 from pankaj02/patch-1
Updated _index.md to remove duplicate lines
2020-10-31 11:08:51 -07:00
Kubernetes Prow Robot a2b67fc2c2 Merge pull request #24806 from huchengze/patch-42
Update running-cloud-controller.md
2020-10-31 06:14:51 -07:00
Kubernetes Prow Robot 0a47135b2d Merge pull request #24773 from tengqm/fix-24721
Fix typo in Daemonset
2020-10-31 06:12:51 -07:00
Kubernetes Prow Robot 1082d1279d Merge pull request #24802 from huchengze/patch-40
Update define-environment-variable-container.md
2020-10-31 06:10:51 -07:00
Kubernetes Prow Robot e06d1a6e7e Merge pull request #24798 from lovebaby979/kops-images
update image.cm for zh
2020-10-31 06:06:51 -07:00
Kubernetes Prow Robot 6e77f2dd5b Merge pull request #24820 from fancc/drain
resolve title errors
2020-10-31 00:52:52 -07:00
Pankaj Kumar b05f84778b Updated _index.md to remove duplicate lines
Removed duplicate lines in the documentation.
2020-10-31 11:46:33 +05:30
Mike Lundy 0f4db0dc90 document HPA's implicit deactivation 2020-10-30 14:56:32 -07:00
Kubernetes Prow Robot fe76436eba Merge pull request #24780 from anwesh-b/patch-1
Update container-runtimes.md
2020-10-30 13:12:52 -07:00
Kubernetes Prow Robot 2bc2e8fda0 Merge pull request #24528 from sftim/20201012_add_object_to_glossary
Add object to glossary
2020-10-30 12:20:38 -07:00
bryan 891d8edb26 resolve title errors 2020-10-30 23:53:59 +08:00
doug-fish 9f052f96d4 Add missing space 2020-10-30 10:49:13 -05:00
Kubernetes Prow Robot 2702f117a2 Merge pull request #24238 from fancc/seccomp
Translate Restrict a Container's Syscalls with Seccomp into Chinese
2020-10-30 06:02:05 -07:00
Kubernetes Prow Robot a92ca1b300 Merge pull request #24810 from wwgfhf/wwg-kubectl-plugins
Update zh translation in kubectl-plugins.md
2020-10-30 05:42:06 -07:00
Kubernetes Prow Robot 01d0640b95 Merge pull request #24808 from huchengze/patch-43
Update namespaces.md
2020-10-30 05:40:06 -07:00
wwgfhf f02cf00bbd Update kubectl-plugins.md 2020-10-30 18:19:28 +08:00
huccshen 601a8ea8c1 Update namespaces.md 2020-10-30 18:18:19 +08:00
huccshen 09d0779ed8 Update running-cloud-controller.md 2020-10-30 18:00:05 +08:00
huccshen 379b6907f3 Update define-environment-variable-container.md 2020-10-30 17:15:42 +08:00
Kubernetes Prow Robot 564e9ae263 Merge pull request #24799 from wwgfhf/wwg-horizontal-pod-autoscale
Update zh translation in horizontal-pod-autoscale.md
2020-10-30 02:10:06 -07:00
Kubernetes Prow Robot 0994a7d717 Merge pull request #24800 from lovebaby979/kops-images2
update broken link
2020-10-30 02:08:07 -07:00
wangjibao.lc f609a12f81 update broken link 2020-10-30 16:49:45 +08:00
wwgfhf 930d8938d0 Update horizontal-pod-autoscale.md 2020-10-30 16:46:16 +08:00
wangjibao.lc 418f0af120 update image.cm for zh 2020-10-30 16:29:38 +08:00
wangjibao.lc 0b03d253e2 update broken link 2020-10-30 15:51:04 +08:00
wangjibao.lc 5f5eca7866 update broken link 2020-10-30 15:41:48 +08:00
Qiming Teng 91d6aa7de5 Fix typo in Daemonset 2020-10-30 10:33:41 +08:00
bryan 0dfed51bc3 Translate Restrict a Container's Syscalls with Seccomp into Chinese 2020-10-30 10:16:17 +08:00
Kubernetes Prow Robot a1331a22b7 Merge pull request #24774 from tengqm/fix-21226
Resync tutorial page expose external IP address
2020-10-29 19:00:07 -07:00
Kubernetes Prow Robot 04b4e4cca8 Merge pull request #24785 from npu21/setup-zh
update containerd systemd configuration
2020-10-29 18:58:05 -07:00
Zhang Yong 384ba18c00 update containerd systemd configuration 2020-10-30 09:25:17 +08:00
Arhell 59cdc2aaec add cncf-landscape shortcode for training page 2020-10-30 02:07:55 +02:00
Kubernetes Prow Robot 7ffb2882df Merge pull request #24728 from nate-double-u/23055-copy-update
Copy updates for k8s.io/docs/concepts/containers/images/
2020-10-29 14:18:06 -07:00
Kubernetes Prow Robot e88749b00a Merge pull request #24779 from kbhawkey/fix-feature-state-volume
fix CSIMigration feature state
2020-10-29 10:19:55 -07:00
Anwesh Budhathoki b45a679d36 Update container-runtimes.md
Added few lines to help people understand the procedure
2020-10-29 20:42:46 +05:45
Karen Bradshaw 1c8429a173 fix csimigration feature state 2020-10-29 10:42:44 -04:00
Kubernetes Prow Robot 270e0b5996 Merge pull request #24730 from lmm/update-calico
Update Calico description on 'Cluster Networking' page
2020-10-29 07:02:59 -07:00
Carl Henrik Lunde 1d08f1f6fa AWS ALB Ingress Controller renamed to AWS Load Balancer Controller
AWS ALB Ingress Controller is now renamed to AWS Load Balancer Controller
2020-10-29 13:38:04 +01:00
Kubernetes Prow Robot 7da692f67e Merge pull request #24770 from clearbjli/patch-1
Wrong argument order for apt-key. Fails on Ubuntu 20.04.1 LTS
2020-10-29 02:04:59 -07:00
Kubernetes Prow Robot 0b959e55c1 Merge pull request #23825 from tengqm/add-secret-type
Add documentation for secret types
2020-10-29 02:00:59 -07:00
Qiming Teng f1e5b34607 Resync tutorial page expose external IP address 2020-10-29 14:21:02 +08:00
Kubernetes Prow Robot 1adfc10702 Merge pull request #24759 from yaowenqiang/yaowenqiang-patch-3
fix wrong anchor link
2020-10-28 22:28:58 -07:00
Qiming Teng ab58775702 Add secret type documentation 2020-10-29 09:26:44 +08:00
Kubernetes Prow Robot a6e3be38e5 Merge pull request #24746 from gaoguangze111/update-page-docker-cli-to-kubectl
Update links in page docker-cli-to-kubectl.md
2020-10-28 18:22:59 -07:00
Kubernetes Prow Robot 2f5e9d5c1b Merge pull request #24760 from paikwiki/patch-1
Enhance Ko translation for working-with-objects/labels
2020-10-28 15:14:59 -07:00
Laurence Man 7f94c0e4a4 Update Calico description based on feedback 2020-10-28 12:00:23 -07:00
Kubernetes Prow Robot 84b3e50605 Merge pull request #24764 from adtac/pts1
pod topology spread: add note about GA and feature gates
2020-10-28 07:35:56 -07:00
Adhityaa Chandrasekar ede08e612b pod topology spread: add note about GA and feature gates
Signed-off-by: Adhityaa Chandrasekar <adtac@google.com>
2020-10-28 13:53:32 +00:00
Kubernetes Prow Robot 05ee40f36f Merge pull request #24758 from KilimAnnejaro/storage-use-cases
use cases for volume snapshot
2020-10-28 06:43:56 -07:00
paikwiki b1be5bde9e Translate a word, "and"
There is a word, "and" among operators. It confuses that "and" is in operators. So I translate it in Korean.
2020-10-28 18:00:33 +09:00
yaowenqiang 811eded1c0 fix wrong anchor link 2020-10-28 13:37:12 +08:00
ramnar bc2b4f2e5b implemented review comments
implemented review comments
2020-10-28 07:28:32 +05:30
KilimAnnejaro 6aee0699e2 moving use cases up 2020-10-27 20:50:49 -05:00
KilimAnnejaro 7f5f3cb00e responding to comments 2020-10-27 20:15:09 -05:00
KilimAnnejaro 1d809aabd6 use cases for volume snapshot 2020-10-27 18:28:30 -05:00
Nate W b04ff89c23 .editorconfig: turning off trim_trailing_whitespace for markdown files
Adding *.md section to turn off trim_trailing_whitespace for .md files. (Fixes: https://github.com/kubernetes/website/issues/24731)

Signed-off-by: Nate W <nwaddington@cncf.io>
2020-10-27 10:26:47 -07:00
Kubernetes Prow Robot 2ba7b9ade5 Merge pull request #24740 from xieyanker/patch-3
Fix format error
2020-10-27 05:31:59 -07:00
clearbjli 8f352ff829 Update container-runtimes.md
--keyring option to apt-key must come before the "add" command. Otherwise this step will fail (verified on Ubuntu 20.04.1 LTS).
2020-10-27 13:11:00 +01:00
xieyanker 40ed84540d Fix format error 2020-10-27 19:21:37 +08:00
Kubernetes Prow Robot 8af3536fb9 Merge pull request #24745 from gaoguangze111/update-page-conventions
Update non localized links in page conventions
2020-10-27 02:12:01 -07:00
Kubernetes Prow Robot bb60c2f7e2 Merge pull request #24744 from gaoguangze111/Update-page-cheatsheet
Update links in page cheatsheet.md
2020-10-27 02:09:59 -07:00
Kubernetes Prow Robot d25fe29712 Merge pull request #24743 from gaoguangze111/Update-page-kubectl
Update links in page kubectl.md
2020-10-27 02:08:00 -07:00
Kubernetes Prow Robot ac70775aa9 Merge pull request #24737 from gaoguangze111/Update-Chinese-page-kubectl-overview
Update links in page content/zh/docs/reference/kubectl/overview.md
2020-10-27 02:05:59 -07:00
Kubernetes Prow Robot 2dc782ea42 Merge pull request #24732 from xieyanker/patch-1
Update "kubeclt" to "kubectl"
2020-10-27 02:03:59 -07:00
Kubernetes Prow Robot aea6b52fdc Merge pull request #24738 from xieyanker/patch-2
translate "result after merge"
2020-10-27 02:01:59 -07:00
Kubernetes Prow Robot e1d6a3a69a Merge pull request #24741 from xieyanker/patch-4
Fix format error
2020-10-27 01:59:59 -07:00
Kubernetes Prow Robot fab8f55981 Merge pull request #24742 from xieyanker/patch-5
Fix format error
2020-10-27 01:57:59 -07:00
Kubernetes Prow Robot e8a498ecb5 Merge pull request #24734 from gaoguangze111/Update-Chinese-Page-install-service-catalog-using-helm
Update link in page install-service-catalog-using-helm.md
2020-10-27 01:55:59 -07:00
Zhang Yong 5be352ab1b fix Dockerfile link 2020-10-27 16:24:24 +08:00
Yong Zhang 1e1c5bc5e2 Merge pull request #7 from kubernetes/master
merge
2020-10-27 15:45:52 +08:00
GoodGameZoo dcf5fd415d Update links in page docker-cli-to-kubectl.md 2020-10-27 00:17:32 -07:00
GoodGameZoo 558eb5c092 Update non localized links in page conventions 2020-10-26 23:56:15 -07:00
GoodGameZoo e0021447c6 Update links in page cheatsheet.md 2020-10-26 23:45:43 -07:00
GoodGameZoo 752f7501fe Update links in page kubectl.md 2020-10-26 23:31:49 -07:00
xieyanker 15c6e38991 Fix format error 2020-10-27 14:28:46 +08:00
xieyanker 976595da30 Fix format error 2020-10-27 14:23:10 +08:00
xieyanker 47e8badad8 Fix format error 2020-10-27 14:16:51 +08:00
xieyanker f5f7393ddb translate "result after merge" 2020-10-27 13:09:13 +08:00
GoodGameZoo 53115dc263 Update links in page content/zh/docs/reference/kubectl/overview.md 2020-10-26 20:59:07 -07:00
GoodGameZoo 428fe6f904 Update link in page install-service-catalog-using-helm.md 2020-10-26 20:20:36 -07:00
xieyanker 9a6b3d3e7d Update "kubeclt" to "kubectl" 2020-10-27 11:06:22 +08:00
Kubernetes Prow Robot baf9e185dd Merge pull request #24077 from kbhawkey/kb-cleanup-eval-style
cleanup, formatting and styling of volumes concept
2020-10-26 15:31:59 -07:00
Nate W 9a6731fc8b Copy updates
1. Copy updates to correct "container image manifests" reference to "container image index." (Fixes https://github.com/kubernetes/website/issues/23055)
2. Setting titles to sentence case throughout.

Signed-off-by: Nate W <nwaddington@cncf.io>
2020-10-26 15:19:21 -07:00
Laurence Man 36a42bf4a1 Update Calico description on 'Cluster Networking' page 2020-10-26 13:14:01 -07:00
Karen Bradshaw 3f5d599921 testing styling of resources, plugins, drivers 2020-10-26 14:04:55 -04:00
Kubernetes Prow Robot 1f433637fe Merge pull request #24720 from tengqm/fix-smoke-test
Fix smoke test doc
2020-10-26 05:37:02 -07:00
Kubernetes Prow Robot ee9e7e291d Merge pull request #24714 from zacharysarah/kcvirtualna
Add temporary banner for KCCNC NA 2020 virtual
2020-10-26 02:01:02 -07:00
Qiming Teng 79e2df20b0 Fix smoke test doc 2020-10-26 16:50:29 +08:00
Kubernetes Prow Robot 1b420ffd0f Merge pull request #24715 from WangXiangUSTC/patch-1
minor fixc pod-security-policy.md
2020-10-25 20:55:01 -07:00
Kubernetes Prow Robot 24ecb9df2d Merge pull request #24707 from howieyuen/zh-gce
[zh] translate docs/setup/production-environment/turnkey/gce.md
2020-10-25 20:53:01 -07:00
WangXiangUSTC 1f40f941c8 Update pod-security-policy.md 2020-10-26 11:33:42 +08:00
yuanhao eebd0d7cb8 [zh] translate docs/setup/production-environment/turnkey/gce.md 2020-10-26 10:59:11 +08:00
Zach Corleissen fbe9a593a0 Update en.toml 2020-10-25 14:55:56 -07:00
zacharysarah 59510913ab Add temporary banner for KCCNC NA 2020 virtual 2020-10-25 14:42:05 -07:00
Kubernetes Prow Robot b28083e601 Merge pull request #24700 from tengqm/improve-lsync
Improve the lsync script
2020-10-25 06:47:00 -07:00
Kubernetes Prow Robot fe005183f0 Merge pull request #24685 from mbelsky/mbelsky-patch-1
Reduce steps count to list the env vars
2020-10-25 04:21:00 -07:00
ramnar 177fb0d6f2 implementing review comments
implementing review comments
2020-10-25 16:05:29 +05:30
Kubernetes Prow Robot 58bcaffc84 Merge pull request #24699 from r0bj/fix_KubeSchedulerConfiguration
fix KubeSchedulerConfiguration syntax
2020-10-25 01:53:01 -07:00
Kubernetes Prow Robot c23f31bcec Merge pull request #24245 from tengqm/zh-style-guide
[zh] Add style guide for Chinese localization
2020-10-24 18:05:01 -07:00
Kubernetes Prow Robot b43db91ca0 Merge pull request #24662 from zhiguo-lu/zh-translate-tutorial-guestbook-logs-metrics-with-elk
[zh] translate tutorial guestbook-logs-metrics-with-elk
2020-10-24 18:03:00 -07:00
Kubernetes Prow Robot 69d74936ce Merge pull request #24705 from kangni/patch-1
Update cluster-intro.html
2020-10-24 06:47:01 -07:00
kangni aadf52491a Update cluster-intro.html
fix translate error
2020-10-24 17:12:51 +08:00
ramnar 18eb0bfc02 commands to create job and cronjob 2020-10-24 10:36:54 +05:30
Qiming Teng d80a20ea6a Improve the lsync script
This PR improves the lsync script so that it can handle directories
(recursively). For example, you can run the following command to find
the detailed changes that are out of sync:

```
./scripts/lsync content/zh/docs/concepts/_index.md
```

and you can run the following command to identify how many files are
out of sync under a given directory:

```
> ./scripts/lsync content/zh/docs/concepts/

content/en/docs/concepts/architecture/control-plane-node-communication.md        |  2 +-
 content/en/docs/concepts/architecture/controller.md                              | 10 ++++++++++
 content/en/docs/concepts/cluster-administration/logging.md                       |  4 ++--
 content/en/docs/concepts/cluster-administration/system-metrics.md                |  2 +-
 content/en/docs/concepts/configuration/pod-priority-preemption.md                |  2 +-
 content/en/docs/concepts/containers/runtime-class.md                             |  2 +-
 content/en/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins.md |  2 +-
 content/en/docs/concepts/extend-kubernetes/operator.md                           |  2 +-
 content/en/docs/concepts/extend-kubernetes/service-catalog.md                    |  2 +-
 content/en/docs/concepts/overview/kubernetes-api.md                              |  2 +-
 content/en/docs/concepts/overview/what-is-kubernetes.md                          |  3 +--
 content/en/docs/concepts/overview/working-with-objects/labels.md                 |  2 +-
 content/en/docs/concepts/scheduling-eviction/kube-scheduler.md                   |  4 ++--
 content/en/docs/concepts/services-networking/dual-stack.md                       |  2 +-
 content/en/docs/concepts/storage/ephemeral-volumes.md                            | 11 +++++------
 content/en/docs/concepts/storage/persistent-volumes.md                           |  2 +-
 content/en/docs/concepts/storage/storage-classes.md                              |  2 +-
 content/en/docs/concepts/storage/volumes.md                                      |  5 ++---
 content/en/docs/concepts/workloads/_index.md                                     |  2 +-
 content/en/docs/concepts/workloads/controllers/replicaset.md                     |  4 ++--
 content/en/docs/concepts/workloads/pods/_index.md                                |  4 ++--
 content/en/docs/concepts/workloads/pods/pod-lifecycle.md                         |  3 ++-

```
2020-10-24 09:31:49 +08:00
rob d71c214426 fix KubeSchedulerConfiguration syntax 2020-10-23 12:10:38 -10:00
luzg 98d9ac58d2 [zh] translate tutorial guestbook-logs-metrics-with-elk, fix 24505
make change acording to tengqm's comment and rebase to 24675
change against tengqm's second round comment
2020-10-23 21:08:35 +08:00
Kubernetes Prow Robot 0a642282e5 Merge pull request #24690 from Arhell/fix-link
fix Docker file link
2020-10-23 06:03:58 -07:00
Kubernetes Prow Robot 04091fccac Merge pull request #24688 from guiadco/fix-24683
fix-24683
2020-10-23 04:25:45 -07:00
Max Belsky 8cc80bf469 Update content/en/docs/tasks/inject-data-application/define-environment-variable-container.md
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-10-23 10:51:14 +03:00
colin 4683be51f3 Update certificates.md 2020-10-23 10:24:28 +08:00
Arhell 8ad50bdf5e fix Docker file link 2020-10-23 01:10:48 +03:00
Michael Hofer b0bf75ccad Docs: Restore PR24605, update containerd systemd configuration (#24687) 2020-10-22 10:39:35 -07:00
guiadco 6ed67daf6e fix-24683 2020-10-22 19:32:08 +02:00
Kubernetes Prow Robot 167a19e0b8 Merge pull request #24682 from DKImprowised/patch-1
Update configure-access-multiple-clusters.md
2020-10-22 06:47:35 -07:00
Noah Kantrowitz fcdcfba359 Containers don't get their own CPU (#24659)
* 🐛 Containers don't get their own CPU

This is overly broad, in all default setup containers all share the underlying host CPUs so I wouldn't say they "have their own".

* Change wording to "share of CPU" to more closely reflect reality.

Co-authored-by: Tim Bannister <tim@scalefactory.com>

Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-10-22 06:45:36 -07:00
Kubernetes Prow Robot ab2ba4d533 Merge pull request #24680 from tengqm/links-reference
Fix links in reference section
2020-10-22 06:43:35 -07:00
Max Belsky dccbc5f3cd Reduce steps count to list the env vars 2020-10-22 16:42:36 +03:00
Kubernetes Prow Robot fe90f65e6a Merge pull request #24677 from tengqm/links-concepts
Fix links in concepts section
2020-10-22 06:41:35 -07:00
Kubernetes Prow Robot b2c714b279 Merge pull request #24678 from tengqm/links-tasks
Fix links in the tasks section
2020-10-22 02:09:35 -07:00
dharmendraImprowised d8912d5da1 Update configure-access-multiple-clusters.md 2020-10-22 14:28:47 +05:30
Kubernetes Prow Robot 6769ae6954 Merge pull request #24679 from tengqm/links-contribute
Fix links in contribute section
2020-10-22 01:11:35 -07:00
Kubernetes Prow Robot 7a31c1045b Merge pull request #24681 from tengqm/links-tutorials
Fix links in tutorials section
2020-10-22 01:05:35 -07:00
Qiming Teng 774594bf15 Fix links in tutorials section 2020-10-22 15:27:40 +08:00
Qiming Teng 00fd1a68f2 Fix links in reference section 2020-10-22 15:19:30 +08:00
Qiming Teng 972b2c5c40 Fix links in contribute section 2020-10-22 15:11:11 +08:00
Qiming Teng 740eb340d4 Fix links in the tasks section
This PR fixes links where the target is a redirection. The special case
is about minikube, which has been deleted recently. The dangling link
now points to `/docs/tasks/tools/` which makes no sense. This PR change
the target for `minikube` to `https://minikube.sigs.k8s.io/docs/`.
2020-10-22 15:01:45 +08:00
Kubernetes Prow Robot f34f99d4f4 Merge pull request #24675 from tengqm/fix-code-lang-type
Tweak coding styles for guestbook logging tutorial
2020-10-21 23:45:35 -07:00
Qiming Teng 070023b24a Fix links in concepts section 2020-10-22 14:24:56 +08:00
Qiming Teng cebcdf5fca Tweak coding styles for guestbook logging tutorial 2020-10-22 11:54:28 +08:00
Kubernetes Prow Robot 60ac962ff7 Merge pull request #24671 from elmiko/update-scale-subresource
fix case for scale subresource fields
2020-10-21 11:06:21 -07:00
Michael McCune de655df255 fix case for scale subresource fields
This change corrects the capitalization for the code blocks referring to
`statusReplicasPath` and `labelSelectorPath` to make the descriptive
text consistent with the code values.
2020-10-21 12:37:58 -04:00
Kubernetes Prow Robot 288ebeed74 Merge pull request #24668 from remyleone/quick_fix
fix typo in file name
2020-10-21 08:40:20 -07:00
Rémy Léone 38821d7a4f fix typo in file name 2020-10-21 17:28:12 +02:00
Kubernetes Prow Robot 09f5c42d59 Merge pull request #24619 from neha-viswanathan/24380-remove-k8s-incubator
update kubernetes-incubator references
2020-10-21 07:28:20 -07:00
Tim Bannister 4e0b662954 Tweak docs about Kubernetes API versions
Co-authored-by: Karen Bradshaw <kbhawkey@gmail.com>
2020-10-21 15:07:46 +01:00
Kubernetes Prow Robot df0f955bca Merge pull request #24527 from sftim/20201012_controller_concept_provide_direct_control_example
Provide example of direct control for Controller concept
2020-10-21 06:32:20 -07:00
Kubernetes Prow Robot 4a82c0be93 Merge pull request #24663 from WangXiangUSTC/patch-1
docs: fix typo
2020-10-21 02:42:20 -07:00
WangXiangUSTC b9bad4ce3c Update pod-security-policy.md 2020-10-21 16:13:36 +08:00
Kubernetes Prow Robot b85afa0989 Merge pull request #23804 from MrZhaoAtBJ/patch-1
Update multiple-zones.md
2020-10-20 23:12:20 -07:00
Neha Viswanathan a8b6551c22 update kubernetes-incubator references 2020-10-20 23:10:28 -07:00
Qiming Teng 2ff3d1f7d3 Improve ServiceAccount administration doc
This PR fixes some nits in the doc and slightly revised the content to
conform to content guidelines.
2020-10-21 10:47:08 +08:00
Kubernetes Prow Robot 1996d94faa Merge pull request #24634 from tengqm/fix-24503
[zh] Translate configure-gmsa into Chinese
2020-10-20 18:28:19 -07:00
Kubernetes Prow Robot dced70fe90 Merge pull request #22745 from giovanism/patch-1
ID Fix link emphasize
2020-10-20 17:14:19 -07:00
Kubernetes Prow Robot dd4058159f Merge pull request #24171 from jimangel/update-docs-permissions
cleanup docs owners
2020-10-20 17:10:19 -07:00
Kubernetes Prow Robot 5384548617 Merge pull request #24534 from sftim/20201012_use_overviews_in_reference_section
Use overviews in reference section
2020-10-20 15:54:19 -07:00
Tim Bannister 78351ecaf5 Transfer “Controlling Access to the Kubernetes API” to the Concepts section
Readers from several different backgrounds will find it useful to know
about how Kubernetes controls access to its API. Promote this overview
to the Security subsection of Concepts.
2020-10-20 23:41:56 +01:00
Tim Bannister 3edb970570 Move API overview to be a Docsy section overview 2020-10-20 23:41:54 +01:00
Kubernetes Prow Robot 18634747c9 Merge pull request #23820 from kbhawkey/kb-adjust-table-margin
adjust table margin bottom
2020-10-20 15:30:21 -07:00
Kubernetes Prow Robot dca2fe651a Merge pull request #24530 from sftim/20201012_revise_getting_started_container_runtimes
Revise “Container runtimes” page in Getting Started section
2020-10-20 15:28:19 -07:00
Tim Bannister a766d28b30 Provide example of direct control for Controller concept 2020-10-20 23:26:46 +01:00
Kubernetes Prow Robot 110cf67256 Merge pull request #24644 from userravs/patch-1
Fix container-runtimes.md repos Debian/Ubuntu
2020-10-20 15:10:20 -07:00
Kubernetes Prow Robot f7fe196547 Merge pull request #23794 from kbhawkey/kb-updated-api-redirect
add v1.18 api ref to redirects
2020-10-20 15:06:19 -07:00
Kubernetes Prow Robot 216f9569bb Merge pull request #23708 from habibrosyad/gh-23660
Improve maintainability of Case Studies styling
2020-10-20 15:04:19 -07:00
Tim Bannister 0c9a8e8242 List container runtimes in alphabetical order 2020-10-20 22:56:01 +01:00
Tim Bannister 6b0165e7b5 Improve advice for configuring PGP keys for APT
The Debian tool, APT, lets you write GPG keyrings into a file per
trusted source, inside /etc/apt/trusted.gpg.d

Recommend that approach, as it is easier to manage.
2020-10-20 22:54:31 +01:00
Tim Bannister 0f0e87ac53 Revise “Container runtimes” getting started guide
- Reword page introduction.
- Match headings to contents; before, headings were sometimes followed
  first by unrelated text and then, with no clear divider, text that did
  not relate to the heading.
- Remove Fracti link (not in line with content guide).
2020-10-20 22:54:30 +01:00
Kubernetes Prow Robot 7286b30bef Merge pull request #24649 from wasosa/patch-1
Fix small typo: is updates --> is updated
2020-10-20 14:32:23 -07:00
Kubernetes Prow Robot ac8ce96c08 Merge pull request #24653 from jpetazzo/clarify-csr-cluster-signing-duration
Clarify expiration of certificates signed by kube-controller-manager
2020-10-20 14:28:19 -07:00
Kubernetes Prow Robot 5bc1e3cdb8 Merge pull request #23770 from tengqm/improve-resourcequota-concept
Improve resource quota concepts
2020-10-20 14:16:19 -07:00
Jerome Petazzoni 1932647552 Clarify expiration/lifetime of certificates signed by kube-controller-manager
The current wording of the documentation suggests that the duration/expiration
of the certificates can be changed by asking a specific time in the CSR. While
it's technically possible to specify a duration (e.g. as a custom annotation),
there is no agreed-upon method to do so, and the built-in signer uses a fixed
expiration time anyway.

This clarifies the situation.

See kubernetes/kubernetes#92678 for discussion.

Signed-off-by: Jerome Petazzoni <jerome.petazzoni@gmail.com>
2020-10-20 22:37:25 +02:00
Kubernetes Prow Robot df5f80f69b Merge pull request #24604 from mdgrotheer/patch-1
Update authentication.md
2020-10-20 11:48:19 -07:00
Jordan Liggitt 92f837d4b2 Clarify external kubelet server approver requirements 2020-10-20 14:09:35 -04:00
Qiming Teng ffd3b623e0 [zh] Translate configure-gmsa into Chinese 2020-10-20 21:47:11 +08:00
markruler 5819f16c8a Update i18n strings and ordering the entries 2020-10-20 20:59:30 +09:00
Kubernetes Prow Robot ea1dfd2384 Merge pull request #24594 from tengqm/improve-csr
Style tweaking for CSR reference page
2020-10-20 03:10:07 -07:00
Walter Sosa 0948cf981e Fix small typo: is updates --> is updated 2020-10-19 23:54:53 -07:00
Kubernetes Prow Robot 362b287d64 Merge pull request #24600 from howieyuen/zh-kubeadm-impl-detail
[zh] translate /docs/reference/setup-tools/kubeadm/implementation-detail
2020-10-19 20:52:07 -07:00
yuanhao 983a2e08f0 [zh] translate /docs/reference/setup-tools/kubeadm/implementation-details 2020-10-20 09:42:02 +08:00
Qiming Teng 92a09b23fa Style tweaking for CSR reference page 2020-10-20 09:08:54 +08:00
Kubernetes Prow Robot cf9bf7819f Merge pull request #23539 from lovebaby979/br5
update README-ko.md
2020-10-19 13:55:18 -07:00
Reymer Vargas 991f2f6316 Fix container-runtimes.md repos Debian/Ubuntu
Updating the syntax on redirection to repo files in Ubuntu as in Debian documentation, since the syntax requires privileges to perform the redirection, removing double quotes from apt Sources files, to avoid issues with apt while reading source packages.
2020-10-19 14:07:27 -06:00
Jacob Floyd 427c96e645 Fix minor typo in StatefulSets docs
`s/tpycally/typically/`
2020-10-19 13:29:13 -05:00
Kubernetes Prow Robot 3121a9a581 Merge pull request #24636 from tengqm/fix-2979
Fix reference to API groups
2020-10-19 11:28:14 -07:00
Kubernetes Prow Robot d76ef36c46 Merge pull request #24635 from tengqm/update-api-ref
Update API reference to contain API group and versino info
2020-10-19 09:02:14 -07:00
Kubernetes Prow Robot b8a8834cda Merge pull request #24637 from Arhell/remove-indent
remove indent
2020-10-19 07:26:14 -07:00
Kubernetes Prow Robot 18b69c7bc4 Merge pull request #24585 from JornShen/add_kubeadm_to_install_tool
Add kubeadm to “Install Tools”
2020-10-19 05:42:13 -07:00
Kubernetes Prow Robot cb6885545f Merge pull request #24229 from sftim/20200929_load_sweetalert_async
Revise copy-and-paste helper for codenew shortcode
2020-10-19 04:48:14 -07:00
Arhell 1d46124807 remove indent 2020-10-19 14:18:52 +03:00
Kubernetes Prow Robot 45e139f12f Merge pull request #24631 from tengqm/fix-24502
[zh] Translate upgrading-windows-nodes
2020-10-19 04:00:13 -07:00
Kubernetes Prow Robot 96e3314288 Merge pull request #24630 from tengqm/fix-24501
[zh] Translate adding-windows-node
2020-10-19 03:46:13 -07:00
Qiming Teng 0995845195 [zh] Translate adding-windows-node 2020-10-19 17:40:26 +08:00
jornshen c24b5ef19d Add kubeadm to “Install Tools” 2020-10-19 16:16:58 +08:00
Qiming Teng 49b18b3b11 Fix reference to API groups 2020-10-19 15:19:22 +08:00
Qiming Teng 588bed76c0 Update API reference to contain API group and versino info
The updated reference is generated using the https://github.com/kubernetes-sigs/reference-docs/pull/172
change.
2020-10-19 15:01:42 +08:00
Kubernetes Prow Robot bb39cfb077 Merge pull request #24584 from lianghao208/master
update traslation: safely-drain-node
2020-10-18 22:32:13 -07:00
Qiming Teng 3a19c6b7bc [zh] Translate upgrading-windows-nodes 2020-10-19 12:01:23 +08:00
M. Habib Rosyad 4d9ee76ace Improve maintainability of Case Studies styling
- Add quote and lead shortcode
- Add case study metadata in front matter (to generate page)
- Allow case study page to inherit similar styles from a centralised CSS file.
2020-10-19 10:10:45 +07:00
Qiming Teng a42b440589 Improve resource quota concepts
Fix some inaccurate and/or out-dated content in the resource quota
concept page.
2020-10-19 09:05:37 +08:00
Kubernetes Prow Robot 9e862337b9 Merge pull request #23863 from tengqm/split-server-side-apply
Move Server Side Apply into a separate reference page
2020-10-18 17:42:14 -07:00
Kubernetes Prow Robot c357def80d Merge pull request #24626 from remyleone/configure_access_to_multiple_clusters
translate configure-access-multiple-clusters to French
2020-10-18 12:02:13 -07:00
Rémy Léone 877c115bab translate configure-access-multiple-clusters to French 2020-10-18 18:19:31 +02:00
Kubernetes Prow Robot 1a389f5674 Merge pull request #24625 from remyleone/list_container
translate list-all-running-container-images to French
2020-10-18 07:56:12 -07:00
Rémy Léone 596ac67cf5 translate list-all-running-container-images to French 2020-10-18 16:43:59 +02:00
Kubernetes Prow Robot e028d3d81c Merge pull request #24580 from zhiguo-lu/zh-translate-reference-certificate-signing-requests
Translate reference/certificate-signing-requests.md into Chinese and fix a bug in origin file, #24065
2020-10-18 01:46:12 -07:00
Kubernetes Prow Robot b48179c2a5 Merge pull request #24383 from WilliamChang80/master
Add description on concept overview ID page
2020-10-18 01:26:13 -07:00
Kubernetes Prow Robot 23f3c9e750 Merge pull request #23535 from lovebaby979/br1
update link
2020-10-18 01:24:13 -07:00
Kubernetes Prow Robot 7abf35915d Merge pull request #23522 from VladMasarik/patch-2
Updated ingress.md TLS section
2020-10-17 18:48:13 -07:00
zhanwang 018cc1a617 update fr site new value (#22210)
* update fr site new value

* Update i18n/fr.toml

Co-authored-by: Tim Bannister <tim@scalefactory.com>

Co-authored-by: Rémy Léone <remy.leone@gmail.com>
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-10-17 18:38:13 -07:00
Kubernetes Prow Robot 9ab3b56bec Merge pull request #23151 from wangxy518/patch-6
Update volume-snapshots.md
2020-10-17 14:42:12 -07:00
Kubernetes Prow Robot a965ab9c08 Merge pull request #24611 from h4ghhh/device-plugin-new2
modify device-plugins.md
2020-10-17 11:12:12 -07:00
Kubernetes Prow Robot 55582e1f70 Merge pull request #24533 from sftim/20201012_learning_environment_redirect
Redirect "Learning environment" to Install Tools task
2020-10-17 10:52:13 -07:00
Kubernetes Prow Robot 907696da61 Merge pull request #24605 from mythi/containerd-systemd
docs: update containerd systemd configuration
2020-10-17 10:48:12 -07:00
Kubernetes Prow Robot 62407cef77 Merge pull request #24587 from sftim/20201015_fix_glossary_containers_link
Fix glossary containers link
2020-10-17 10:46:12 -07:00
Kubernetes Prow Robot 27df2ed196 Merge pull request #24590 from msau42/prebind
storageclass name in pvc needs to be empty to match pv
2020-10-17 10:42:12 -07:00
Kubernetes Prow Robot dcf0456dbe Merge pull request #24236 from Yoshiki0705/rbac-ja
Translate reference/access-authn-authz/rbac/ into Japanese
2020-10-17 10:20:13 -07:00
Kubernetes Prow Robot 8e76fd027d Merge pull request #24426 from sftim/20201007_add_portuguese_strings
Add missing Portuguese strings
2020-10-17 08:14:12 -07:00
Kubernetes Prow Robot ff44a14437 Merge pull request #24569 from climent/patch-2
Update pod-lifecycle.md
2020-10-17 08:02:12 -07:00
Kubernetes Prow Robot 54d00b71fc Merge pull request #24457 from oomichi/es-fix-output-of-rolling-status
es: Fix output of 'kubectl rollout status'
2020-10-17 08:00:13 -07:00
h4ghhh 81a6a8e5bd modify device-plugins.md 2020-10-17 14:32:23 +08:00
rootlh aef91ae2e8 Update safely-drain-node.md 2020-10-17 11:34:44 +08:00
Kubernetes Prow Robot 253eff2827 Merge pull request #24562 from shizhyy/patch-1
fix typo "跟据" to "根据"
2020-10-16 19:44:12 -07:00
Kubernetes Prow Robot 243fc7dad3 Merge pull request #24588 from sftim/20201015_fix_fr_page_post_docsy
Replace legacy capture shortcodes
2020-10-16 13:09:01 -07:00
Michelle Au b01c0a2f6a storageclass name in pvc needs to be empty to match empty storageclassname on pv 2020-10-16 11:51:44 -07:00
Mikko Ylinen b3d44d7f21 docs: update containerd systemd configuration
systemd_cgroup = true in plugins."io.containerd.grpc.v1.cri" is no longer
supported by containerd 1.3.x. Enabling it causes containerd to skip loading
the cri plugin.

Add the preferred setting to the container runtime configuration documentation.

Ref: https://github.com/containerd/containerd/issues/4574

Signed-off-by: Mikko Ylinen <mikko.ylinen@intel.com>
2020-10-16 20:25:04 +03:00
Kubernetes Prow Robot f4bb5ff94d Merge pull request #24601 from chinayin/patch-2
fix wrongly words
2020-10-16 10:11:25 -07:00
Kubernetes Prow Robot 0075ace043 Merge pull request #24563 from piaoliangkb/fix-link-err
Change outdated link in the concept page of "scheduling framework"
2020-10-16 09:51:27 -07:00
Matthew Grotheer 519f8ec5bc Update authentication.md
Small grammatical corrections
2020-10-16 09:20:23 -07:00
luzg 5dab375fd3 Translate reference/certificate-signing-requests.md into Chinese and fix a bug in origin file, 24065
make change according to Tengqm's comment
2020-10-16 22:27:15 +08:00
Kubernetes Prow Robot 4d7cc18c3c Merge pull request #24576 from ljnaresh/bug-21790
Move Pod Overhead concept inside Scheduling & Eviction
2020-10-16 05:03:25 -07:00
Kubernetes Prow Robot 225747fb73 Merge pull request #24596 from tengqm/fix-lsync-script
Fix issue in lsync script
2020-10-16 03:09:25 -07:00
Kubernetes Prow Robot a0e75c3e8d Merge pull request #24573 from kbhawkey/docsy-update-submodule-10-14-20
updating docsy theme submodule
2020-10-16 02:39:25 -07:00
Lei 47a6032057 fix wrongly words 2020-10-16 15:58:58 +08:00
Kubernetes Prow Robot 6d050e326b Merge pull request #24592 from kubernetes/dev-1.19-ko.3
Third Korean l10n work for release-1.19
2020-10-16 00:55:25 -07:00
Kubernetes Prow Robot 505cf30788 Merge pull request #24545 from liggitt/warning
Expand warning customization info
2020-10-15 19:01:25 -07:00
Qiming Teng bfb4601a15 Fix issue in lsync script
According to 'git diff --help', the `--exist-code` flag can be used to
ensure that the command returns 0 when no difference is found.
2020-10-16 09:28:46 +08:00
June Yi a6566dc277 Third Korean l10n work for release-1.19
- Fix issue with broken links in ko documents (#24190)
- Fix issue with links to already translated ko documents (#24158)
- Translate docs/reference/kubectl/docker-cli-to-kubectl/ into Korean (#24131)
- Translate docs/setup/production-environment/tools/kubespray.md in Korean (#24144)
- Translated titles into korean (#24394)
- DNS subdomain translation corrected (#24393)
- Update ko/docs/concepts/overview/working-with-objects/common-labels/ (#24370)
- Translate tasks/job/coarse-parallel-processing-work-queue in Korean (#24218)
- Update outdated files in the dev-1.19-ko.3 branch (#24151)
- Add missing dot on job.md (#24084)

Co-authored-by: chhanz <han0495@gmail.com>
Co-authored-by: Yuuraa <yoorachoi8937@gmail.com>
Co-authored-by: sushil <sushilktiwari.st@gmail.com>
Co-authored-by: June Yi <june.yi@samsung.com>
Co-authored-by: Jerry Park <jaehwa@gmail.com>
Co-authored-by: Jihoon Seo <46767780+jihoon-seo@users.noreply.github.com>
Co-authored-by: Jonghun Park <jonghun.park.194@gmail.com>
Co-authored-by: Leo <leo.lab001@gmail.com>
2020-10-16 10:02:20 +09:00
Kubernetes Prow Robot fc73f29535 Merge pull request #21680 from CriaHu/hyq-612
fix broken link: http://kubernetes.io/docs/home/contribute/page-templ…
2020-10-15 12:01:25 -07:00
Kubernetes Prow Robot 2e1c86419a Merge pull request #24556 from leeyspaul/update-content-es-docs-concepts-workloads-pods-pods-preset
Update content/es/docs/concepts/workloads/pods/podspreset.md
2020-10-15 09:38:24 -07:00
Tim Bannister 266882bcd4 Replace legacy capture shortcodes
Fixup to generate pages without using legacy capture statements
2020-10-15 17:00:00 +01:00
Kubernetes Prow Robot 3130c64e3a Merge pull request #24586 from neha-viswanathan/update-blog
fix link in Kubernetes blog
2020-10-15 08:48:23 -07:00
Tim Bannister 08ef8f205c Reinstate link to container concept via glossary
This reverts commit 74dee75144.
2020-10-15 12:00:00 +01:00
Tim Bannister a6bd225751 Link from containers term to concept
Update full link for "container" glossary definition
2020-10-15 12:00:00 +01:00
Neha Viswanathan 9aa7e48755 fix links in Kubernetes blog 2020-10-15 03:36:56 -07:00
Kubernetes Prow Robot 3c1aca0f55 Merge pull request #24052 from dougsland/extended
README.md - Add notes about hugo extended version
2020-10-15 03:28:24 -07:00
Kubernetes Prow Robot 5f3e8d1efb Merge pull request #24583 from neha-viswanathan/18889-fix-blog
fix Kubernetes blog
2020-10-15 02:32:24 -07:00
Neha Viswanathan 1b5f6bb926 fix Kubernetes blog 2020-10-15 02:22:36 -07:00
Kubernetes Prow Robot 9749d02404 Merge pull request #24579 from neha-viswanathan/24459-fix-hyperlink
update link to container concepts
2020-10-15 02:18:24 -07:00
LiangHao 77d853b7e3 update traslation: safely-drain-node 2020-10-15 16:50:39 +08:00
Kubernetes Prow Robot 9636cbb64b Merge pull request #24581 from lianghao208/master
fix typo
2020-10-15 01:36:24 -07:00
LiangHao aadb0faa49 fix typo
fix typo
2020-10-15 16:12:59 +08:00
Kubernetes Prow Robot a2659dc137 Merge pull request #24578 from Tej-Singh-Rana/k8s-tej
Replaced URL
2020-10-15 01:10:24 -07:00
Tej-Singh-Rana 0cef76025f Replaced URL 2020-10-15 13:26:59 +05:30
Kubernetes Prow Robot 7040e84892 Merge pull request #24575 from Arhell/fix-typo
fix typo
2020-10-15 00:52:24 -07:00
Kubernetes Prow Robot f5b07d0e14 Merge pull request #23737 from sftim/20200907_add_workload_concept_introduction
Add introduction to Workloads concept
2020-10-15 00:20:24 -07:00
Neha Viswanathan 74dee75144 update link to container concepts 2020-10-14 22:25:57 -07:00
Tej-Singh-Rana 856ea6292e replaced URL 2020-10-15 10:12:25 +05:30
Kubernetes Prow Robot dacb5a8aef Merge pull request #24571 from annajung/master
Add a technical review requirement for feature documentation
2020-10-14 18:33:50 -07:00
ljnaresh 64085d63a8 Move Pod Overhead concept inside Scheduling & Eviction 2020-10-15 01:13:17 +02:00
Arhell d3d574f28d fix typo 2020-10-15 01:46:13 +03:00
Anna Jung edac0b3c2e Modify to change repo names to hyperlinks 2020-10-14 12:15:40 -05:00
Karen Bradshaw 27afc0b90d updating docsy theme submodule 2020-10-14 12:44:23 -04:00
Anna Jung a2e9bddd90 Add a technical review requirement for feature documentation 2020-10-14 11:10:32 -05:00
Jesus Climent e6c7f7eadf Update pod-lifecycle.md
Updated the table limits so that values do not get truncated.
2020-10-14 10:14:22 -04:00
Kubernetes Prow Robot ad35d64797 Merge pull request #24557 from tengqm/fix-24542
Add links to dangling kubeadm reference pages
2020-10-14 06:49:55 -07:00
Saintmalik c6e165f5af Fix broken url in docs 2020-10-14 11:52:03 +00:00
piaoliangkb f566c22e69 Change outdated link
Change the outdated link of "design proposal of the scheduling framework", cause that repo structure has been changed.
2020-10-14 19:04:59 +08:00
Kubernetes Prow Robot e0e2c7155f Merge pull request #24566 from pyaillet/fix/ingress-fr-translation
fix: upgrade apiVersion and content of Ingress resource
2020-10-14 02:23:55 -07:00
Pierre-Yves Aillet 07535768ff fix: upgrade apiVersion and content of Ingress resource 2020-10-14 11:03:14 +02:00
Kubernetes Prow Robot d04f8c4533 Merge pull request #24147 from Rafficer/fix-typo
Fix typo in german install-kubernetes.md
2020-10-14 01:17:55 -07:00
Kubernetes Prow Robot e87879d6db Merge pull request #24453 from oomichi/ko-fix-output-of-rolling-status
ko: Fix output of 'kubectl rollout status'
2020-10-14 00:25:55 -07:00
shizhyy de38733c29 fix typo "跟据" to "根据" 2020-10-14 14:33:51 +08:00
Kubernetes Prow Robot c071665f15 Merge pull request #24449 from habibrosyad/k/w-cs-ko
Clean up case study images in content/ko/case-studies
2020-10-13 23:07:55 -07:00
Kubernetes Prow Robot e5bcd3b9b3 Merge pull request #24510 from tengqm/zh-sync-ingress-change
[zh] Sync changes to Ingress example
2020-10-13 21:45:54 -07:00
Kubernetes Prow Robot 8ee3f5396f Merge pull request #24508 from tengqm/zh-move-script
[zh] Sync changes to script location
2020-10-13 21:43:54 -07:00
Kubernetes Prow Robot 2a2da9100b Merge pull request #24559 from ushuz/patch-1
Fix zh examples for topology.kubernetes.io
2020-10-13 21:41:54 -07:00
John Hu e83479d706 Update example for topology.kubernetes.io 2020-10-14 11:36:06 +08:00
Qiming Teng 0c3f9a53e0 Add links to dangling kubeadm reference pages 2020-10-14 11:32:19 +08:00
Kubernetes Prow Robot 75e5fe45e9 Merge pull request #24543 from howieyuen/zh-kubeadm
[zh] translate kubeadm commands which are missing in zh version
2020-10-13 18:27:54 -07:00
Kubernetes Prow Robot 846d41aeaa Merge pull request #24515 from howieyuen/zh-health-checks
[zh] translate docs/reference/using-api/health-checks.md
2020-10-13 18:25:54 -07:00
Paul Lee 5c2873a552 initial pass with moving around content, capitalization, formats 2020-10-13 11:58:29 -07:00
Kubernetes Prow Robot ed12016993 Merge pull request #24552 from bassambst/patch-1
Fix typo in Kubernetes docs
2020-10-13 11:58:27 -07:00
Bassam Bsata d32c7bba85 Remove unintentional \n 2020-10-14 02:51:59 +08:00
Paul Lee 4a04fe49c6 add feature state 2020-10-13 11:36:02 -07:00
Kubernetes Prow Robot e9f082222f Merge pull request #24494 from howieyuen/zh-pod-link
[zh] correct broken link and sync from EN version
2020-10-13 11:22:27 -07:00
Tim Bannister 6138d83895 Set code owners for /.github
Writes into /.github/workflows can provide privilege escalation, so lock down
access.
2020-10-13 19:18:50 +01:00
Kubernetes Prow Robot 5857387107 Merge pull request #24149 from sftim/20200926_set_priority_for_key_pages
Set sitemap priority for key pages
2020-10-13 10:44:27 -07:00
Kubernetes Prow Robot c7441cd62f Merge pull request #24544 from willseeyou/patch-2
fix typo in concepts/services-networking/dns-pod-service.md
2020-10-13 10:20:27 -07:00
Bassam Bsata ce6d69cc31 Update configure-java-microservice.md 2020-10-14 01:15:19 +08:00
Jordan Liggitt eb3970271b Expand warning customization info 2020-10-13 09:09:47 -04:00
Yoshiki Fujiwara 156c3a5d89 Update content/ja/docs/reference/access-authn-authz/rbac.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-10-13 20:59:11 +09:00
Yoshiki Fujiwara f6fb2df431 Update content/ja/docs/reference/access-authn-authz/rbac.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-10-13 20:58:54 +09:00
Yoshiki Fujiwara ccc283fa09 Update content/ja/docs/reference/access-authn-authz/rbac.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-10-13 20:58:37 +09:00
Yoshiki Fujiwara 1f8892e4cc Update content/ja/docs/reference/access-authn-authz/rbac.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-10-13 20:58:22 +09:00
Yoshiki Fujiwara 7f32bfe0aa Update content/ja/docs/reference/access-authn-authz/rbac.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-10-13 20:58:07 +09:00
Yoshiki Fujiwara 7614a62078 Accept suggestion for "オプトアウト"
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-10-13 20:57:44 +09:00
yuanhao 2bbaefb7c0 translate kubeadm commands which are missing in zh version 2020-10-13 18:56:45 +08:00
Amos Chu ad13389bf7 fix typo in content/en/docs/concepts/services-networking/dns-pod-service.md 2020-10-13 17:22:27 +08:00
Kubernetes Prow Robot 3ca837474b Merge pull request #24026 from johscheuer/remove-cni-alpha-warning
Remove CNI alpha warning
2020-10-13 01:42:26 -07:00
Johannes M. Scheuermann c3a9924bbf Make the CNI usage more accurate 2020-10-13 07:22:28 +02:00
Kubernetes Prow Robot 720812a0ce Merge pull request #23755 from sftim/20200908_revise_task_safely_drain_node
Revise node draining task page
2020-10-12 22:14:26 -07:00
Kubernetes Prow Robot c7bc04463a Merge pull request #23873 from matt-sm/patch-1
Update horizontal-pod-autoscale-walkthrough.md
2020-10-12 21:42:26 -07:00
Matt Smith c3e87ab296 Update horizontal-pod-autoscale-walkthrough.md 2020-10-13 12:51:26 +11:00
Kubernetes Prow Robot 59ee6ed38d Merge pull request #24535 from mbbroberg/steering-blog
Steering Committee blog post
2020-10-12 18:49:22 -07:00
Matthew Broberg 9d3390d699 Steering Committee blog post
- PRing this in to help the Upstream Marketing team with this article.
- Correction of emeritus committee members.
- Includes clarification to show that Dims is a returning committee member & switching "existing members" to "continuing members."
2020-10-12 20:44:42 -05:00
Kubernetes Prow Robot 0661d65a18 Merge pull request #24076 from neolit123/1.20-add-link-in-kubeadm-config
kubeadm: improve links and information around using the config file
2020-10-12 18:11:22 -07:00
Qiming Teng ff6b8edc5b Move Server Side Apply into a separate reference page
"Server Side Apply" is a big topic that warrants a dedicated page on it.
Its current content is 400+ lines in the `api-concepts` page, kind of
hijacking the "api-concepts" for a standalone feature.

This PR proposes a separation for maintainability.
2020-10-13 08:56:08 +08:00
Kubernetes Prow Robot 2b9b86abb4 Merge pull request #21268 from mbroz2/MPGuideInConfig
Add MP Interactive Tutorial to Config Section
2020-10-12 17:49:22 -07:00
Kubernetes Prow Robot 4855e8828b Merge pull request #24531 from sftim/20201012_remove_rkt
Remove rkt
2020-10-12 17:47:22 -07:00
Kubernetes Prow Robot 9b8bf10f3a Merge pull request #24402 from SumoLogic/master
Add explicit info about pod limits being applied to requests
2020-10-12 17:39:22 -07:00
Kubernetes Prow Robot 6a2dae1579 Merge pull request #24262 from gjtempleton/Configurable-Scaling-Example-Clarification
Clarify HPA Scaling Policies
2020-10-12 17:37:22 -07:00
Kubernetes Prow Robot 19e1b54436 Merge pull request #23404 from 2rs2ts/patch-1
Fix ambiguity around behavior of preStop hook
2020-10-12 17:27:22 -07:00
Kubernetes Prow Robot caa4490191 Merge pull request #23128 from beccabau/patch-1
grammatical changes to resource metrics pipeline
2020-10-12 17:25:22 -07:00
Kubernetes Prow Robot 45372766f9 Merge pull request #23838 from consideRatio/patch-3
Make docs/reference/scheduling/config focus on v1beta1 over alpha versions
2020-10-12 17:21:22 -07:00
Kubernetes Prow Robot 5ea5053f2e Merge pull request #23672 from bebyx/patch-1
Add important note about expose port
2020-10-12 17:19:22 -07:00
Kubernetes Prow Robot 65540d14b2 Merge pull request #24450 from annajung/master
Update PR template to include a requirment for release related docs
2020-10-12 17:15:22 -07:00
Kubernetes Prow Robot d853b50d6f Merge pull request #24405 from T0MASD/patch-1
Update managing-tls-in-a-cluster.md
2020-10-12 17:13:22 -07:00
Kubernetes Prow Robot ce8bfdd50e Merge pull request #24344 from bnutt/bnutt/add_missing_aws_ld_annotation
Add missing annotation in en/docs/concepts/services-networking/service.md
2020-10-12 17:11:22 -07:00
Kubernetes Prow Robot aa426328ab Merge pull request #24101 from ldynia/patch-1
changing image to nginx because game.example/demo-game does not exist
2020-10-12 17:09:24 -07:00
Kubernetes Prow Robot 83bd5b6915 Merge pull request #24372 from danishprakash/patch-1
content/_posts: point to correct changelog link (v1.15)
2020-10-12 17:07:22 -07:00
Kubernetes Prow Robot e6979ce921 Merge pull request #24439 from climent/patch-1
Update pod-lifecycle.md
2020-10-12 17:05:22 -07:00
Kubernetes Prow Robot b584dbf740 Merge pull request #24476 from sftim/20201010_link_to_contributor_site
Hyperlink from https://k8s.io/docs/contribute/ to https://k8s.dev/
2020-10-12 17:03:22 -07:00
Tim Bannister a6b52520cd Redirect "Learning environment" to Install Tools task 2020-10-13 01:02:21 +01:00
Kubernetes Prow Robot c86772c4b0 Merge pull request #24478 from sftim/20201010_remove_future_statement_namespaces
Remove statement about future of namespaces
2020-10-12 17:01:22 -07:00
Kubernetes Prow Robot b55fda3e91 Merge pull request #24490 from AlphaWong/patch-1
doc: update corefile
2020-10-12 16:59:23 -07:00
Tim Bannister 18e5d14344 Remove rkt
https://github.com/rkt/rkt is an ex-project.
rkt has kicked the bucket, shuffled off its mortal coil, run down the
curtain and joined the choir invisible.
2020-10-12 21:52:33 +01:00
Tim Bannister 45fa151732 Add introduction to Workloads concept 2020-10-12 21:06:19 +01:00
Kubernetes Prow Robot aaaf0bef2f Merge pull request #24512 from FreeGuwop/patch-1
Fix Mistake in Resource Bin Packing for Extended Resources
2020-10-12 12:40:49 -07:00
Tim Bannister 225be5b8c8 Improve explanation about pod template updates
- (try to) imply that pod templates are part of an owning resource,
  not part of the pod itself
- explain that the owning resource must replace Pods if the pod
  template changes
2020-10-12 20:32:42 +01:00
Kubernetes Prow Robot 401c4fc0fa Merge pull request #24519 from JornShen/improve_diagram_of_compute_resources
Improve diagram for “Reserve Compute Resources for System Daemons”
2020-10-12 11:08:48 -07:00
Tim Bannister 791d7ad969 Add object to glossary 2020-10-12 19:02:33 +01:00
Kubernetes Prow Robot c655e02bb9 Merge pull request #24518 from shuuji3/fix-markup-error
Fix a markup error on tasks/administer-cluster/running-cloud-controller
2020-10-12 08:36:48 -07:00
Kubernetes Prow Robot 4f5b43db05 Merge pull request #24509 from tengqm/move-ingress-example
Move example-ingress.yaml
2020-10-12 08:34:48 -07:00
Kubernetes Prow Robot e6e8373ca8 Merge pull request #24520 from sftim/20201012_use_make_container_serve
Use make-container serve by default
2020-10-12 08:16:48 -07:00
Kubernetes Prow Robot ba6335247d Merge pull request #24522 from longkai/master
Fix typo issues in Chinese translation "Declarative Management of Kubernetes Objects Using Kustomize"
2020-10-12 06:42:48 -07:00
Kubernetes Prow Robot aee2c3397c Merge pull request #24523 from rverchere/patch-1
Missing FR character
2020-10-12 06:28:47 -07:00
Remi Verchere f9b6ca834d Missing caracter 2020-10-12 15:09:04 +02:00
longkai d5800a9993 [zh] fix some typo issues in Kustomize.md
refer issue #24521
2020-10-12 20:49:07 +08:00
jornshen e9f483808b Improve diagram for “Reserve Compute Resources for System Daemons” 2020-10-12 20:30:58 +08:00
Kubernetes Prow Robot 04cc9c1e1f Merge pull request #24517 from howieyuen/zh-golossary-kube-apiserver
[zh] fix broken link of kube-apiserver from glossary and sync it from en page
2020-10-12 02:54:48 -07:00
yuanhao 266f313984 fix broken link of kube-apiserver from glossary and sync it from en page 2020-10-12 17:45:17 +08:00
Tim Bannister e11d3ea5f6 Use make-container serve by default
The switch from:
$ make docker-serve

to:
$ make container-serve

is far enough in the past that everyone should have a current Makefile.

Also highlight the command to fetch and use submodules.
2020-10-12 09:19:07 +01:00
Kubernetes Prow Robot 7c24b495e2 Merge pull request #18221 from icheikhrouhou/feature/livenessfr
docs | tasks | configure-pod-container | liveness readiness
2020-10-12 01:10:48 -07:00
Kubernetes Prow Robot 6212179b39 Merge pull request #18321 from icheikhrouhou/feature/processnamespacesfr
docs | tasks | configure-pod-container | namespace
2020-10-12 01:08:47 -07:00
TAKAHASHI Shuuji 9b55db0286 Fix a markup error. 2020-10-12 16:42:03 +09:00
yuanhao 94600a14ba translate docs/reference/using-api/health-checks.md into Chinese 2020-10-12 15:15:11 +08:00
FreeGuwop 50404c93ee Update resource-bin-packing.md 2020-10-11 20:34:11 -07:00
Qiming Teng ea85d09cd1 [zh] Sync changes to Ingress example
This is a sync from English site where the sample YAML is spawn into a
standalone file. (a79db9d5de).
2020-10-12 11:23:15 +08:00
Qiming Teng 9fa03cbdf1 Move example-ingress.yaml
The commit (a79db9d5de) made the sample
YAML for Ingress a standalone file, but it was placed into a NEW
`examples/ingress` directory. This PR moves it to
`examples/service/networking` subdirectory where all other Ingress
examples are located. Having a single file under a dedicated directory
seems not good.
2020-10-12 11:17:08 +08:00
Qiming Teng aa742890bc [zh] Sync changes to script location
This is a sync from En site (45a5a5210f).
2020-10-12 11:09:50 +08:00
Kubernetes Prow Robot 6019a0b829 Merge pull request #24499 from Humbertzhang/master
[zh] Modify links from en version to zh verison
2020-10-11 19:44:47 -07:00
Humbertzhang 6d0a20a4c5 Modify links from en version to zh verison 2020-10-12 10:25:28 +08:00
Qiming Teng 2db6b9a087 [zh] Add style guide for Chinese localization
Most of the contents are summarized from previous practices. This PR is
an attempt to document these practices as guidelines.
2020-10-12 10:24:51 +08:00
Kubernetes Prow Robot dfc16b6e42 Merge pull request #24498 from epicfaace/patch-1
Add "and"
2020-10-11 18:46:47 -07:00
Ashwin Ramaswami 511c92afbb Add "and" 2020-10-11 21:20:23 -04:00
Hao Yuan 80faf7688a correct broken link and sync from EN version 2020-10-11 21:56:52 +08:00
Qiming Teng 9365a26dbd [zh] Translate cloud-controller-manager reference 2020-10-11 20:04:36 +08:00
Kubernetes Prow Robot 2ebd8a79f1 Merge pull request #24475 from sftim/20201010_docker_mac_compatibility
Update local Hugo development target
2020-10-11 03:54:47 -07:00
Kubernetes Prow Robot a675695923 Merge pull request #24491 from tengqm/zh-sync-ingress
[zh] Sync changes to Ingress concept
2020-10-11 01:54:47 -07:00
Kubernetes Prow Robot 3e54ef1256 Merge pull request #24485 from tengqm/zh-add-glossary
[zh] Add missing glossary for Chinese
2020-10-11 01:52:46 -07:00
Qiming Teng 6c341b6a06 [zh] Sync changes to Ingress concept 2020-10-11 16:35:57 +08:00
Alpha 087513d4c9 doc: update corefile
I think `CoreFile` replace the keyword `proxy` with `forward` in their config file
2020-10-11 16:27:04 +08:00
Qiming Teng 16ab759b2a [zh] Add missing glossary for Chinese
There are some glossary entries still missing in the Chinese
localization. This PR adds them.
2020-10-11 16:25:26 +08:00
Kubernetes Prow Robot 504ca45b11 Merge pull request #24483 from tengqm/zh-remove-minikube
[zh] Remove install-minikube
2020-10-10 22:48:47 -07:00
Kubernetes Prow Robot f5f2a2b958 Merge pull request #24465 from tengqm/zh-sync-minikube
[zh] Sync changes to Hello Minikube page
2020-10-10 22:42:47 -07:00
Kubernetes Prow Robot bc52e934cf Merge pull request #24466 from tengqm/zh-improve-tutoriali-idx
[zh] Remove online training contents
2020-10-10 22:40:47 -07:00
Qiming Teng 359d5be6e5 [zh] Remove install-minikube
This is a sync from En site.
2020-10-11 10:32:38 +08:00
Tim Bannister dd88014f30 Remove statement about future of namespaces 2020-10-10 19:15:14 +01:00
Tim Bannister 46812e34a0 Hyperlink to https://k8s.dev/ 2020-10-10 18:35:00 +01:00
Tim Bannister 25180022b1 Update local Hugo development target
- mount /tmp as tmpfs
- configure Hugo to use /tmp for all caches
- configure Hugo to render into /tmp
2020-10-10 18:07:35 +01:00
Qiming Teng 34b8e9515a [zh] Sync changes to Hello Minikube page
This is a sync of English site change (236c65c18e).
2020-10-10 21:37:43 +08:00
Qiming Teng 1604fbf19f [zh] Remove online training contents
This is a sync from English site
(c5626fd69d).
2020-10-10 21:33:46 +08:00
Kubernetes Prow Robot 29e13ed527 Merge pull request #24473 from tengqm/zh-drop-sitemap
[zh] Remove sitemap
2020-10-10 06:14:47 -07:00
Qiming Teng 084faedc8c [zh] Remove sitemap
This is a sync from En site (b1fb333fad).
2020-10-10 21:01:20 +08:00
Kubernetes Prow Robot c26af3fae7 Merge pull request #24024 from tengqm/api-version-warning
Clarify what API versions mean
2020-10-10 05:58:46 -07:00
Kubernetes Prow Robot f59e96d72e Merge pull request #24469 from tengqm/zh-drop-fed-examples
[zh] Drop examples for federation
2020-10-10 05:34:46 -07:00
Kubernetes Prow Robot a63bf47b44 Merge pull request #24463 from howieyuen/version-skew-policy
fix  hard code and make/zh/docs/setup/release/version-skew-policy.md up-to-date
2020-10-10 05:32:48 -07:00
Kubernetes Prow Robot 75354675b8 Merge pull request #24468 from tengqm/zh-fix-filename
[zh] fix incorrect file name
2020-10-10 05:30:46 -07:00
Kubernetes Prow Robot 729ebf62d1 Merge pull request #24471 from tengqm/zh-drop-case-studies
[zh] Drop case studies that disappear from En site
2020-10-10 03:44:46 -07:00
Kubernetes Prow Robot e7ade80b61 Merge pull request #24464 from tengqm/zh-sync-square-removal
[zh] Sync changes to partner square scripts
2020-10-10 02:28:46 -07:00
Kubernetes Prow Robot b39ff7a9fd Merge pull request #24467 from tengqm/zh-fed-cleanup
[zh] Resync federation content cleanup
2020-10-10 02:20:46 -07:00
Qiming Teng d6e91b4b8b [zh] Drop case studies that disappear from En site
Some case studies have been removed from English site. This is a sync
for the removals.
2020-10-10 16:48:23 +08:00
Qiming Teng f459375331 [zh] Drop examples for federation
This is a sync from English site.
2020-10-10 15:36:46 +08:00
Qiming Teng 7997ac3cdc [zh] fix incorrect file name
The manifest.md glossary file was incorrectly named.
2020-10-10 15:33:40 +08:00
Kubernetes Prow Robot a320a9e1aa Merge pull request #24416 from nate-double-u/23354-update-install-minikube
Remove content/en/docs/tasks/tools/install-minikube.md
2020-10-10 00:24:47 -07:00
Qiming Teng 4d0f4309a9 [zh] Resync federation content cleanup
This is a resync of the English site change (05bf8be205).
2020-10-10 15:22:16 +08:00
yuanhao 77071553d9 fix outdated content 2020-10-10 15:06:22 +08:00
Qiming Teng 48a2279708 [zh] Sync changes to partner square scripts
Sync changes from English site
(378250c9c0).
The images are not replicated to Chinese site thus irrelevant.
2020-10-10 15:05:13 +08:00
Kubernetes Prow Robot a0b2217955 Merge pull request #24455 from oomichi/id-fix-output-of-rolling-status
id: Fix output of 'kubectl rollout status'
2020-10-09 21:46:47 -07:00
Kubernetes Prow Robot c4c2152ec4 Merge pull request #23100 from Cweiping/fix_ingress_format_error
upgrade  example-ingress.yaml to file format
2020-10-09 21:42:46 -07:00
Kubernetes Prow Robot 13a0473d4c Merge pull request #24456 from oomichi/fr-fix-output-of-rolling-status
fr: Fix output of 'kubectl rollout status'
2020-10-09 21:40:46 -07:00
Kubernetes Prow Robot 7617c89207 Merge pull request #23699 from Cweiping/feature/clairly_exec_action
clarify the execution contexts of hook handlers with different action
2020-10-09 21:28:46 -07:00
Kenichi Omichi df17d575b7 fr: Fix output of 'kubectl rollout status'
This is the same fix as https://github.com/kubernetes/website/commit/6e93717597113c726cbcf8a7059e47f23e3e8a64 for fr.

If running `kubectl rollout status` command, the output is like:
```
  deployment "nginx-deployment" successfully rolled out
```

The corresponding kubectl code also shows it according to https://github.com/kubernetes/kubectl/blob/e95e378e5972064b177a8e71eac2803f55c8c5df/pkg/polymorphichelpers/rollout_status.go#L89
2020-10-10 03:19:01 +00:00
Weiping Cai 10ebb11f20 clarify the execution contexts of hook handlers with different action types are different
Signed-off-by: Weiping Cai <weiping.cai@daocloud.io>
2020-10-10 10:23:44 +08:00
Weiping Cai a79db9d5de fix example-ingress.yaml format error
Signed-off-by: Weiping Cai <weiping.cai@daocloud.io>
2020-10-10 10:03:46 +08:00
Kubernetes Prow Robot 7a7b6789b8 Merge pull request #24452 from oomichi/zh-fix-output-of-rolling-status
zh: Fix output of 'kubectl rollout status'
2020-10-09 18:46:47 -07:00
Kubernetes Prow Robot fa26a1cab6 Merge pull request #24216 from fancc/debug-running-pod
Translate Debug Running Pod into Chinese
2020-10-09 18:42:47 -07:00
Kubernetes Prow Robot 2fe48fabb0 Merge pull request #24204 from huchengze/patch-35
Update weave-network-policy.md for zh
2020-10-09 18:36:47 -07:00
Kubernetes Prow Robot 093df63b91 Merge pull request #22207 from fancc/konnectivity
translate 'set up Konnectivity service' into chinese
2020-10-09 18:28:47 -07:00
Kubernetes Prow Robot 0db64698a8 Merge pull request #24448 from habibrosyad/k/w-cs-zh
Clean up case study images in content/zh/case-studies
2020-10-09 17:54:47 -07:00
Qiming Teng 3d416c6417 Clarify what API versions mean 2020-10-10 08:51:14 +08:00
Kubernetes Prow Robot c4bee6eda0 Merge pull request #24446 from phumberdroz/node-the
Fix grammar mistake in Nodes.md
2020-10-09 16:04:47 -07:00
Nate W b65ddd16f6 Remove content/en/docs/tasks/tools/install-minikube.md
As per conversations in issue https://github.com/kubernetes/website/issues/23354,
* Removing content/en/docs/tasks/tools/install-minikube.md page
* Adding a 302 temporary redirect for /docs/tasks/tools/install-minikube/
* Updating content/en/docs/tasks/tools/_index.md with the suggestion to add buttons to make these links more visual/see-able, including aria-labels

Additionally:
* Updating minikube capitalization throughout page
* Updating text throughout page for line length
* Correcting back ticks use throughout page

Signed-off-by: Nate W <nwaddington@cncf.io>
2020-10-09 13:50:03 -07:00
Anna Jung 2c31d6a19d Update new feature doc to add a step to include necessary links 2020-10-09 15:11:27 -05:00
Kenichi Omichi 6ebf915691 es: Fix output of 'kubectl rollout status'
This is the same fix as https://github.com/kubernetes/website/commit/6e93717597113c726cbcf8a7059e47f23e3e8a64 for es.

If running `kubectl rollout status` command, the output is like:
```
  deployment "nginx-deployment" successfully rolled out
```

The corresponding kubectl code also shows it according to https://github.com/kubernetes/kubectl/blob/e95e378e5972064b177a8e71eac2803f55c8c5df/pkg/polymorphichelpers/rollout_status.go#L89
2020-10-09 16:54:30 +00:00
Kenichi Omichi 234c8c8553 id: Fix output of 'kubectl rollout status'
This is the same fix as https://github.com/kubernetes/website/commit/6e93717597113c726cbcf8a7059e47f23e3e8a64 for id.

If running `kubectl rollout status` command, the output is like:
```
  deployment "nginx-deployment" successfully rolled out
```

The corresponding kubectl code also shows it according to https://github.com/kubernetes/kubectl/blob/e95e378e5972064b177a8e71eac2803f55c8c5df/pkg/polymorphichelpers/rollout_status.go#L89
2020-10-09 16:47:47 +00:00
Kenichi Omichi 3d134c37a6 ko: Fix output of 'kubectl rollout status'
This is the same fix as https://github.com/kubernetes/website/commit/6e93717597113c726cbcf8a7059e47f23e3e8a64 for ko.

If running `kubectl rollout status` command, the output is like:
```
  deployment "nginx-deployment" successfully rolled out
```

The corresponding kubectl code also shows it according to https://github.com/kubernetes/kubectl/blob/e95e378e5972064b177a8e71eac2803f55c8c5df/pkg/polymorphichelpers/rollout_status.go#L89
2020-10-09 16:11:50 +00:00
Kenichi Omichi ed4b0b2b1a zh: Fix output of 'kubectl rollout status'
This is the same fix as https://github.com/kubernetes/website/commit/6e93717597113c726cbcf8a7059e47f23e3e8a64 for zh.
2020-10-09 15:55:23 +00:00
Anna Jung 91ae1f7e19 Update PR template to include a section about requirements for release doc description 2020-10-09 09:18:11 -05:00
M. Habib Rosyad 431653a6e3 Clean up case study images in content/ko/case-studies 2020-10-09 21:07:29 +07:00
M. Habib Rosyad 1cd32a8520 Clean up case study images in content/zh/case-studies 2020-10-09 21:01:21 +07:00
Pierre Humberdroz 0183af4980 Fix grammar mistake 2020-10-09 14:19:25 +02:00
Kubernetes Prow Robot 31042f84c7 Merge pull request #24442 from chenxuc/patch-1
Update API group url
2020-10-09 03:45:07 -07:00
Kubernetes Prow Robot 542729faf1 Merge pull request #24444 from RoSk0/issue-24399
Add missing text
2020-10-09 03:21:06 -07:00
Kubernetes Prow Robot 1248dff4c3 Merge pull request #24400 from habibrosyad/k/w-cs-ja
Clean up case study images in content/ja/case-studies
2020-10-09 02:45:07 -07:00
Ro$k0 6d4fd2ab2b Add missing text 2020-10-09 22:17:35 +13:00
Chen, Xu Chun (Simon) 4688a3679c Update API group url
The "core API group" url points to a wrong page that does not explain anything about "core API group". Update the url to point to the correct page.
2020-10-09 15:21:58 +08:00
Kubernetes Prow Robot c1a80a4bd9 Merge pull request #24412 from bradtopol/add-localization-grp
Updated localization contribute page with information about new localization subgroup.
2020-10-09 00:17:07 -07:00
Kubernetes Prow Robot a0a607ee4e Merge pull request #24434 from howieyuen/clean-up
[zh] clean up reference page of zh, make it up-to-date
2020-10-08 22:29:05 -07:00
Hao Yuan 5018fc0e48 clean up reference page of zh, make it up-to-date 2020-10-09 11:49:48 +08:00
Kubernetes Prow Robot 6e93717597 Merge pull request #24437 from oomichi/fix-output-of-rolling-status
Fix output of 'kubectl rollout status'
2020-10-08 20:25:06 -07:00
Kenichi Omichi 58a640ffd4 ja: Removing references of kubectl rolling-update
This applies the commit be6c0c3a21 for
ja content. Big motivation here is the link of [rolling update] is
NotFound today. So it is better to avoid such page for readers.
2020-10-09 00:31:42 +00:00
Kubernetes Prow Robot 7203cd136a Merge pull request #24429 from montmanu/kubectl/port-forward
Update the example for kubectl port-forward
2020-10-08 17:09:06 -07:00
Kenichi Omichi 8b3e6aa8c0 Fix output of 'kubectl rollout status'
If running 'kubectl rollout status' command, the output is like:

  deployment "nginx-deployment" successfully rolled out

The corresponding kubectl code also shows it according to
https://github.com/kubernetes/kubectl/blob/e95e378e5972064b177a8e71eac2803f55c8c5df/pkg/polymorphichelpers/rollout_status.go#L89
2020-10-09 00:03:41 +00:00
Jesus Climent 80d695656f Update pod-lifecycle.md
Redundant "without problems" removed.
2020-10-08 14:48:15 -04:00
Vladimir Masarik 73780ca1bd Updated ingress.md TLS section 2020-10-08 17:13:14 +02:00
Kubernetes Prow Robot cc3e0de09f Merge pull request #24428 from habibrosyad/k/w-glo-7
Completing glossary translation for Bahasa pt. 7
2020-10-08 04:08:15 -07:00
M. Habib Rosyad ded85bd61e Completing glossary translation for Bahasa
Updated:
- image
- kube-apiserver

New:
- extensions
- init-container
- job
2020-10-08 17:30:32 +07:00
Tomas Dabašinskas ea3ed2b6e1 Update managing-tls-in-a-cluster.md to include fields in certificate signing request (or CSR) required by kubernetes.io/kubelet-serving signer policy 2020-10-08 10:13:52 +03:00
Kubernetes Prow Robot 075d40d7fd Merge pull request #24427 from habibrosyad/k/w-glo-6
Completing glossary translation for Bahasa pt. 6
2020-10-07 23:14:16 -07:00
Kubernetes Prow Robot 56b0a2fb86 Merge pull request #23498 from sftim/20200827_revise_multiple_zones_setup
Revise page about multiple zones
2020-10-07 23:12:15 -07:00
Kubernetes Prow Robot d406bdf532 Merge pull request #24122 from liuming-dev/patch-1
Update names.md
2020-10-07 20:22:15 -07:00
Kubernetes Prow Robot ee75f9de4d Merge pull request #24256 from ydcool/zh-updated-kubeadm-ref
Update zh content_type param and kubeadm pages
2020-10-07 20:20:15 -07:00
M. Habib Rosyad 82d7efd3d6 Completing glossary translation for Bahasa
New:
- deployment
- device-plugin
- disruption
- docker
- ephemeral-container
2020-10-08 09:34:21 +07:00
Tim Bannister a7734a60a2 Add missing Portuguese strings 2020-10-08 03:25:46 +01:00
Christopher Montoro 7fc8f1a220 Update the example for kubectl port-forward
Clarify that `REMOTE_PORT` is interpreted as identifying a _Service_ port when provided `TYPE` is `service`.
Also, highlight support for specifying a named port as `REMOTE_PORT`.
2020-10-07 22:02:37 -04:00
Kubernetes Prow Robot 0703805305 Merge pull request #24349 from liggitt/tokenreview
Clarify tokenreview API
2020-10-07 16:00:15 -07:00
Kubernetes Prow Robot 11ee97d567 Merge pull request #24140 from qiutongs/master
Add a new known issue to the out-of-resource doc: active_file memory is not considered as available memory
2020-10-07 14:22:17 -07:00
Brad Topol 12bc18da7c Update meeting link and details 2020-10-07 16:29:09 -04:00
Brad Topol 4d38696fc7 added the word meeting to clarify 2020-10-07 15:39:03 -04:00
Brad Topol 376a8d4940 Updated slack URLs and fixed typo 2020-10-07 15:36:04 -04:00
Kubernetes Prow Robot c685694bd0 Merge pull request #24404 from alex-slynko/patch-2
Startup probe is in beta since 1.18
2020-10-07 10:58:16 -07:00
Brad Topol afcd5b2fb0 Updated localization contribute page with information about
the new localization subgroup and its slack channel

Signed-off-by: Brad Topol <btopol@us.ibm.com>
2020-10-07 12:52:40 -04:00
Kubernetes Prow Robot b04647baaa Merge pull request #24356 from ariscahyadi/id-local-admin-cluster-mgmt
ID localization for administrator cluster - cluster management
2020-10-07 08:06:42 -07:00
Aris Cahyadi Risdianto c06c6b7cb7 ID localization for administrator cluster - manajemen cluster
ID localization for administrator cluster - manajemen cluster

addressing small comment.
2020-10-07 22:43:17 +08:00
Jordan Liggitt 5ff7c64134 Clarify tokenreview API 2020-10-07 10:21:30 -04:00
Kubernetes Prow Robot 3d23e421d2 Merge pull request #24233 from sftim/20200929_tweak_front_page_first_paragraph_heading
Revise style of site front page
2020-10-07 04:50:42 -07:00
Tim Bannister 7196db6980 Revise page about multiple zones
Drop provider-specific details, in line with current content guide.
Plus general rewording.
2020-10-07 12:19:42 +01:00
Kubernetes Prow Robot 8985b94324 Merge pull request #24403 from makocchi-git/20201007/runtimeclass
Fix dead links in docs/concepts/containers/runtime-class/
2020-10-07 02:30:42 -07:00
Oleksandr Slynko 0c730420e7 Startup probe is in beta since 1.18 2020-10-07 10:23:58 +01:00
makocchi-git 0fe678c345 Fix dead links 2020-10-07 18:14:59 +09:00
perk 4d94040676 Add explicit info about pod limits being applied to requests 2020-10-07 11:14:05 +02:00
Kubernetes Prow Robot 2dcd180b10 Merge pull request #24401 from makocchi-git/20201007/authz
Fix indent in docs/reference/access-authn-authz/rbac/
2020-10-07 02:04:43 -07:00
makocchi-git 23a13ec9d8 fix indent 2020-10-07 16:54:11 +09:00
Kubernetes Prow Robot 95ee55cf68 Merge pull request #24124 from liuming-dev/patch-2
docs: 缺少右括号
2020-10-06 22:28:42 -07:00
Yoshiki Fujiwara 8dca3e71ef Update content/ja/docs/reference/access-authn-authz/rbac.md
ありがとうございます!修正します。

Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-10-07 13:37:03 +09:00
M. Habib Rosyad b3814b8d6d Clean up case study images in content/ja/case-studies 2020-10-07 10:16:07 +07:00
Kubernetes Prow Robot 733e5dfed9 Merge pull request #24392 from habibrosyad/k/w-glo-5
Completing glossary translation for Bahasa pt. 5
2020-10-06 18:34:42 -07:00
Michal Broz ecba51d73b Update katacoda id to kubernetes-bootcamp 2020-10-06 14:06:09 -05:00
Kubernetes Prow Robot dbb48408e9 Merge pull request #24373 from tengqm/lsync-util
Add a util script for localization team
2020-10-06 11:36:42 -07:00
Kubernetes Prow Robot 56a4d9ba6c Merge pull request #24293 from kjw3/patch-1
Fix missing command in helm search statement
2020-10-06 10:48:43 -07:00
Johannes M. Scheuermann c8f34ff15b Remove CNI alpha warning 2020-10-06 19:42:47 +02:00
Kubernetes Prow Robot 0d763011f2 Merge pull request #24095 from mvertes/patch-1
Update traefik links in ingress-controllers.md
2020-10-06 08:10:21 -07:00
Kubernetes Prow Robot f145181adc Merge pull request #24051 from rikatz/patch-2
Add curl to required packages in kubectl install
2020-10-06 06:54:20 -07:00
Kubernetes Prow Robot 80d4117974 Merge pull request #24302 from gaurav517/master
Clarify signerName requirements for CertificateSigningRequest
2020-10-06 05:00:20 -07:00
M. Habib Rosyad 0d91639018 Completing glossary translation for Bahasa
Updated:
- controller

New:
- cri
- customresourcedefinition
- daemonset
- data-plane
2020-10-06 18:50:12 +07:00
Kumar Gaurav 2551034ebd fix api version in certificate signing request doc 2020-10-06 22:42:32 +11:00
Kubernetes Prow Robot df82578943 Merge pull request #24391 from habibrosyad/k/w-061020-1
Completing glossary translation for Bahasa pt. 4
2020-10-06 04:20:20 -07:00
Kubernetes Prow Robot 8d601c440d Merge pull request #24385 from kbhawkey/update-tooltip-bootstrap
update tooltip styling to bootstrap
2020-10-06 04:18:20 -07:00
M. Habib Rosyad 6fd8a4d954 Completing glossary translation for Bahasa
Updated:
- configmap
- container-env-variables
- container

New:
- container-runtime
- control-plane
2020-10-06 17:47:32 +07:00
Kubernetes Prow Robot f5becddd5c Merge pull request #24186 from sftim/20200928_shrink_homepage_image
Shrink site front page video banner background
2020-10-06 02:52:19 -07:00
Dominic Yin a1db538b2d Update zh content_type param and kubeadm pages 2020-10-06 11:49:49 +08:00
Kubernetes Prow Robot 290d7f6195 Merge pull request #24377 from habibrosyad/k/w-051020-1
glossary: translate annotation and api-group into Bahasa
2020-10-05 20:24:19 -07:00
Qiming Teng 71f0a9fc41 Add a util script for localization team
This PR adds a utility script for localization team to check changes
made to the English (upstream) source since last time the localized
version is updated (synchronized).
2020-10-06 08:46:41 +08:00
WilliamChang80 57e0250f16 Merge branch 'master' of https://github.com/WilliamChang80/website 2020-10-06 00:31:36 +07:00
WilliamChang80 b948e0fff5 Moved object management to task section and fix link 2020-10-06 00:31:20 +07:00
Kubernetes Prow Robot fc7ae876d4 Merge pull request #22256 from irvifa/add-irvi-as-lead-as-transitioning-preparations
Add irvifa as lead as a preparation step for transition
2020-10-05 09:20:34 -07:00
Karen Bradshaw be9e8e9ad8 update tooltip styling to bootstrap 2020-10-05 12:05:02 -04:00
WilliamChang80 4301f58928 Merge branch 'master' of https://github.com/kubernetes/website 2020-10-05 22:57:43 +07:00
William Chang 1b5b449f99 Update netlify.toml 2020-10-05 21:48:34 +07:00
WilliamChang80 d327b9e5d3 Add description on concept overview ID page 2020-10-05 21:45:26 +07:00
M. Habib Rosyad 02e9e7fe49 glossary: translate annotation and api-group into Bahasa 2020-10-05 20:52:22 +07:00
Kubernetes Prow Robot 6b2a5fc5b5 Merge pull request #24379 from habibrosyad/k/w-051020-3
glossary: translate cluster and cluster-operator into Bahasa
2020-10-05 04:19:05 -07:00
Kubernetes Prow Robot 88d8baf6a1 Merge pull request #24378 from habibrosyad/k/w-051020-2
glossary: translate applications and cgroup into Bahasa
2020-10-05 03:25:05 -07:00
M. Habib Rosyad 263125f440 glossary: translate cluster and cluster-operator into Bahasa 2020-10-05 17:16:26 +07:00
M. Habib Rosyad 37cdad030e glossary: translate applications and cgroup into Bahasa 2020-10-05 17:12:12 +07:00
Kubernetes Prow Robot 782fcca4c5 Merge pull request #24376 from baiyutang/master
Update 2019-06-19-kubernetes-1-15-release-announcement.md
2020-10-05 03:11:05 -07:00
Kubernetes Prow Robot a8fc2311ea Merge pull request #24375 from baiyutang/patch-2
Update kubectl.md
2020-10-05 03:09:05 -07:00
Kubernetes Prow Robot c5a51bc53c Merge pull request #24374 from baiyutang/patch-1
Update encrypt-data.md
2020-10-05 03:07:05 -07:00
白玉堂 f8ae270028 Update labels.md 2020-10-05 17:48:10 +08:00
白玉堂 a758f483dc Update 2019-06-19-kubernetes-1-15-release-announcement.md 2020-10-05 17:40:47 +08:00
白玉堂 775c0b1072 Update kubectl.md 2020-10-05 17:29:54 +08:00
白玉堂 0997416af6 Update encrypt-data.md 2020-10-05 17:18:49 +08:00
Kubernetes Prow Robot 763cb5f759 Merge pull request #24341 from Arhell/translate-btn
subscribe button translate
2020-10-05 00:55:05 -07:00
Kubernetes Prow Robot deb0b6ad5b Merge pull request #24258 from ydcool/zh-cleanup-controller-metrics
Clean up zh controller-metrics.md
2020-10-05 00:27:06 -07:00
Danish Prakash e53afa40fc content/_posts: point to correct changelog link 2020-10-05 12:00:29 +05:30
Kubernetes Prow Robot eadcc1a268 Merge pull request #24257 from ydcool/zh-cleanup-training-content
Clean up zh training content
2020-10-04 18:29:06 -07:00
Kubernetes Prow Robot 15a0c8467f Merge pull request #24259 from ydcool/zh-cleanup-monitoring
Remove zh/docs/concepts/cluster-administration/monitoring.md
2020-10-04 18:21:06 -07:00
Kubernetes Prow Robot 060f608001 Merge pull request #24252 from ydcool/zh-cleanup-kubecluster-ps1-gifs
Clean up gifs under zh/docs/setup/production-environment/windows
2020-10-04 18:19:06 -07:00
Kubernetes Prow Robot a86c3cbed6 Merge pull request #24368 from aquariuslt/master
i18n(zh): fix kubectl reference link issue
2020-10-04 09:13:05 -07:00
Kubernetes Prow Robot c821f22757 Merge pull request #24125 from JornShen/localize_logging_stackdriver
[zh] Localize /docs/tasks/debug-application-cluster/logging-stackdriver.md
2020-10-04 07:33:05 -07:00
aquariuslt fe86d48879 i18n(zh): fix kubectl reference link issue
update `/zh/docs/user-guide/kubectl-overview/`
to `/zh/docs/reference/kubectl/overview/`
2020-10-04 19:55:37 +08:00
Kubernetes Prow Robot 9b1e7c732c Merge pull request #24363 from AjiArya/master
Removed core-object tag
2020-10-03 23:17:05 -07:00
Aji Arya fb02f7dea4 Removed core-object tag
Removed `core-object` tag from kubelet.md
2020-10-04 12:27:47 +07:00
Kubernetes Prow Robot d99218c76e Merge pull request #23557 from tengqm/zh-declarative-config
[zh] Translate declarative-config task
2020-10-03 20:09:05 -07:00
Dominic Yin ac49fa1a76 Clean up zh training content 2020-10-04 11:03:28 +08:00
jornshen 508dff258f Localize /docs/tasks/debug-application-cluster/logging-stackdriver.md 2020-10-04 10:32:57 +08:00
Kubernetes Prow Robot 49f4e0f338 Merge pull request #24110 from yoonian/patch-2
Fix typo
2020-10-03 15:03:05 -07:00
Kubernetes Prow Robot 8620b87baf Merge pull request #24360 from jimangel/revert-hacktoberfest-memo
reverting hacktoberfest changes
2020-10-03 14:55:06 -07:00
Jim Angel 15b4677cfc reverting hacktoberfest changes 2020-10-03 18:58:36 +00:00
Kubernetes Prow Robot abd1eb6446 Merge pull request #24159 from zhiguo-lu/zh-addpage-task-define-interdependent-environment-variables
add page: zh-task-define-interdependent-environment-variables, fix #24157
2020-10-03 05:49:05 -07:00
Kubernetes Prow Robot 638144b7cd Merge pull request #24353 from sftim/20201002_container_run_hugo_as_hugo
Run Hugo as user "hugo" in local dev container
2020-10-03 01:49:05 -07:00
Tim Bannister bb04227f7b Run Hugo as user "hugo" in local dev container
When previewing locally using "make container-serve", run the Hugo
process as user "hugo" inside that container.
2020-10-03 04:10:33 +01:00
Andrew Garrett 96a27ce40f Clean up grammar around the phase section 2020-10-02 12:31:34 -07:00
Kubernetes Prow Robot a4d016e1f9 Merge pull request #24311 from hikhvar/pod-termination-signal
Clarify the pod termination process.
2020-10-02 10:14:48 -07:00
Kubernetes Prow Robot f9f21ac636 Merge pull request #24297 from pjhwa/fix-24296
Fix issue with tasks/administer-cluster/out-of-resource/
2020-10-02 10:12:48 -07:00
GuyTempleton 5b15a7108f Clarify HPA Scaling Policies
Update content/en/docs/tasks/run-application/horizontal-pod-autoscale.md

Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-10-02 18:09:13 +01:00
Kubernetes Prow Robot 9e01fb5560 Merge pull request #24037 from RULCSoft/fix-typos
Fix typos
2020-10-02 07:25:20 -07:00
Kubernetes Prow Robot e93879f9f9 Merge pull request #23327 from rayw000/add-citation-link
Add citation link to troubleshooting-macos-for-too-many-open-files section
2020-10-02 07:13:20 -07:00
Kubernetes Prow Robot 50642033df Merge pull request #24348 from mrbobbytables/update-triage-again
Update triage/support label in for-approvers doc
2020-10-02 06:37:20 -07:00
Bob Killen ca77c1cb14 Update triage/support label in for-approvers doc
Migrates triage/support -> kind/support.

The for-aprovers.md doc was missed in the update applied in
5878a2a73d
2020-10-02 08:40:41 -04:00
Kubernetes Prow Robot 228f2299f8 Merge pull request #24319 from girikuncoro/id-minikube
Translate Minikube page to Bahasa Indonesia
2020-10-02 03:49:19 -07:00
Kubernetes Prow Robot 1078e18d58 Merge pull request #23959 from didier-durand/ha_FR
fixing language issues on HA-related FR content
2020-10-02 01:21:19 -07:00
Ray Wang 71068cdf61 add citation link
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-10-02 13:30:35 +08:00
Kubernetes Prow Robot 84d33773c8 Merge pull request #24183 from npu21/schedule-id
Add post-filter part in scheduling-framework for id
2020-10-01 18:37:19 -07:00
Brian Nutt b805f7bdb1 Add missing annotation in en/docs/concepts/services-networking/service.md
Annotation `service.beta.kubernetes.io/aws-load-balancer-security-groups` is missing from the list of annotations that can be applied to an ELB. This annotation was introduced in https://github.com/kubernetes/kubernetes/pull/62774 and refactored https://github.com/kubernetes/kubernetes/pull/83446 to allow users to specify a set of existing security groups to attach to the ELB instead of using any precreated security groups.
2020-10-01 16:52:00 -07:00
Kubernetes Prow Robot 8812d184a9 Merge pull request #24343 from mrbobbytables/update-triage
Update triage/support label references to kind/support
2020-10-01 16:51:19 -07:00
Bob Killen 5878a2a73d Update triage/support label references to kind/support
The label triage/support has been reclassified as kind/support. The
kind/* family of labels makes more logical sense, as they describe the
"kind" of thing an issue or PR is.

For more information, see the announcement email:
https://groups.google.com/g/kubernetes-dev/c/YcaJpsjjLKw/m/i15cLLx5CAAJ
2020-10-01 19:38:31 -04:00
Kubernetes Prow Robot d049bdbb80 Merge pull request #24342 from jimangel/updating-readme-hacktoberfest
Hacktoberfest readme update
2020-10-01 15:33:19 -07:00
Jim Angel 97e3e8e33a people really like free shirts - readme update 2020-10-01 22:16:14 +00:00
Kubernetes Prow Robot d661f06948 Merge pull request #24288 from santadasu/patch-3
Update certificate-signing-requests.md
2020-10-01 14:47:19 -07:00
Kubernetes Prow Robot 5bf9d97d6e Merge pull request #24231 from santadasu/patch-1
Correct a typo in horizontal-pod-autoscale file
2020-10-01 14:45:19 -07:00
Arhell 959dd0498f subscribe button translate 2020-10-02 00:35:25 +03:00
Qiutong Song 3a0302d128 Address comments and take the suggested wording 2020-10-01 14:02:43 -07:00
Kubernetes Prow Robot eb99d75bf1 Merge pull request #23537 from lovebaby979/br3
update README-it.md
2020-10-01 13:49:19 -07:00
Kubernetes Prow Robot 3b57a3664b Merge pull request #24333 from sftim/20201001_support_canonical_uris_for_blog_articles
Support canonical URIs for blog articles
2020-10-01 12:57:19 -07:00
Kubernetes Prow Robot f7cdc090f2 Merge pull request #24306 from coderanger/patch-2
Add a temporary banner in the PR template to try and reduce the volume of spam PRs
2020-10-01 11:23:20 -07:00
Kubernetes Prow Robot 5a685dd022 Merge pull request #24327 from seongpyoHong/modify-init-containers
Modify Understanding init containers section
2020-10-01 10:17:19 -07:00
Tim Bannister 12cb34ba3a Set canonicalUrl for “Contributing to the Development Guide” article 2020-10-01 17:48:32 +01:00
Tim Bannister 43a7be6495 If a blog article has a canonical URI set, link to it
This change lets us point search engines to the original article when we
mirror them from https://k8s.dev/ and potentially from other sites too.
2020-10-01 17:47:45 +01:00
Kubernetes Prow Robot 1addb85433 Merge pull request #24185 from pymander/blog/earneson-contributor-experience
Add new blog cross-posted from k8s.dev
2020-10-01 09:26:54 -07:00
Yoshiki Fujiwara 872accf07d Modified Links 2020-10-02 00:43:59 +09:00
Kubernetes Prow Robot 33f77f080b Merge pull request #24285 from psykulsk/patch-1
Fix Common Name in Ingress TLS docs to match the name used in example.
2020-10-01 08:34:54 -07:00
Seongpyo Hong 481c02393e Modify Understanding init containers section 2020-10-02 00:28:41 +09:00
Yoshiki Fujiwara a4e4902a8a Removed the remained original text 2020-10-01 23:54:17 +09:00
Yoshiki Fujiwara 2db0e88027 Update content/ja/docs/reference/access-authn-authz/rbac.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-10-01 23:50:37 +09:00
Yoshiki Fujiwara c8de166739 Update content/ja/docs/reference/access-authn-authz/rbac.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-10-01 23:49:11 +09:00
Yoshiki Fujiwara b157f02852 Update content/ja/docs/reference/access-authn-authz/rbac.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-10-01 23:48:46 +09:00
Yoshiki Fujiwara 53cc457cf3 Update content/ja/docs/reference/access-authn-authz/rbac.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-10-01 23:48:32 +09:00
Yoshiki Fujiwara 459046fc57 Update content/ja/docs/reference/access-authn-authz/rbac.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-10-01 23:48:23 +09:00
Yoshiki Fujiwara 937d6887fd Update content/ja/docs/reference/access-authn-authz/rbac.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-10-01 23:48:14 +09:00
Yoshiki Fujiwara 0ace741011 Update content/ja/docs/reference/access-authn-authz/rbac.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-10-01 23:47:18 +09:00
Yoshiki Fujiwara 48614eeae3 Update content/ja/docs/reference/access-authn-authz/rbac.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-10-01 23:45:32 +09:00
Yoshiki Fujiwara b8e53e78f4 Update content/ja/docs/reference/access-authn-authz/rbac.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-10-01 23:45:15 +09:00
luzg 764f5ccf9d 24157, add page:zh-task-define-interdependent-environment-variables
make chage according to tengqm's comment
2020-10-01 22:39:27 +08:00
Yoshiki Fujiwara df81096442 Update content/ja/docs/reference/access-authn-authz/rbac.md
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-10-01 22:42:44 +09:00
Lubomir I. Ivanov 188bd2ea52 kubeadm: improve links and information around using the config file
- Add link from the kubeadm-config page to the paragraphs on
using "--config" with "init" and "join".
- Improve text in the the paragraphs on using "--config" with
"init" and "join".
- Reword the link about the configuration file in the
create-cluster-kubeadm page.
2020-10-01 15:32:20 +03:00
Giri Kuncoro 70ffafaaed Translate Minikube page to Bahasa Indonesia
Signed-off-by: Giri Kuncoro <girikuncoro@gmail.com>
Co-authored-by: Imre Nagi <imre.nagi2812@gmail.com>
2020-10-01 18:31:16 +07:00
Yoshiki Fujiwara 0e485e81e9 Modified not localized 2020-10-01 19:51:56 +09:00
bebyx d3a57a7c60 Update content/en/docs/tutorials/hello-minikube.md
Explanation that the app itself listens on 8080 port only.

Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-10-01 11:45:22 +03:00
Christoph Petrausch 1498f297d5 Update content/en/docs/concepts/workloads/pods/pod-lifecycle.md
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-10-01 10:43:30 +02:00
Christoph Petrausch 839863849c Clarify the pod termination process. 2020-10-01 09:16:47 +02:00
Noah Kantrowitz c03f784a29 Add a temporary banner in the PR template to try and reduce the volume of spam PRs.
This should be reverted once the initial wave of spam dies down.
2020-09-30 23:45:23 -07:00
Jerry Park 45a5a5210f Fix issue with tasks/administer-cluster/out-of-resource/ 2020-10-01 13:13:59 +09:00
Kubernetes Prow Robot 6f1ec1936f Merge pull request #24152 from WilliamChang80/master
Update ID Docs Setup Page
2020-09-30 20:32:54 -07:00
Kevin Jones 6fe4034d87 Fix missing command in helm search statement 2020-09-30 22:44:10 -04:00
Kubernetes Prow Robot 26d5c23670 Merge pull request #23536 from lovebaby979/br2
update README-id.md
2020-09-30 18:12:54 -07:00
Kubernetes Prow Robot 158286c4b7 Merge pull request #23807 from tengqm/improve-configmap-concept
Improve ConfigMap concept
2020-09-30 16:46:54 -07:00
Kubernetes Prow Robot 72ee712f0f Merge pull request #23528 from yeldiRium/patch-1
Clarify kubelet service configuration
2020-09-30 16:44:54 -07:00
Yoshiki Fujiwara cb105e1206 Update content/ja/docs/reference/access-authn-authz/rbac.md
Since this "pods" means a resource, should be modified as this suggestion.

Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-10-01 08:40:51 +09:00
Yoshiki Fujiwara 345a7f80a8 Update content/ja/docs/reference/access-authn-authz/rbac.md
I'll take it this because there is no examples or mentions deny in "deny" format before/after this line.

Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-10-01 08:39:28 +09:00
Kubernetes Prow Robot 6fa0a5e3ef Merge pull request #23734 from Evalle/ISSUE-23659
Rewrite GKE reference in Control Plane-Node Communication
2020-09-30 16:34:53 -07:00
Qiming Teng b1490ef95f Improve ConfigMap concept
This PR adds some missing information to the ConfigMap concept page.
2020-10-01 07:33:52 +08:00
Yoshiki Fujiwara 1dac786c11 Update content/ja/docs/reference/access-authn-authz/rbac.md
Modified Original plural to localize.

Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-10-01 08:23:34 +09:00
Yoshiki Fujiwara 92017b045f Update content/ja/docs/reference/access-authn-authz/rbac.md
Corrected Original plural to localize.

Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-10-01 08:21:01 +09:00
Yoshiki Fujiwara 4065897e20 Update content/ja/docs/reference/access-authn-authz/rbac.md
Modified glossaryreference from "API group" to "api-group" for future localization

Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-10-01 08:16:18 +09:00
Yoshiki Fujiwara 68a12f7620 Modified some points
Thanks sftim.
I am working on for other points too.
2020-10-01 08:13:09 +09:00
Kubernetes Prow Robot 7190ac2a24 Merge pull request #24286 from santadasu/patch-2
Fixing the URL for operator framework
2020-09-30 16:06:53 -07:00
Kubernetes Prow Robot d32bc81f3a Merge pull request #24175 from willseeyou/patch-1
fix typo in content/en/docs/concepts/workloads/pods/_index.md
2020-09-30 15:56:54 -07:00
santadasu 2a25de3a78 Update certificate-signing-requests.md
Reworded the sentence for easy comprehension.
2020-09-30 15:47:08 -07:00
Tim Bannister 735410f17b Only load copy-and-paste helper on pages that use it
This change helps improve load times for key non-documentation pages
such as https://kubernetes.io/
2020-09-30 23:42:00 +01:00
santadasu 56c51724e8 Fixing the URL for operator framework
None
2020-09-30 15:26:57 -07:00
Piotr Sykulski 996f433b92 Fix Common Name in Ingress TLS example to match the name used in example yaml. 2020-09-30 23:49:20 +02:00
Kubernetes Prow Robot e2233f570a Merge pull request #24270 from roshnaeem/patch-1
Delete sitemap.md
2020-09-30 12:04:54 -07:00
Kubernetes Prow Robot 3c15be9995 Merge pull request #24237 from kbhawkey/kb-fixup-eviction-content-type
fix eviction policy content type
2020-09-30 11:30:54 -07:00
Kubernetes Prow Robot ee59d7f02f Merge pull request #24234 from kbhawkey/kb-cleanup-config-site
update tab component, remove jquery-ui
2020-09-30 11:24:54 -07:00
Karen Bradshaw a3fbdacef2 remove header partial 2020-09-30 13:40:32 -04:00
Karen Bradshaw ced6db30d7 remove more jquery css 2020-09-30 12:03:21 -04:00
Karen Bradshaw e84e0c0b75 update tab component, remove jquery-ui 2020-09-30 12:03:20 -04:00
Kubernetes Prow Robot b9d53624fa Merge pull request #24168 from bnutt/bnutt/fix_typo_in_scheduling_framework
Fix typo in en/docs/concepts/scheduling-eviction/scheduling-framework.md
2020-09-30 08:35:25 -07:00
Kubernetes Prow Robot 9f5bd65da2 Merge pull request #24079 from zaneb/patch-1
Fix grammatical error in headline
2020-09-30 08:31:25 -07:00
ROSHEEN NAEEM b1fb333fad Delete sitemap.md 2020-09-30 20:30:50 +05:00
Kubernetes Prow Robot 1db86fc2a2 Merge pull request #24255 from ydcool/zh_rm_kubeadm_alpha_kubelet_config_download
Remove 'kubeadm alpha kubelet config download' for zh
2020-09-30 06:29:25 -07:00
Kubernetes Prow Robot fe5c525b31 Merge pull request #24253 from ydcool/zh_remove_clc_page
Remove "Running Kubernetes on CenturyLink Cloud" for zh
2020-09-30 06:05:25 -07:00
Kubernetes Prow Robot 6e445aabc7 Merge pull request #24251 from ydcool/zh-remove_configure_cloud_provider_firewall
Remove “Configure Your Cloud Provider's Firewalls” for zh
2020-09-30 06:03:24 -07:00
Kubernetes Prow Robot ffadb1818e Merge pull request #24246 from ydcool/zh-linkchecker
Add zh trans of linkchecker
2020-09-30 06:01:25 -07:00
Kubernetes Prow Robot 9df0db91c8 Merge pull request #24244 from rwrr/master
Fix typo
2020-09-30 05:59:25 -07:00
Kubernetes Prow Robot cdc220ced6 Merge pull request #24242 from ydcool/zh-move-search-page
Move content/zh/docs/search.md
2020-09-30 05:55:25 -07:00
Kubernetes Prow Robot 32509a7d27 Merge pull request #24241 from ydcool/zh-remove-atom-snippets
Remove atom-snippets for zh
2020-09-30 05:53:25 -07:00
Kubernetes Prow Robot aaab102912 Merge pull request #24250 from ydcool/zh-fix-feature-state
Clean up feature state templates for zh
2020-09-30 05:49:25 -07:00
Dominic Yin eba9c41d6f Clean up zh/docs/concepts/cluster-administration/monitoring.md 2020-09-30 20:14:17 +08:00
Dominic Yin 81f533bc2f Clean up zh controller-metrics.md 2020-09-30 19:59:20 +08:00
Dominic Yin f2d5227067 Remove 'kubeadm alpha kubelet config download' for zh 2020-09-30 18:23:02 +08:00
Dominic Yin e25641bf79 Remove "Running Kubernetes on CenturyLink Cloud" for zh 2020-09-30 17:51:01 +08:00
Dominic Yin 5416e9f05e Clean up gifs under content/zh/docs/setup/production-environment/windows/ 2020-09-30 17:45:53 +08:00
Dominic Yin 893570b790 Remove “Configure Your Cloud Provider's Firewalls” for zh 2020-09-30 17:27:28 +08:00
Dominic Yin d8419fc244 clean up feature state shortcode for zh 2020-09-30 17:20:02 +08:00
bryan 34d0a6f2ce resolve conflicts 2020-09-30 17:16:23 +08:00
Kubernetes Prow Robot 6d73873e19 Merge pull request #24248 from hadianr/patch-2
fix typo wording dinamsi to dinamis
2020-09-30 02:13:25 -07:00
William Chang 0cfd1c01a4 Fix Setup Page Based on Standardization 2020-09-30 16:01:40 +07:00
Kubernetes Prow Robot 202b9957ec Merge pull request #24243 from ydcool/zh-remove-cloudstack
Remove on-premises VMs section fo zh
2020-09-30 01:31:25 -07:00
Kubernetes Prow Robot 7716af2846 Merge pull request #24118 from tengqm/follow-24069
[zh] Fix go marker for listMapKey in the merge strategy
2020-09-30 01:21:24 -07:00
Hadian Rahmat 6d709a1b99 fix typo wording dinamsi to dinamis 2020-09-30 15:05:41 +07:00
Kubernetes Prow Robot 556d81398b Merge pull request #24166 from l1ch40/master
docs: Remove the redundant https_proxy variable
2020-09-30 01:03:25 -07:00
Kubernetes Prow Robot f31f7e953d Merge pull request #24223 from howieyuen/dns-config
[zh] reconcile dns config
2020-09-30 00:45:26 -07:00
Kubernetes Prow Robot 6e6712a4c2 Merge pull request #24222 from howieyuen/cc
[zh] fix typo for content/zh/docs/concepts/architecture/cloud-controller.md
2020-09-30 00:43:25 -07:00
Kubernetes Prow Robot fd75f99d16 Merge pull request #24179 from zhiguo-lu/zh-addpage-task-debug-running-pod
[zh] add page: /zh/docs/tasks/debug-application-cluster/debug-running-pod/, fix 24177
2020-09-30 00:29:25 -07:00
Kubernetes Prow Robot 082ca03912 Merge pull request #24240 from ydcool/zh-remove-cloud-provider-page
Remove cloud providers page and links for zh
2020-09-30 00:01:24 -07:00
Kubernetes Prow Robot 690e577797 Merge pull request #24239 from howieyuen/container-env
[zh]fix broken links in /zh/docs/reference/glossary/container-env-variables.md
2020-09-29 23:59:25 -07:00
Dominic Yin 8c1291f633 Add zh trans of linkchecker 2020-09-30 14:53:08 +08:00
luzg d646c6b4f6 add page: /zh/docs/tasks/debug-application-cluster/debug-running-pod/, fix 24177
make change according to howieyuen
2020-09-30 14:46:24 +08:00
Yoshiki Fujiwara 9edf2eaf19 Modified verb "コントロール" into "制御" 2020-09-30 13:24:21 +09:00
Yoshiki Fujiwara ee9961c59f Update content/ja/docs/reference/access-authn-authz/rbac.md
OKです!

Co-authored-by: inductor(Kohei) <kela@inductor.me>
2020-09-30 13:20:31 +09:00
Radix10 c06a15fc47 Fix typo 2020-09-30 12:01:06 +08:00
Kubernetes Prow Robot fea9e0c640 Merge pull request #24211 from habibrosyad/k/w-glo-rbac
Translate glossary for RBAC into Bahasa
2020-09-29 20:53:24 -07:00
Dominic Yin 677ae0e433 Remove on-premises VMs section fo zh 2020-09-30 11:50:41 +08:00
Dominic Yin 78d93f6119 move content/zh/docs/search.md to content/zh/search.md 2020-09-30 11:43:22 +08:00
Dominic Yin 973ecd483b remove atom-snippets for zh 2020-09-30 11:32:52 +08:00
Dominic Yin 8b5eaa6f1a Remove cloud providers page for zh. ref #23517
Signed-off-by: Dominic Yin <yindongchao@inspur.com>
2020-09-30 11:20:58 +08:00
yuanhao 02abe6c886 fix broken links in /zh/docs/reference/glossary/container-env-variables.md 2020-09-30 11:05:21 +08:00
M. Habib Rosyad dfe0530939 Translate glossary for RBAC into Bahasa 2020-09-30 09:35:04 +07:00
Kubernetes Prow Robot 8c48fd3a83 Merge pull request #24176 from Arhell/fix-indent
remove indent
2020-09-29 19:17:24 -07:00
Kubernetes Prow Robot 1b5e09fb10 Merge pull request #23257 from Vickey-Wu/patch-2
fix: add missing content about certificate
2020-09-29 19:05:24 -07:00
Kubernetes Prow Robot e2b370c983 Merge pull request #24075 from miry/patch-1
[zh] Use apiversion networking.k8s.io/v1 for ingress in example
2020-09-29 18:25:25 -07:00
Kubernetes Prow Robot 0445c38154 Merge pull request #24225 from miry/update-ingress-example-with-new-api-en
[en] Use apiversion networking.k8s.io/v1 for ingress
2020-09-29 18:23:25 -07:00
Karen Bradshaw 3fc4a3e8b7 fix eviction policy content type 2020-09-29 20:37:02 -04:00
Kubernetes Prow Robot 6a85a07290 Merge pull request #21112 from rennokki/patch-1
Added new PHP client library
2020-09-29 15:21:25 -07:00
Kubernetes Prow Robot cbc8e5bbda Merge pull request #22946 from cofyc/fix22944
Document Volume and Claim Pre-binding feature
2020-09-29 15:09:25 -07:00
Kubernetes Prow Robot 6231d8406b Merge pull request #24142 from adecarolis/add-signerName
add  signerName to CertificateSigningRequest
2020-09-29 15:07:25 -07:00
Tim Bannister f77650a4f6 Revise style of site front page
On the front page of the site, the first paragraph was actually a
heading. Replace that with a text paragraph that has a similar style.
2020-09-29 23:00:00 +01:00
santadasu 5ede1e94c5 Correct a type in horizontal-pod-autoscale file
None
2020-09-29 14:28:39 -07:00
Kubernetes Prow Robot 7a26860248 Merge pull request #24069 from nikhita/ssa-listmapkey
SSA: fix go marker for listMapKey in the merge strategy
2020-09-29 12:21:26 -07:00
Kubernetes Prow Robot 179b3ca139 Merge pull request #24219 from tomaslm/patch-1
Update dry-run flag
2020-09-29 10:15:26 -07:00
Kubernetes Prow Robot 8eb2e6c844 Merge pull request #22056 from mikonoid/issue#14
Localize '/docs/tasks/tools/install-minikube' path
2020-09-29 10:13:25 -07:00
yoshiki0705 2ac805485b rbac-ja 2020-09-30 01:12:42 +09:00
Michael Nikitochkin 599e1db6dc Use apiversion networking.k8s.io/v1 for ingress for EN
There is a warning deprecation message for kubernetes v1.19:

```
Warning: networking.k8s.io/v1beta1 Ingress is deprecated in v1.19+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
```

Switched apiversion in the example to `networking.k8s.io/v1`
2020-09-29 18:03:58 +02:00
Michael Nikitochkin 5136f8d552 Use apiversion networking.k8s.io/v1 for ingress in ZH version
There is a warning deprecation message for kubernetes v1.19:

```
Warning: networking.k8s.io/v1beta1 Ingress is deprecated in v1.19+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
```

Switched apiversion in the example to `networking.k8s.io/v1`
2020-09-29 17:55:26 +02:00
Hao Yuan 28ddd77aac reconcile dns config 2020-09-29 21:13:12 +08:00
Hao Yuan 03c3c128ed fix typo 2020-09-29 20:57:50 +08:00
Kubernetes Prow Robot 8084228ad3 Merge pull request #24182 from npu21/schedule-zh
Add post-filter part in scheduling-framework for zh
2020-09-29 05:47:27 -07:00
Kubernetes Prow Robot 79502e8af7 Merge pull request #24191 from npu21/tasks-zh
update run command part for zh
2020-09-29 05:45:26 -07:00
Kubernetes Prow Robot 66d5a10b3a Merge pull request #24209 from huchengze/patch-39
Update node-conformance.md for zh
2020-09-29 05:43:26 -07:00
Kubernetes Prow Robot 0f60407670 Merge pull request #24198 from npu21/i18n-zh
Add third party message for zh
2020-09-29 05:41:26 -07:00
Kubernetes Prow Robot 2c7cca1081 Merge pull request #24070 from gaoguangze111/update-link-access-cluster
update link in page access-cluster
2020-09-29 05:39:27 -07:00
Kubernetes Prow Robot fc2ee814d6 Merge pull request #24066 from gaoguangze111/update-link-authorization
Update link in page authorization
2020-09-29 05:37:26 -07:00
Kubernetes Prow Robot fcdc245ed4 Merge pull request #24068 from gaoguangze111/update-link-controlling-access
Update link controlling-access
2020-09-29 05:35:27 -07:00
Kubernetes Prow Robot 3262b9fde8 Merge pull request #24205 from huchengze/patch-36
Update web-ui-dashboard.md for zh
2020-09-29 05:33:27 -07:00
Kubernetes Prow Robot f3213b2f94 Merge pull request #24208 from huchengze/patch-38
Update admission-controllers.md for zh
2020-09-29 05:31:27 -07:00
Kubernetes Prow Robot 14a5ae8644 Merge pull request #24206 from huchengze/patch-37
Update rbac.md
2020-09-29 05:29:26 -07:00
Kubernetes Prow Robot 6cf650ee41 Merge pull request #24180 from habibrosyad/k/w-glo
Translate Standardized Glossary page into Bahasa
2020-09-29 05:13:27 -07:00
M. Habib Rosyad 7aeaa6e48d Translate Standardized Glossary page into Bahasa 2020-09-29 19:05:20 +07:00
Tomas Menito f24bf6f60b Update dry-run flag
dry-run is deprecated and can be replaced with --dry-run=client.
2020-09-29 07:25:48 -03:00
Vickey Wu 8c5e6dcc2d break the long lines
break the long lines
2020-09-29 16:19:36 +08:00
Kubernetes Prow Robot 98cfcca5ff Merge pull request #22303 from crixo/translate/control-plane-node-communication
upgrade translation for control-plane-node-communication
2020-09-29 00:57:25 -07:00
huccshen 08f42e6f45 Update node-conformance.md 2020-09-29 15:43:24 +08:00
huccshen 56ceb53114 Update admission-controllers.md 2020-09-29 15:38:32 +08:00
huccshen 2d71388f96 Update rbac.md 2020-09-29 15:30:02 +08:00
huccshen 6d2d7d9f43 Update web-ui-dashboard.md 2020-09-29 15:20:24 +08:00
huccshen efac1ef8fc Update weave-network-policy.md 2020-09-29 15:17:55 +08:00
bryan 31aa397284 translate 'set up Konnectivity service' into chinese 2020-09-29 15:02:15 +08:00
Zhang Yong 8d28d887fe update thirdpary message part 2020-09-29 14:15:02 +08:00
Zhang Yong 31b8ea7469 update run command part 2020-09-29 11:07:13 +08:00
Yong Zhang f73f527fce Update scheduling-framework.md 2020-09-29 10:32:26 +08:00
Tim Bannister 2e0c6ba299 Reduce size of image used on site front page
This image of Sarah Wells at KubeCon Europe 2018 makes a large
contribution to the overall amount of data loaded for the front page of
the site.

This commit reduces it to a squashed version that preserves detail in
the figure (blurring the background more).
2020-09-28 22:59:15 +01:00
Erik L. Arneson d63810ded1 Add new blog cross-posted from k8s.dev
This is crossposted from the Kubernetes Contributor Community blog.
2020-09-28 13:55:25 -07:00
Kubernetes Prow Robot cd93cad54f Merge pull request #23905 from annajung/master
Approval permission for 1.20 Release
2020-09-28 08:36:50 -07:00
Kubernetes Prow Robot 32c2439387 Merge pull request #24145 from Rajpratik71/patch-2
docs: Use sudo and tee uniformly everywhere
2020-09-28 06:04:49 -07:00
Kubernetes Prow Robot 3065179fcd Merge pull request #24165 from baiyutang/patch-9
Update kubeadm_upgrade_plan.md
2020-09-28 05:58:48 -07:00
Kubernetes Prow Robot c06fbae010 Merge pull request #24164 from wwgfhf/wwg-disruptions
Update zh translation in disruptions.md
2020-09-28 05:56:48 -07:00
Kubernetes Prow Robot 124f23c817 Merge pull request #24162 from wwgfhf/wwg-service
Update zh translation in service.md
2020-09-28 05:54:48 -07:00
Pratik raj 48702c35ca docs: Use sudo and tee uniformly everywhere
Added sudo uniformly everywhere it required as it presence doesn't affect anything , but it help new user's of linux , docker or kubernetes who are not much familiar with internals and also for who doesn't read the documentation line by line and use the guides for command reference and just copy paste for their use.

Also , changed  the way of writing or creating files , now using "tee" because previous way gives permission issue for non sudo users.
2020-09-28 17:48:07 +05:30
Zhang Yong 93c7a1ca43 add post-filter part 2020-09-28 17:58:34 +08:00
Zhang Yong e4c3319ad3 add post-filter part 2020-09-28 17:39:02 +08:00
Yong Zhang b526e8b832 Merge pull request #6 from kubernetes/master
merge from origin
2020-09-28 16:42:54 +08:00
Arhell e7414feae1 remove indent 2020-09-28 10:37:56 +03:00
Amos Chu b8bc85f804 fix typo in content/en/docs/concepts/workloads/pods/_index.md
wrong spelling for comunicate, it should be communicate
2020-09-28 15:21:31 +08:00
Jim Angel 52d52488f6 cleanup docs owners 2020-09-28 01:21:35 +00:00
Kubernetes Prow Robot 2bc1342031 Merge pull request #23799 from zacharysarah/chair-emeritus
Update for chair emeritus
2020-09-27 14:36:48 -07:00
zacharysarah 3a9615d2c7 Update for chair emeritus 2020-09-27 14:30:12 -07:00
Brian Nutt 1c90c995c3 Fix typo in en/docs/concepts/scheduling-eviction/scheduling-framework.md
Fixes description for Postfilter plugin. The plugin is called when no feasible nodes were found for the pod being scheduled.
2020-09-27 13:28:52 -07:00
Casie Oxford 826d53c81f Update style guidelines for API object capitalization & formatting (#23497)
* Update style-guide.md

updates to api object handling according to SIG email discussion.

* Update content/en/docs/contribute/style/style-guide.md

Co-authored-by: Zach Corleissen <zacharysarah@users.noreply.github.com>

* Update style-guide.md

updating API Object Examples

* Update content/en/docs/contribute/style/style-guide.md

Co-authored-by: Zach Corleissen <zacharysarah@users.noreply.github.com>

* Update content/en/docs/contribute/style/style-guide.md

Co-authored-by: Zach Corleissen <zacharysarah@users.noreply.github.com>

* Update content/en/docs/contribute/style/style-guide.md

Co-authored-by: Tim Bannister <tim@scalefactory.com>

Co-authored-by: Zach Corleissen <zacharysarah@users.noreply.github.com>
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-09-27 13:10:48 -07:00
Kubernetes Prow Robot a67cb901a7 Merge pull request #24116 from madetara/ru_community_page
Translate community and CoC pages to russian
2020-09-27 08:38:48 -07:00
Kubernetes Prow Robot 67e16d4295 Merge pull request #24012 from zhiguo-lu/zh-concepts-storage-ephemeral-addpage
[zh] add zh/docs/concepts/storage/ephemeral-volumes.md, fix #24011
2020-09-27 06:32:48 -07:00
Chao Li e4c0038b14 docs: remove duplicate https_proxy variable
This has a duplicate https_proxy variable.
2020-09-27 21:02:09 +08:00
白玉堂 e3054865e2 Update kubeadm_upgrade_plan.md 2020-09-27 17:51:36 +08:00
wwgfhf 2ad06ab73f Update disruptions.md 2020-09-27 17:48:01 +08:00
wwgfhf 7eb77ea2a2 Update service.md 2020-09-27 17:25:00 +08:00
Liu Ming 80f4942c53 docs: 缺少右括号
docs: 缺少右括号
2020-09-27 16:48:27 +08:00
Kubernetes Prow Robot 3096ed5311 Merge pull request #24099 from zhiguo-lu/zh-addpage-task-admin-cluster-safely-drain-node
[zh] add page: /zh/docs/tasks/administer-cluster/safely-drain-node/ ,fix 24097
2020-09-26 23:56:48 -07:00
GoodGameZoo 7686c08fd3 update more links 2020-09-26 20:20:40 -07:00
GoodGameZoo 21b72674d3 Update more links 2020-09-26 20:07:24 -07:00
GoodGameZoo a8542542a9 Update more links 2020-09-26 19:37:56 -07:00
Yecheng Fu 318d17b85f add pre-binding section 2020-09-27 10:17:34 +08:00
Kubernetes Prow Robot 8fab6b0096 Merge pull request #24064 from Konmoron/patch-1
Update taint-and-toleration.md
2020-09-26 18:20:50 -07:00
WilliamChang80 f71483103d Update Setup Page 2020-09-26 22:49:50 +07:00
Tim Bannister 961438877d Set sitemap priority for key pages
The very key pages get 1.0 priority; other good landing pages get 0.9
and the remaining pages have a default priority, 0.75.
2020-09-26 14:06:22 +01:00
Rafficer 93334aba35 Fix typo in german install-kubernetes.md 2020-09-26 14:57:03 +02:00
Alain De Carolis 65e706e346 add signerName to CertificateSigningRequest
signerName is now mandatory. The provided example fails in 1.19.2 with: `kubernetes missing required field "signerName"`
2020-09-25 18:01:21 -04:00
Qiutong Song fd97fcd9d5 Add a new known issue to the out-of-resource doc: active_file memory is not considered as available memory 2020-09-25 13:49:35 -07:00
Kubernetes Prow Robot b66ce8d8cd Merge pull request #24109 from Arhell/fix-link
fix broken link
2020-09-25 06:09:11 -07:00
Kubernetes Prow Robot 64b61ae35a Merge pull request #24126 from howieyuen/admission-controller
[zh] fix abnormal display of anchor points
2020-09-25 05:31:11 -07:00
Kubernetes Prow Robot 18e851a2c0 Merge pull request #24057 from gaoguangze111/Update-link-configure-aggregation-layer
Update link in page configure-aggregation-layer.md
2020-09-25 03:19:12 -07:00
Hao Yuan 19259e21b7 fix abnormal display of anchor points 2020-09-25 18:06:37 +08:00
Liu Ming 571b8e1bc7 docs: lost "有" word
Signed-off-by: Liu Ming <hit_oak_tree@126.com>
2020-09-25 17:46:17 +08:00
luzg 09d3244e65 [zh] add page:/zh/docs/tasks/administer-cluster/safely-drain-node/ ,fix 24097
change according to tengqm's comment
2020-09-25 16:01:09 +08:00
luzg df62ce146c [zh] add zh/docs/concepts/storage/ephemeral-volumes.md, fix 24011
make change according to tengqm's comment.
2020-09-25 15:38:10 +08:00
Kubernetes Prow Robot 28980202c1 Merge pull request #24119 from kubernetes/dev-1.19-ko.2
Second Korean l10n work for release-1.19
2020-09-24 23:13:11 -07:00
Kubernetes Prow Robot ab8fb532fa Merge pull request #24034 from baiyutang/patch-8
Update multiple-zones.md
2020-09-24 22:55:11 -07:00
Kubernetes Prow Robot f3ea52ec98 Merge pull request #24060 from zhiguo-lu/zh-concepts-clusteradmin-systemlogs-addpage
[zh] add zh/docs/concepts/cluster-administration/system-logs.md, fix #24025
2020-09-24 22:51:11 -07:00
Kubernetes Prow Robot 9561c23377 Merge pull request #24098 from howieyuen/scheduling-config-2
[zh] translate content/zh/docs/reference/scheduling/config.md
2020-09-24 22:47:11 -07:00
Kubernetes Prow Robot 05d9317d65 Merge pull request #24033 from Yuaninga/patch-2
[zh] add the missing content in [zh/docs/setup/production-environment/container-runtimes.md]
2020-09-24 22:41:11 -07:00
Kubernetes Prow Robot eb74122190 Merge pull request #24045 from howieyuen/scheduling-config
[zh] translate content/zh/docs/reference/scheduling/policies.md
2020-09-24 22:39:11 -07:00
Qiming Teng d327117a50 [zh] Fix go marker for listMapKey in the merge strategy
This is a follow-up of #24069.
2020-09-25 13:17:40 +08:00
Jerry Park 9cb997ab15 Second Korean l10n work for release-1.19
- Fix issue with links to already translated documents (#23829)
- Update outdated files in the dev-1.19-ko.2 branch (#23827)
- Fix issue with links to already translated documents (#23999)
- Translate tasks/configure-pod-container/configure-persistent-volume-storage in Korean (#23867)
- Translate reference/access-authn-authz/service-accounts-admin/ into Korean (#23974)
- Translate reference/access-authn-authz/controlling-access/ into Korean (#23955)
- Translate tasks/job/automated-tasks-with-cron-jobs.md into Korean (#23543)
- Translate reference/access-authn-authz/authorization/ into Korean (#23989)
- Update Ko localization guide (#24023)
- Translate tasks/job/fine-parallel-processing-work-queue/ into Korean (#23841)
- Translate setup/production-environment/windows/intro-windows-in-kubernetes and reflect reviews (#23879)
- Translate tasks/debug-application-cluster/debug-pod-replication-controller in Korean (#23896)

Co-authored-by: seokho-son <shsongist@gmail.com>
Co-authored-by: jmyung <jesang.myung@gmail.com>
Co-authored-by: Jerry Park <jaehwa@gmail.com>
Co-authored-by: markruler <csu0414@gmail.com>
Co-authored-by: bluefriday <bluefriday86@gmail.com>
2020-09-25 13:58:55 +09:00
madetara c4b2c82254 docs: add russian version community and CoC pages
Refs #18598
2020-09-25 07:36:53 +03:00
Nikhita Raghunath f5af09b9f8 SSA: fix go marker for listMapKey in the merge strategy
Ref: https://github.com/kubernetes/kube-openapi/blob/64514a1d5d596b96e6f957e2be275ae14d6b0804/pkg/generators/extension.go#L49-L50
2020-09-25 09:51:17 +05:30
Kubernetes Prow Robot 19b6599bbf Merge pull request #24093 from ChenjunZou/patch-1
Update service.md
2020-09-24 20:37:11 -07:00
Kubernetes Prow Robot 632123085c Merge pull request #24113 from habibrosyad/k/w-glo-kl
Translate glossary for kubectl into Bahasa
2020-09-24 20:05:11 -07:00
Kubernetes Prow Robot daa51753c8 Merge pull request #24111 from habibrosyad/k/w-glo-ns
Translate glossary for Namespace into Bahasa
2020-09-24 20:03:11 -07:00
M. Habib Rosyad 5058f22ee1 Translate glossary for kubectl into Bahasa 2020-09-25 09:24:29 +07:00
M. Habib Rosyad 35eadb9744 Translate glossary for Namespace into Bahasa 2020-09-25 08:43:45 +07:00
Yoon 4ad15695d2 fix link in intro-windows-in-kubernetes 2020-09-25 10:29:07 +09:00
Arhell 112af96e09 fix broken link 2020-09-25 01:34:13 +03:00
Kubernetes Prow Robot b0fa090609 Merge pull request #24021 from yue9944882/apf-typo
One digit typo in APF docs
2020-09-24 10:48:06 -07:00
yuanhao 22ddf4f82e translate content/zh/docs/reference/scheduling/policies.md 2020-09-24 23:22:09 +08:00
Hao Yuan dc71c947b6 translate content/zh/docs/reference/scheduling/config.md 2020-09-24 23:05:36 +08:00
Yuaninga bdea6f8738 Update container-runtimes.md
Supplement the Chinese version of containerd installed by windows when running the container of community production environment

Signed-off-by: Yuaninga <1846225041@qq.com>
2020-09-24 22:30:24 +08:00
Kubernetes Prow Robot 1c0367f094 Merge pull request #24087 from zhiguo-lu/addpage-zh-task-configpod-nodeaffinity
[zh] add page: /zh/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/ fix 24086
2020-09-24 07:00:06 -07:00
Kubernetes Prow Robot 28df39222b Merge pull request #24104 from andrescaroc/patch-1
Update the run command to refer to pod creation
2020-09-24 06:52:05 -07:00
ldynia 7dc69cfa0b Update configmap.md
Changing nginx to alpine, This way it's more generic giving it generic context.
2020-09-24 15:06:15 +02:00
Andres Caro 9fd549b12c Update the run command to refer to pod creation
The "run" command refers to deployment creation and it should refer to pod creation
2020-09-24 08:05:24 -05:00
Kubernetes Prow Robot efa6d3de30 Merge pull request #24074 from dkarlovi/patch-1
Make the dashboard URL a clickable link
2020-09-24 05:16:05 -07:00
Kubernetes Prow Robot 8316842116 Merge pull request #24100 from AlphaWong/patch-1
doc: fix broken link
2020-09-24 04:42:05 -07:00
ldynia 8dcf08a4d0 image does not exist
docker pull game.example/demo-game results with Error response from daemon: Get https://game.example/v2/: dial tcp: lookup game.example: no such host.
Therefore is better to change image to nginx
2020-09-24 13:03:53 +02:00
Alpha eafae3d991 doc: fix broken link 2020-09-24 18:50:32 +08:00
Kubernetes Prow Robot 036092a1d1 Merge pull request #24088 from habibrosyad/k/w-glo-pv
Translate glossary for PersistentVolume into Bahasa
2020-09-24 03:38:05 -07:00
Kubernetes Prow Robot 1555479d8c Merge pull request #24096 from habibrosyad/k/w-glo-cm
Translate glossary for ConfigMap into Bahasa
2020-09-24 03:34:05 -07:00
Kubernetes Prow Robot d22948c0f0 Merge pull request #24094 from habibrosyad/k/w-glo-pvc
Translate glossary for PersistentVolumeClaim into Bahasa
2020-09-24 03:18:05 -07:00
M. Habib Rosyad d4fd5f7297 Translate glossary for PersistentVolumeClaim into Bahasa 2020-09-24 17:06:06 +07:00
M. Habib Rosyad fa12dec99a Translate glossary for ConfigMap into Bahasa 2020-09-24 16:38:57 +07:00
luzg 5586c71b66 [zh] add page: /zh/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/ fix 24086
make change according to tengqm's comment
2020-09-24 17:10:48 +08:00
Kubernetes Prow Robot dc7fd533f3 Merge pull request #24092 from xieyanker/fix_format_err
Fix some format error
2020-09-24 00:48:05 -07:00
Marc Vertes 959d3152f8 Update traefik links in ingress-controllers.md
Traefik github repo has been moved from https://github.com/containous/traefik to https://github.com/traefik/traefik. The new company name is `Traefik Labs` and new site https://traefik.io
2020-09-24 09:34:03 +02:00
xieyanker 9062c42e32 Fix some format error 2020-09-24 14:38:38 +08:00
ChenjunZou d93ab4004d Update service.md
fix a mispelled keyword.
2020-09-24 14:25:20 +08:00
Kubernetes Prow Robot fed613a570 Merge pull request #24082 from Wenhao-Xu/patch-1
Update images.md, wrong words
2020-09-23 23:20:05 -07:00
xieyanker 0a71a53d19 Fix some format error 2020-09-24 14:05:05 +08:00
M. Habib Rosyad 0f2cad4657 Translate glossary for PersistentVolume into Bahasa 2020-09-24 11:00:57 +07:00
Wenhao Xu 79e9ccd03b Update images.md 2020-09-24 10:00:23 +08:00
Kubernetes Prow Robot cf30636263 Merge pull request #24054 from jybarnes/patch-1
Fix typo
2020-09-23 12:56:05 -07:00
Zane Bitter 8e66f24319 Fix grammatical error 2020-09-23 15:46:19 -04:00
Dalibor Karlović 8c626d69d3 Make the dashboard URL a clickable link 2020-09-23 18:36:24 +02:00
Kubernetes Prow Robot 72f0d1d3ad Merge pull request #23283 from sftim/20200820_improve_diagrams_for_ingress
Switch Ingress concept to use MermaidJS diagrams
2020-09-23 08:04:09 -07:00
Kubernetes Prow Robot 7a1546f95f Merge pull request #24071 from atomerz/patch-1
Update guestbook-logs-metrics-with-elk.md
2020-09-23 07:38:09 -07:00
atomerz f0bd0a535f Update content/en/docs/tutorials/stateless-application/guestbook-logs-metrics-with-elk.md
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-09-23 17:49:25 +03:30
atomerz 53d3f20548 Update guestbook-logs-metrics-with-elk.md
The description was confusing. Moved around the text and removed duplicated/unnecessary parts.
2020-09-23 15:37:20 +03:30
GoodGameZoo 6e62a7803a update link in page access-cluster 2020-09-23 03:01:49 -07:00
jybarnes 3af530a20d Fix typo 2020-09-23 18:28:05 +09:00
GoodGameZoo 41547dc015 Update link controlling-access 2020-09-23 02:11:28 -07:00
GoodGameZoo fda4f5b58e Update link in page authorization 2020-09-23 01:41:51 -07:00
Kubernetes Prow Robot 4b09e82e7e Merge pull request #24062 from zhiguo-lu/zh-concepts-configuration-binpacking-relocate
[zh] relocate /zh/docs/concepts/configuration/resource-bin-packing/md, , fix #24061
2020-09-23 00:48:08 -07:00
luzg b1add796f3 [zh] addzh/docs/concepts/cluster-administration/system-logs.md, fix 24025
Update content/zh/docs/concepts/cluster-administration/system-logs.md

Co-authored-by: Qiming Teng <tengqim@cn.ibm.com>

Update content/zh/docs/concepts/cluster-administration/system-logs.md

Co-authored-by: Qiming Teng <tengqim@cn.ibm.com>

Update content/zh/docs/concepts/cluster-administration/system-logs.md

Co-authored-by: Qiming Teng <tengqim@cn.ibm.com>

Update content/zh/docs/concepts/cluster-administration/system-logs.md

Co-authored-by: Qiming Teng <tengqim@cn.ibm.com>

Update content/zh/docs/concepts/cluster-administration/system-logs.md

Co-authored-by: Qiming Teng <tengqim@cn.ibm.com>

Update content/zh/docs/concepts/cluster-administration/system-logs.md

Co-authored-by: Qiming Teng <tengqim@cn.ibm.com>

Update content/zh/docs/concepts/cluster-administration/system-logs.md
2020-09-23 15:40:52 +08:00
Imer d7382474a0 Update taint-and-toleration.md
delete 

```shell
kubectl taint nodes node1 key:NoSchedule-
```

docs en no that
2020-09-23 15:24:44 +08:00
luzg ec9c6d0931 [zh] relocate /zh/docs/concepts/configuration/resource-bin-packing/md, fix 24061 2020-09-23 14:31:30 +08:00
Kubernetes Prow Robot 38db6f1cb3 Merge pull request #24017 from girikuncoro/reserve-compute-id
Translate reserve compute resource page to Bahasa Indonesia
2020-09-22 22:14:09 -07:00
Kubernetes Prow Robot 64c015b7df Merge pull request #23985 from supirman/patch-1
[id] Fix image path for Deploy App tutorial
2020-09-22 21:38:09 -07:00
Kubernetes Prow Robot aeb4afdf86 Merge pull request #23217 from shuuji3/contribute/style/content-organization
Translate contribute/style/content-organization into Japanese
2020-09-22 21:18:09 -07:00
Kubernetes Prow Robot d1708f5eaf Merge pull request #24056 from tengqm/optimize-zh-owners
Optimize Chinese localization owners
2020-09-22 21:14:08 -07:00
GoodGameZoo 9a9ff15214 Update link in page configure-aggregation-layer.md 2020-09-22 20:27:54 -07:00
Qiming Teng 5a362c65c3 Optimize Chinese localization owners 2020-09-23 11:16:13 +08:00
Jorge Vallecillo 2ff48e6f42 Fix typos 2020-09-22 14:27:09 -06:00
Douglas Schilling Landgraf 407eb62fcf README.md: add troubleshooting session for hugo
In case users run hugo (non extension version) we should
have a quick link for helping new developers/users to solve
the website build issue.

Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
2020-09-22 15:17:00 -04:00
Douglas Schilling Landgraf b22dae1712 README.md: Specify Hugo version
Not all Linux distros or Operating Systems ship Hugo
Extended version as default. If users try to run the website
project without the extended version it will fail.

Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
2020-09-22 14:49:52 -04:00
Ricardo Katz f4fe5eafd8 Add curl to required packages in kubectl install 2020-09-22 15:34:29 -03:00
Kubernetes Prow Robot 0b9ec5772a Merge pull request #24050 from Arhell/fix-indent
fix indent video block
2020-09-22 11:27:09 -07:00
Kubernetes Prow Robot 38b08c11f3 Merge pull request #24039 from shuuji3/en/concepts/workloads/pods/pod-topology-spread-constraints
Replace text diagrams with ones rendered by mermaid.js on concepts/workloads/pods/pod-topology-spread-constraints
2020-09-22 11:10:43 -07:00
Michal Broz 43c6ce2a5f Remove External Links 2020-09-22 13:08:16 -05:00
Michal Broz 7a02c0871e Remove robo font 2020-09-22 13:08:16 -05:00
Tim Bannister 61fdeb79bf Switch Mermaid scrollbar to automatic 2020-09-22 18:46:53 +01:00
Celeste Horgan ed749d19f6 Add overflow CSS for mermaid.js diagrams 2020-09-22 17:10:45 +01:00
Tim Bannister d8573d9a42 Switch Ingress concept to use MermaidJS diagrams
Replace ASCII-art diagrams with MermaidJS-rendered drawings.
2020-09-22 17:10:45 +01:00
TAKAHASHI Shuuji 47efc81828 Replace text diagrams with ones rendered by mermaid. 2020-09-22 23:54:50 +09:00
Kubernetes Prow Robot e931e026e9 Merge pull request #24019 from habibrosyad/gh-22296-210920
Complete ID translation for /docs/reference/access-authn-authz/rbac
2020-09-22 02:08:47 -07:00
Giri Kuncoro 557f95dcb7 Translate reserve compute resource page to Bahasa Indonesia 2020-09-22 09:12:11 +07:00
Kubernetes Prow Robot 15011a6033 Merge pull request #23178 from tengqm/zh-parallel-job-rework
[zh] Rework parallel processing expansion
2020-09-21 18:34:48 -07:00
Kubernetes Prow Robot 29a73e7c6f Merge pull request #23988 from tanjunchen/add-zh-member
add @tanjunchen to sig-docs-zh team
2020-09-21 18:30:47 -07:00
Kubernetes Prow Robot 2aa3f854de Merge pull request #24028 from baiyutang/master
Update service.md
2020-09-21 17:40:47 -07:00
Kubernetes Prow Robot 3d4f9285e8 Merge pull request #24032 from suryast/master
Update 404.html page
2020-09-21 16:10:50 -07:00
Arhell 12d89ee2bb fix indent video block 2020-09-22 00:58:09 +03:00
Jorge Vallecillo 1213635880 Fix typos 2020-09-21 15:36:01 -06:00
白玉堂 88f94fbbe4 Update multiple-zones.md
modify wrong word
2020-09-21 23:56:34 +08:00
Surya Setiyaputra 799447fea8 Merge pull request #1 from suryast/issue-23881-404-remove-data-proofer-ignore
Update 404.html
2020-09-22 00:50:24 +10:00
Surya Setiyaputra 02dccc54d4 Update 404.html
Remove text data-proofer-ignore
2020-09-22 00:48:15 +10:00
Kubernetes Prow Robot cd897207ec Merge pull request #23987 from habibrosyad/gh-22296-180920
Add ID translation for /docs/tutorials/stateful-application/basic-sta…
2020-09-21 06:44:32 -07:00
白玉堂 ac2adccab1 Update service.md 2020-09-21 21:28:37 +08:00
yue9944882 72b8425895 a digit typo in apf docs 2020-09-21 16:27:34 +08:00
Kubernetes Prow Robot d4e1edfd0b Merge pull request #23866 from tengqm/refactor-api-concept
Remove duplicated content in concepts and reference
2020-09-21 01:18:31 -07:00
M. Habib Rosyad 99a29f9127 Complete ID translation for /docs/reference/access-authn-authz/rbac 2020-09-21 12:27:50 +07:00
Hao Yuan 314820acd7 [zh] translate /zh/docs/tasks/configmap-secret/managing-secret-using-kustomize.md (#24016)
* fix the mixed use of zh/en systembols

* optimize translation

* translate /zh/docs/tasks/configmap-secret/managing-secret-using-kustomize.md
2020-09-20 22:12:30 -07:00
Kubernetes Prow Robot c7ac12656c Merge pull request #23966 from kbhawkey/kb-fix-copy-clipboard
fix copy to clipboard
2020-09-20 12:08:29 -07:00
Kubernetes Prow Robot 0ae30992c6 Merge pull request #24013 from WilliamChang80/master
Fix documentation on minikube installation ID docs
2020-09-20 09:38:30 -07:00
William Chang 46fc5b5e0d Update install-minikube.md 2020-09-20 22:53:42 +07:00
WilliamChang80 3fdab8fe9a Merge branch 'master' of https://github.com/WilliamChang80/website 2020-09-20 22:29:20 +07:00
williamChang80 9c58ad1534 Fix link and docs in ID docs 2020-09-20 22:25:01 +07:00
Kubernetes Prow Robot 51d910e1eb Merge pull request #24004 from negz/patch-1
Clarify that bind verb does not require resourceNames
2020-09-20 08:22:30 -07:00
William Chang acb5afb410 Update install-minikube.md 2020-09-20 21:59:41 +07:00
Kubernetes Prow Robot 3f4b883f17 Merge pull request #23847 from devurandom/patch-1
kudeadm: Replace "master" with "control plane node"
2020-09-20 07:38:30 -07:00
williamChang80 3351468c61 Fix link and docs in ID docs 2020-09-20 21:33:08 +07:00
Kubernetes Prow Robot 549d778a2b Merge pull request #23785 from Miouge1/update-kubespray2
Update Kubespray page
2020-09-20 04:32:29 -07:00
Kubernetes Prow Robot c98e9e5c42 Merge pull request #23882 from kbhawkey/kb-service-word-cleanup
reword pod lifecycle, cleanup
2020-09-20 04:30:29 -07:00
Kubernetes Prow Robot 073500a717 Merge pull request #23990 from rgowrishankar/23984
Add reference to default-not-ready-toleration-seconds and default-unreachable-toleration-seconds k8s-apiserver input parameters in the subsection describing the DefaultTolerationSeconds in admission server
2020-09-20 04:28:29 -07:00
Kubernetes Prow Robot 346153b84d Merge pull request #23961 from NavidZ/patch-1
Fix a small typo in the docs
2020-09-20 04:26:29 -07:00
Kubernetes Prow Robot 995fcd856a Merge pull request #24006 from howieyuen/configmap-secret-2
[zh] translate zh/docs/tasks/configmap-secret/managing-secret-using-config-file.md
2020-09-20 03:32:29 -07:00
Kubernetes Prow Robot dbfb6f2b3a Merge pull request #22860 from feloy/pod-spread-constraints
docs | concepts | workloads | pods | pod-topology-spread-constraints
2020-09-20 03:28:29 -07:00
Philippe Martin c798084035 newline at end of yamls 2020-09-20 11:59:07 +02:00
Kubernetes Prow Robot 7e288d12a7 Merge pull request #23936 from shuuji3/concepts/workloads/pods/ephemeral-containers
Translate concepts/workloads/pods/ephemeral-containers into Japanese
2020-09-19 23:52:29 -07:00
M. Habib Rosyad 75ba2894c6 Add ID translation for /docs/tutorials/stateful-application/basic-stateful-set 2020-09-20 11:47:30 +07:00
yuanhao 7ad80f090d translate zh/docs/tasks/configmap-secret/managing-secret-using-config-file.md 2020-09-20 12:41:07 +08:00
Nic Cope 2f9b5e122e Move bind verb resourceNames hint inline of example 2020-09-19 16:34:06 -07:00
Kubernetes Prow Robot daf6210f07 Merge pull request #24010 from sushilkm/patch-1
Fixed typo s/kustomizae/kustomize
2020-09-19 16:20:29 -07:00
Sushil Kumar cf14321b76 Fixed typo
Fixed typo s/kustomizae/kustomize
2020-09-19 12:18:16 -07:00
Kubernetes Prow Robot 51bf421c89 Merge pull request #24003 from didier-durand/namespaces_FR
namespaces FR : fixing typos and improving a few points
2020-09-19 07:22:28 -07:00
Kubernetes Prow Robot 7a5fc711ab Merge pull request #23993 from fmuyassarov/fix-404-feruz
Fix 404 issues
2020-09-19 05:22:28 -07:00
yuanhao 3bc14789ad fix redirect to en link in chinese page 2020-09-19 20:19:23 +08:00
Kubernetes Prow Robot c85c3ff636 Merge pull request #24005 from Tej-Singh-Rana/k8s-tej
Contex to Context
2020-09-19 05:10:28 -07:00
Tej-Singh-Rana 70eba58d3b Contex to Context 2020-09-19 16:48:42 +05:30
Nic Cope f6496b0de5 Clarify that bind verb does not require resourceNames
This may be intuitive for most, but the existing phrasing read to me as
if `bind` were a special-case verb that _required_ me to explicitly state
which Roles or ClusterRoles it should apply to.

> You can only create/update a role binding if you […] or if you have
> been authorized to perform the bind verb on the referenced role.

> Grant them permissions needed to bind a particular role […]
> explicitly, by giving them permission to perform the bind verb on the
> particular Role (or ClusterRole).
2020-09-19 03:30:30 -07:00
didier 43893acd24 namespaces FR : fixing typos and improving a few points 2020-09-19 12:01:12 +02:00
Qiming Teng 59cac839d4 [zh] Rework parallel processing expansion
The English content was COMPLETELY REWRITTEN for DAMN REASONS.
2020-09-19 12:42:25 +08:00
Kubernetes Prow Robot 5ecdaee70a Merge pull request #23983 from howieyuen/configmap-secret
translate /zh/docs/tasks/configmap-secret/managing-secret-using-kubectl.md
2020-09-18 21:36:27 -07:00
Kubernetes Prow Robot d4d1c045cc Merge pull request #23754 from sftim/20200908_link_to_well_known_labels
Link to well-known labels rather than repeating the list
2020-09-18 21:34:27 -07:00
TAKAHASHI Shuuji 1c7cf96b5b Replace "ephemeral" with "エフェメラル". 2020-09-19 13:09:41 +09:00
TAKAHASHI Shuuji c02a3cf9ec Apply suggestions from code review
Co-authored-by: bells17 <bells171@gmail.com>
2020-09-19 12:58:40 +09:00
Kubernetes Prow Robot 820f47016a Merge pull request #23986 from howieyuen/fix-format
[en] fix code block rendering mistake
2020-09-18 20:12:28 -07:00
Kubernetes Prow Robot 51c6c03688 Merge pull request #23979 from baiyutang/patch-7
Update configure-upgrade-etcd.md
2020-09-18 20:10:28 -07:00
Qiming Teng 3cc1371651 Remove duplicated content in concepts and reference
We currently have quite some contents duplicated between the concepts
and the reference section, which is not good. This PR is an effort to
remove the duplicated content from the two pages while providing links
for readers to check the reference easily.
2020-09-19 08:36:47 +08:00
Feruzjon Muyassarov 55d2702f3f Fix 404 issues 2020-09-19 00:07:30 +03:00
Karen Bradshaw 245f989b2a fix copy clipboard 2020-09-18 13:12:46 -04:00
Kubernetes Prow Robot 3f8a10f9a8 Merge pull request #23963 from Arhell/fix-toggle
fix toggle button
2020-09-18 09:12:46 -07:00
Ramkumar Gowrishankar 147668a7d2 Add reference to default-not-ready-toleration-seconds and default-unreachable-toleration-seconds k8s-apiserver input parameters in the subsection describing the DefaultTolerationSeconds admission controller 2020-09-18 11:38:18 -04:00
tanjunchen cbc06036aa add tanjunchen to sig-docs-zh team 2020-09-18 22:44:27 +08:00
Hao Yuan dfda08a978 fix code block cannot be rendered in title 2020-09-18 21:29:19 +08:00
yuanhao 7529aca590 translate /zh/docs/tasks/configmap-secret/managing-secret-using-kubectl.md 2020-09-18 21:25:36 +08:00
白玉堂 f88b7e66d6 Update configure-upgrade-etcd.md 2020-09-18 20:42:39 +08:00
Firman Rosdiansyah 273f6563c2 [id] Fix image path for Deploy App tutorial
/language id
2020-09-18 19:30:56 +07:00
Kubernetes Prow Robot 89126c425e Merge pull request #23981 from howieyuen/contribute
[zh] add missing links in/zh/docs/home/contribute
2020-09-18 03:34:45 -07:00
yuanhao 1fc81d375e add missing links in/zh/docs/home/contribute 2020-09-18 17:42:46 +08:00
白玉堂 924f375c6a Update configure-upgrade-etcd.md 2020-09-18 17:38:13 +08:00
Kubernetes Prow Robot eb178f12df Merge pull request #23975 from howieyuen/kubectl-resources
update kubectl api-resouces list base on 1.19.1
2020-09-18 00:42:45 -07:00
yuanhao ed053d7061 update kubectl api-resouces list base on 1.19.1 2020-09-18 14:23:34 +08:00
Kubernetes Prow Robot 31a3c9211e Merge pull request #23467 from tengqm/zh-authentication
[zh] Translate reference/access-authn-authz/authentication.md
2020-09-17 23:18:45 -07:00
Kubernetes Prow Robot 190bbc1001 Merge pull request #22978 from kakts/ja-trans-concepts-proxies
ja-trans: Translate concepts/cluster-administration/proxies.md into Japanese #19281
2020-09-17 22:52:45 -07:00
Kubernetes Prow Robot 9bb7a16999 Merge pull request #23971 from zhiguo-lu/zh-docs-setup-learning-kind-addpage
[zh] add zh/docs/setup/learning-environment/kind.md, fix #23950
2020-09-17 19:38:47 -07:00
luzg 2b84a4db77 [zh] add zh/docs/setup/learning-environment/kind.md, fix 23950 2020-09-18 10:20:46 +08:00
Kubernetes Prow Robot 2cc22d38ad Merge pull request #23970 from rgowrishankar/23862-2
Change PodMatchNodeSelector to MatchNodeSelector
2020-09-17 19:20:45 -07:00
Vickey Wu 237850da6b add blank between Chinese and English
add blank between Chinese and English
2020-09-18 10:03:02 +08:00
Kubernetes Prow Robot 9f0a206fe0 Merge pull request #23757 from dougsland/docs-doug
[docs] fix client-go example
2020-09-17 19:00:45 -07:00
Ramkumar Gowrishankar da033f63af Change PodMatchNodeSelector to MatchNodeSelector 2020-09-17 21:34:03 -04:00
Kubernetes Prow Robot ef7b80d75d Merge pull request #23651 from GitHanDong/patch-1
Update container-runtimes.md
2020-09-17 18:22:45 -07:00
Qiming Teng c65afaea83 [zh] Translate reference/access-authn-authz/authentication.md 2020-09-18 09:13:30 +08:00
Kubernetes Prow Robot 8fa9fdd0f7 Merge pull request #23938 from howieyuen/task-description
Add missing descriptions for /zh/docs/tasks
2020-09-17 18:10:45 -07:00
Kubernetes Prow Robot 65057883cd Merge pull request #23937 from howieyuen/flow-control
[zh] optimize the translation of  /docs/concepts/cluster-administration/flow-control.md
2020-09-17 18:08:45 -07:00
Kubernetes Prow Robot 22fa53c77d Merge pull request #23958 from a1russell/master
Fix a couple issues in docker-cli-to-kubectl.md
2020-09-17 18:06:45 -07:00
Kubernetes Prow Robot 1057430f94 Merge pull request #23647 from lparis/patch-2
Update storage-classes.md
2020-09-17 18:04:46 -07:00
Kubernetes Prow Robot 8b8b612fa9 Merge pull request #23962 from fmuyassarov/fi/website-404-feruz
Fix 404 in storage document
2020-09-17 17:46:45 -07:00
TAKAHASHI Shuuji 0008b72fbd Improve a bad translation. 2020-09-18 07:26:45 +09:00
Arhell 4c1e3492a9 fix toggle button 2020-09-18 01:20:47 +03:00
Feruzjon Muyassarov e89dc4f7c2 Fix 404 in storage doc 2020-09-18 00:30:28 +03:00
Kubernetes Prow Robot 3fe6ac8854 Merge pull request #23798 from dedok1997/patch-1
Typo in command description
2020-09-17 14:02:46 -07:00
Navid Zolghadr 7174cfcd69 Fix a small typo 2020-09-17 16:59:45 -04:00
Kubernetes Prow Robot 729249487f Merge pull request #23957 from elvinjgalarza/master
Fix outbound link to Cilium K8s Installation Guide
2020-09-17 12:44:45 -07:00
Kubernetes Prow Robot fc7fa15c30 Merge pull request #23088 from takaf04/master_ja_containers_images
Translate docs/concepts/containers/images into Japanese
2020-09-17 12:24:47 -07:00
Kubernetes Prow Robot e116cb11b7 Merge pull request #23215 from shuuji3/contribute/style/content-guide
Translate contribute/style/content-guide into Japanese
2020-09-17 12:22:46 -07:00
Kubernetes Prow Robot 3387b53db6 Merge pull request #22956 from kakts/ja-trans-concepts-manage-deployment
Translate concepts/cluster-administration/manage-deployment.md into Japanese #19280
2020-09-17 12:20:46 -07:00
Kubernetes Prow Robot 7c01dfbb61 Merge pull request #23891 from shuuji3/contribute/suggest-improvements
Translate contribute/suggest-improvements into Japanese
2020-09-17 12:18:46 -07:00
Kubernetes Prow Robot e1309ccaa2 Merge pull request #23653 from saschagrunert/9-month-to-3-releases
Moving forward from beta blog post: clarify 9 month window
2020-09-17 11:14:45 -07:00
unknown 82c612be23 Added direct link 2020-09-17 11:13:47 -07:00
unknown 4c67cd640f Remove example, point to repo 2020-09-17 10:59:31 -07:00
Adam Russell 82546d3ff8 Fix a couple issues in docker-cli-to-kubectl.md 2020-09-17 11:50:46 -05:00
dedok1997 5a57a12da3 Update overview.md
Fix typo
2020-09-17 19:29:08 +03:00
didier 8729c6d366 fixing language issues on HA-related FR content
Signed-off-by: didier <durand.didier@gmail.com>
2020-09-17 18:18:23 +02:00
Hao Yuan ddfc79d5b8 Add missing description for each subjects in /zh/docs/tasks 2020-09-17 22:31:53 +08:00
Sascha Grunert 073504b3e6 Moving forward from beta blog post: clarify 9 month window
The 9 month window can be more explicitly translated to "three
releases", which may not always nine month (like for v1.19.0). This
should avoid confusion when users try to find out which release should
be targeted for the graduation to stable.

Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2020-09-17 16:27:42 +02:00
Hao Yuan 96da468f31 optimize the translation of /docs/concepts/cluster-administration/flow-control.md 2020-09-17 22:27:34 +08:00
Kubernetes Prow Robot 9fe46601ce Merge pull request #23946 from shuuji3/contribute/review/index
Translate contribute/review/ into Japanese
2020-09-17 07:18:46 -07:00
Kubernetes Prow Robot 94f4088b7a Merge pull request #23948 from didier-durand/logging_page_FR
Fixing some language issues on logging.md (FR)
2020-09-17 07:12:45 -07:00
Didier Durand f1aa2583c4 Update content/fr/docs/concepts/cluster-administration/logging.md
as proposed per @perriea

Co-authored-by: Aurélien Perrier <aperrier@universe.sh>
2020-09-17 16:06:26 +02:00
Kubernetes Prow Robot 6c681b50f1 Merge pull request #23952 from yutachaos/feature/fixed_typo_jp_doc
Fixed typo from lmits to limits
2020-09-17 06:14:45 -07:00
Kubernetes Prow Robot 2fa255ecf6 Merge pull request #23949 from povsister/non-existing-taint
Fix non-existing taint example in admission-controllers
2020-09-17 05:44:45 -07:00
Kubernetes Prow Robot 210e86043d Merge pull request #23940 from zhiguo-lu/zh-concepts-page-add-descriptions
[zh] update zh/docs/concepts page, fix #23920
2020-09-17 05:42:46 -07:00
Kubernetes Prow Robot 350b0ea50e Merge pull request #23605 from fancc/storage-capacity
translate storage capacity into Chinese
2020-09-17 04:54:45 -07:00
Kubernetes Prow Robot fdf7a52e72 Merge pull request #22855 from fancc/overview-cloud-native-security
translate Overview cloud native security into Chinese
2020-09-17 04:52:45 -07:00
bryan 865160e229 translate overview cloud native security into Chinese 2020-09-17 19:43:57 +08:00
bryan b600e012fc translate storage capacity into Chinese 2020-09-17 19:38:17 +08:00
yutachaos d2d808f95f fixed typo
Signed-off-by: yutachaos <18604471+yutachaos@users.noreply.github.com>
2020-09-17 20:29:45 +09:00
luzg 77b1c28c84 [zh] update zh/docs/concepts page, fix 23920 2020-09-17 17:47:10 +08:00
didier d9d8003fe0 Fixing some language issues on logging.md (FR)
Signed-off-by: didier <durand.didier@gmail.com>
2020-09-17 11:44:50 +02:00
povsister ba9bb9d916 Fix non-existing taint example 2020-09-17 17:41:20 +08:00
TAKAHASHI Shuuji 95951b8508 Translate contribute/review/index into japanese. 2020-09-17 18:32:43 +09:00
Kubernetes Prow Robot 1d2732453d Merge pull request #23928 from didier-durand/master_node_coomunication_FR
fixing FR languages issues in page pmaster <> node communications
2020-09-17 00:16:45 -07:00
TAKAHASHI Shuuji d6e6a47bae Translate concepts/workloads/pods/ephemeral-containers into japanese. 2020-09-17 14:46:02 +09:00
Kubernetes Prow Robot a396460d95 Merge pull request #23910 from howieyuen/flow-control
[zh] Translate /docs/concepts/cluster-administration/flow-control.md
2020-09-16 20:26:45 -07:00
TAKAHASHI Shuuji 475f1172d1 Copy concepts/workloads/pods/ephemeral-containers/ from en/ directory. 2020-09-17 11:16:33 +09:00
TAKAHASHI Shuuji 181faf6bae Translate concepts/storage/storage-capacity into Japanese. 2020-09-17 10:35:48 +09:00
TAKAHASHI Shuuji 8ef426d434 Copy concepts/storage/storage-capacity.md from en/ directory. 2020-09-17 09:35:49 +09:00
didier 84c694ccc8 fixing FR languages issues
Signed-off-by: didier <durand.didier@gmail.com>
2020-09-16 20:02:08 +02:00
Kubernetes Prow Robot e4841d372e Merge pull request #23919 from supirman/id-basic-tutor-scale
Add ID translation for Scale You App tutorial
2020-09-16 11:01:20 -07:00
Firman Rosdiansyah e52440931c Apply suggestions from code review
And remove Roboto font from Katacoda embed for recent localized interactive tutorial page

Co-authored-by: M. Habib Rosyad <habib@volantis.io>
Co-authored-by: Aris Cahyadi Risdianto <aris.risdianto@gmail.com>
2020-09-16 23:05:47 +07:00
yuanhao f6d4d708b9 [zh] Translate /docs/concepts/cluster-administration/flow-control.md 2020-09-16 23:29:02 +08:00
Kubernetes Prow Robot c15ef5b1b0 Merge pull request #23917 from llhuii/patch-1
fix comment error
2020-09-16 04:37:20 -07:00
Kubernetes Prow Robot c638774c23 Merge pull request #23916 from tengqm/fix-18207
Remove dated information for node conformance
2020-09-16 04:35:20 -07:00
Kubernetes Prow Robot 5f5840f825 Merge pull request #23908 from cbrgm/patch-1
Fix spelling in authentication.md
2020-09-16 04:33:19 -07:00
Kubernetes Prow Robot f1ed796628 Merge pull request #23913 from kbhawkey/kb-remove-atom-snippets
remove atom-snippets.cson
2020-09-16 04:31:20 -07:00
Firman Rosdiansyah 7c7a1c8442 Add ID translation for Scale You App tutorial
update links and katakoda embed for id k8s basic tutorial
2020-09-16 17:35:35 +07:00
Kubernetes Prow Robot edbef73966 Merge pull request #23806 from habibrosyad/gh-22086-pt
Clean up case study images in content/pt/case-studies
2020-09-16 03:19:19 -07:00
Kubernetes Prow Robot 4e4ea6cddf Merge pull request #23901 from didier-durand/endpoint_slices_fr
fixing FR language issues in page EndpointSlices
2020-09-16 02:01:20 -07:00
didier 826a9c1542 Fixing typo 2020-09-16 10:47:56 +02:00
didier ddb26b2be0 fixing FR language issues in page
Signed-off-by: didier <durand.didier@gmail.com>
2020-09-16 10:47:47 +02:00
Kubernetes Prow Robot 8e4951c67c Merge pull request #23898 from varadaprasanth/patch-2
Update run-stateless-application-deployment.md
2020-09-15 23:25:19 -07:00
Kubernetes Prow Robot 87e23007c5 Merge pull request #23907 from habibrosyad/gh-22296-150920
Add ID translation for /docs/tutorials/kubernetes-basics/update/...
2020-09-15 20:11:19 -07:00
llhuii f3cb3e74ff fix comment error 2020-09-16 11:06:54 +08:00
Kubernetes Prow Robot 2d340079bf Merge pull request #23900 from varadaprasanth/patch-4
Pod object is formatted
2020-09-15 18:03:20 -07:00
Kubernetes Prow Robot 02b9c7b7d2 Merge pull request #23899 from varadaprasanth/patch-3
Pod Object is modified as per standards
2020-09-15 18:01:20 -07:00
Kubernetes Prow Robot c1dfb7b6b3 Merge pull request #23874 from buptliuwei/patch-2
Fix "visible" translation in static-pod.md
2020-09-15 17:59:19 -07:00
Kubernetes Prow Robot 005acf912d Merge pull request #23895 from christomas1/patch-2
Updating apiVersion for CertificateSigningRequest object
2020-09-15 17:57:20 -07:00
Qiming Teng a679d93368 Remove dated information for node conformance
This PR addresses an issue about outdated limitation.
2020-09-16 08:37:13 +08:00
Kubernetes Prow Robot bb200488fd Merge pull request #23802 from supirman/id-tutorial-expose
Add ID translation for Exposing Your App tutorial
2020-09-15 17:35:19 -07:00
Kubernetes Prow Robot e1cb1a674d Merge pull request #23747 from supirman/id-horizontal-pod-autoscale
[id] Fix HorizontalPodAutoscaler path and typo
2020-09-15 17:33:19 -07:00
Karen Bradshaw 69009fe3dd remove atom-snippets.cson 2020-09-15 17:01:52 -04:00
unknown 09a658eeb5 Addressing feedback 2020-09-15 12:59:42 -07:00
Kubernetes Prow Robot a24c66ac76 Merge pull request #23892 from shuuji3/en/contribute/suggest-improvements
Fix the instruction to click the "Create an Issue" link on the contribute/suggest-improvements page
2020-09-15 11:44:07 -07:00
Kubernetes Prow Robot c7dbfdd317 Merge pull request #23210 from sftim/20200816_add_cncf_landscape_shortcode
Add cncf-landscape shortcode
2020-09-15 10:52:08 -07:00
Firman Rosdiansyah e8a26b08bb Add ID translation for Exposing Your App tutorial
Apply suggestions from code review

Co-authored-by: Aris Cahyadi Risdianto <aris.risdianto@gmail.com>

Update [id] explore-interactive.html link to Module 5 & Katacoda embed

Update [id] k8s basic tutorial index links to current localized pages

Apply suggestions from code review

Co-authored-by: Aris Cahyadi Risdianto <aris.risdianto@gmail.com>
Co-authored-by: Giri Kuncoro <girikuncoro@users.noreply.github.com>

Update [id] k8s basic tutorial index links to deploy app
2020-09-16 00:42:41 +07:00
Kubernetes Prow Robot 34e2e454f3 Merge pull request #23432 from SomtochiAma/gsoc-blog-post
Add blog post: GSoC ‘20 - Building operators for cluster addons
2020-09-15 09:52:07 -07:00
Somtochi Onyekwere 7b5bb4d46f Corrects date on filename 2020-09-15 17:47:26 +01:00
Somtochi Onyekwere 141e5aed01 Updates date on the blog post 2020-09-15 17:43:45 +01:00
Kubernetes Prow Robot e44a49d850 Merge pull request #23886 from Huang-Wei/tps-blog-image-typo
Fix a typo in blog "Introducing PodTopologySpread"
2020-09-15 09:10:07 -07:00
Chris Bargmann c77d436eaf Fix spelling in authentication.md
Rename `name-of-api-sever` to `name-of-api-server`.
2020-09-15 17:21:59 +02:00
TAKAHASHI Shuuji 7ef62d255a Fix the instruction to click the "Create an issue" link. 2020-09-16 00:18:10 +09:00
Kubernetes Prow Robot 8da9b601d6 Merge pull request #23705 from tengqm/update-kubelet-ref
Update kubelet reference doc
2020-09-15 08:18:07 -07:00
M. Habib Rosyad 11ec3894b6 Add ID translation for /docs/tutorials/kubernetes-basics/update/... 2020-09-15 21:40:29 +07:00
Chris Tomas 1425384888 fix description of signerName
Removed a line related to signerName because the feature is GA.
2020-09-15 09:14:52 -05:00
Anna Jung 3e3da2b8f7 Approval permission for 1.20 Release 2020-09-15 08:29:21 -05:00
Somtochi Onyekwere b0269a8041 Making some review changes 2020-09-15 13:06:58 +01:00
Kubernetes Prow Robot 4748892916 Merge pull request #23821 from Miftahunajat/master
ID localization for run-application horizontal-pod-autoscale-walkthrough
2020-09-15 03:16:07 -07:00
varadaprasanth d455c7f5fd Update horizontal-pod-autoscale.md
pod is replaced with 'Pod' as per the documentation naming conventions
2020-09-15 15:33:13 +05:30
varadaprasanth 19d46f796d Update horizontal-pod-autoscale-walkthrough.md
pod is replaced with 'Pod' as per the documentation naming conventions.
2020-09-15 15:22:59 +05:30
varadaprasanth 42f23e75b7 Update run-stateless-application-deployment.md
Pod name is changed from pod, as per the documentation naming conventions.
2020-09-15 14:59:08 +05:30
Kubernetes Prow Robot a0d7a841b8 Merge pull request #23872 from zhiguo-lu/zh-rework-contribute-index-page
[zh] udpate index page of contribute  #23810
2020-09-15 02:00:07 -07:00
Chris Tomas 9a06c1bc95 Updating apiVersion for Certificate Signing Request object #1
Issue detected: There are two references to old apiVersion for CertificateSigningRequest object

Ref: CertificateSigningRequest API is promoted to certificates.k8s.io/v1 (https://kubernetes.io/docs/setup/release/notes/#api-change)

Fix: Replaced "certificates.k8s.io/v1beta1" by "certificates.k8s.io/v1"
2020-09-15 00:19:50 -05:00
Kubernetes Prow Robot 77b51db7e7 Merge pull request #23878 from didier-durand/service_en
fixing a typo
2020-09-14 20:32:07 -07:00
Kubernetes Prow Robot a38f9403ed Merge pull request #23864 from rileyL6122428/patch-1
Fixes typo
2020-09-14 20:10:07 -07:00
Elvin J. Galarza c9123c6c88 Merge pull request #1 from elvinjgalarza/ciliumintegrationlink
Fix outbound link to Cilium K8s Installation Guide
2020-09-14 23:00:19 -04:00
Elvin J. Galarza 2d7b6b85f5 Fix outbound link to Cilium K8s Installation Guide
Updated the outbound link to Intro to Cilium K8s and Installation Guide to reflect the new link on the Cilium site.
2020-09-14 22:57:40 -04:00
TAKAHASHI Shuuji c42cfe146b Translate concepts/services-networking/endpoint-slices into Japanese. 2020-09-15 11:34:06 +09:00
TAKAHASHI Shuuji 31f9550dd8 Copy concepts/services-networking/endpoint-slices.md from en/ directory. 2020-09-15 11:02:01 +09:00
TAKAHASHI Shuuji 3cd16e676a Translate concepts/services-networking/endpoint-slices into Japanese. 2020-09-15 10:16:09 +09:00
Somtochi Onyekwere e4ca22b9fd Fixing more nits 2020-09-14 22:48:09 +01:00
Michal Broz 235277abcb Align Tutorial with new Docs structure 2020-09-14 16:45:52 -05:00
Kubernetes Prow Robot ba3c2c4b29 Merge pull request #23877 from liggitt/deprecate-cs
Remove reference to componentstatus
2020-09-14 14:27:25 -07:00
Michal Broz fda5d0084b Updates based on feedback 2020-09-14 15:25:48 -05:00
Michal Broz 390a1c555b Add MP Interactive Tutorial to Config Section 2020-09-14 15:25:48 -05:00
Kubernetes Prow Robot 8161a3e3ee Merge pull request #23832 from didier-durand/participating_page
fixing FR language in participating.md
2020-09-14 13:07:26 -07:00
Wei Huang d084d63adc Fix a typo in blog 'Introducing PodTopologySpread' 2020-09-14 12:57:02 -07:00
Karen Bradshaw 6a401072b3 reword pod lifecycle, cleanup 2020-09-14 14:19:25 -04:00
Kubernetes Prow Robot 5632ae93ea Merge pull request #23819 from kbhawkey/kb-api-overview
minor cleanup of API overview
2020-09-14 10:48:59 -07:00
Dennis Schridde 239bae60fb kudeadm: Replace "master" with "control-plane node"
This replaces the word "master" with "control-plane node" in order to use
more inclusive language.

Also uses consistent wording / spelling in this context.

References: #21621
Suggested-by: Lubomir I. Ivanov <lubomirivanov@vmware.com>
2020-09-14 18:24:10 +02:00
didier 5061d5587b fixing a typo
Signed-off-by: didier <durand.didier@gmail.com>
2020-09-14 18:23:25 +02:00
Kubernetes Prow Robot 9ec9ebb67c Merge pull request #23753 from sftim/20200908_tidy_404_page
Tidy 404 Not Found error page
2020-09-14 08:16:59 -07:00
Jordan Liggitt e566a726de Remove reference to componentstatus 2020-09-14 11:13:30 -04:00
Kubernetes Prow Robot f53a4c700d Merge pull request #23406 from oomichi/update-link-of-kuztomization
Update the link of kustomization file
2020-09-14 08:00:59 -07:00
Miftahun Najat bb4e128e23 ID localization for run-application horizontal-pod-autoscale-walkthrough 2020-09-14 21:59:38 +07:00
Kubernetes Prow Robot 37858b91de Merge pull request #23462 from shuuji3/translate-deprecation-title
Translate "deprecation_title" param into Japanese for the deprecation warning
2020-09-14 07:08:59 -07:00
Kubernetes Prow Robot d6ac6f2b4b Merge pull request #23876 from inductor/no_biggercase
Small k in url
2020-09-14 06:58:59 -07:00
TAKAHASHI Shuuji b631c25087 Translate "deprecation_title" into Japanese. 2020-09-14 22:55:02 +09:00
Kubernetes Prow Robot 97b30ad2a0 Merge pull request #23839 from Arhell/upd-video
remove indent
2020-09-14 06:30:58 -07:00
inductor 3535bf280e small k in url 2020-09-14 20:03:50 +09:00
buptliuwei 4245414a3e fix "visible" translation in static-pod.md
The translation of visible is wrong in the Chinese document, easily misleading
2020-09-14 18:04:08 +08:00
Matt Smith e85fabe3ed Update horizontal-pod-autoscale-walkthrough.md
As per the error described in https://github.com/LevelUpEducation/kubernetes-demo/issues/31, guidance was to add the generator explicitly:

`kubectl run --generator=run-pod/v1 -i --tty load-generator --image=busybox /bin/sh`

But I prefer the example from the run docs https://jamesdefabia.github.io/docs/user-guide/kubectl/kubectl_run/:

`kubectl run -i --tty busybox --image=busybox --restart=Never`
2020-09-14 19:59:45 +10:00
luzg ea7e9c0f55 [zh] udpate index page of contribute #23810
make style changes according to idealhack's comment
make style and translation changes according to tengqm's comment
make style change according to style guide
2020-09-14 16:53:06 +08:00
Kubernetes Prow Robot 1c7eb7ac58 Merge pull request #23850 from baiyutang/patch-5
Update get-shell-running-container.md
2020-09-14 01:18:58 -07:00
白玉堂 d4c26e9840 Update get-shell-running-container.md
remove 2-4 which is unused code.
2020-09-14 15:48:55 +08:00
Kubernetes Prow Robot db6ed81b5d Merge pull request #23856 from christomas1/patch-1
Update manage-resources-containers.md
2020-09-13 22:00:58 -07:00
Kubernetes Prow Robot a95890cab6 Merge pull request #23813 from zhiguo-lu/zh-rework-contribute-index-page
[zh] Update Chinese localization on content/zh/docs/contribute/_index.md  fix issue #23810
2020-09-13 21:58:57 -07:00
Riley Littlefield b8e9488d84 Fixes typo 2020-09-13 22:47:25 -04:00
Kubernetes Prow Robot 2e834dfa69 Merge pull request #23730 from tengqm/zh-links-setup-3
[zh] fix links in setup section (3)
2020-09-13 18:40:58 -07:00
Kubernetes Prow Robot c901c84e55 Merge pull request #23782 from tengqm/create-secret-tasks
Separating tasks from Secret concept
2020-09-13 17:20:57 -07:00
Kubernetes Prow Robot d2b84110de Merge pull request #23735 from bttger/patch-1
Fix false Object in persistentVolumeClaim explanation
2020-09-13 17:18:57 -07:00
Kubernetes Prow Robot 99439157bb Merge pull request #23744 from tengqm/improve-obj-mgmt
Improve object management page by adding a hint
2020-09-13 13:02:57 -07:00
Chris Tomas c1f104e5f8 Update manage-resources-containers.md
Removed the "env" object from the "Meaning of memory" section. It has no utility.
2020-09-13 14:33:38 -05:00
Kubernetes Prow Robot aab0b34b48 Merge pull request #23852 from zhangguanzhang/zh-fix-missing-table
[zh]  add missing table in content/zh/docs/concepts/services-networking/service.md
2020-09-13 07:18:57 -07:00
luzg f6c6b9406e [zh] udpate index page of contribute #23810
make style changes according to idealhack's comment
make style and translation changes according to tengqm's comment
2020-09-13 22:12:06 +08:00
zhangguanzhang 252e037846 zh add missing table 2020-09-13 22:01:17 +08:00
Kubernetes Prow Robot 894325bd70 Merge pull request #23851 from zhangguanzhang/fix-zh-wrong-kubelet-integration
[zh] fix wrong href on content/zh/docs/setup/production-environment/tools/kubeadm/kubelet-integration.md
2020-09-13 06:56:57 -07:00
zhangguanzhang e724187a8a fix wrong href in zh doc about kubelet-integration 2020-09-13 21:41:27 +08:00
白玉堂 7f85c7de2a Update get-shell-running-container.md
The end tag of note is missing.
2020-09-13 21:27:04 +08:00
Qiming Teng 995b067fdb Separating tasks from Secret concept
There are many contents in the (*very big*) Secret concept page which
are actually tasks. This PR proposes a separation of some contents
into separate tasks, so that we have a (hopefully) better organization
of the content and we make room for improvement to the concept itself.

Note that the creation of the `configmap-secret` directory (instead of
`secret`) is an intent to create a folder for both ConfigMap and Secret,
both of which are about configurations though there are quite some
differences between them.
2020-09-13 21:06:58 +08:00
Kubernetes Prow Robot e7e99ccf60 Merge pull request #23846 from baiyutang/patch-4
Update port-forward-access-application-cluster.md
2020-09-13 05:00:57 -07:00
白玉堂 3e2347eedb Update port-forward-access-application-cluster.md 2020-09-13 19:31:37 +08:00
白玉堂 a82524bb12 Update port-forward-access-application-cluster.md 2020-09-13 19:08:37 +08:00
Kubernetes Prow Robot c8b582ac2d Merge pull request #23844 from didier-durand/Ingress_EN
fixing some typos / spelling issues in Ingress.md
2020-09-13 03:42:57 -07:00
Kubernetes Prow Robot 73ba6e2105 Merge pull request #23845 from baiyutang/patch-2
Update access-cluster.md
2020-09-13 03:26:57 -07:00
白玉堂 9b695da067 Update access-cluster.md 2020-09-13 17:00:56 +08:00
didier 68a018eb8d fixing some typos / spelling issues
Signed-off-by: didier <durand.didier@gmail.com>
2020-09-13 11:00:07 +02:00
Kubernetes Prow Robot a59ab598ee Merge pull request #23834 from didier-durand/ingress
fixing language issues in Ingress.md
2020-09-13 00:06:57 -07:00
Kubernetes Prow Robot b6b30fab61 Merge pull request #23795 from kaushik229/master
Limited resources in quota when scoped for priority class
2020-09-12 18:02:57 -07:00
noms 7e22ae5adc Fix for 23732 (#23822)
* Fix for 23732

Explicitly specify that consumed as environment variables  require pod restart to refresh.

* Remove note tag

Remove note tag as suggested
2020-09-12 17:10:58 -07:00
Arhell e5018e2a1b remove indent 2020-09-13 02:07:28 +03:00
Erik Sundell 3d9402e845 Make docs/reference/scheduling/config focus on v1beta1 over alpha versions
Instead of directing the focus towards an alpha API, we now direct it
towards the beta API available in 1.19.
2020-09-13 00:54:14 +02:00
Kubernetes Prow Robot 0df85236b6 Merge pull request #23831 from mfilocha/change-lang-symbols-in-tutorials
Change language code placement for Polish tutorial links
2020-09-12 12:40:57 -07:00
Kubernetes Prow Robot 83541197b9 Merge pull request #23833 from ariscahyadi/id-local-config-pod-assign-memory
ID localization for configure pod and container - assign memory resource
2020-09-12 12:30:56 -07:00
Kubernetes Prow Robot 428e8262a1 Merge pull request #22408 from deryrahman/docs/tutorials/kubernetes-basics/deploy-app
ID translation for tutorial deploy app
2020-09-12 09:24:57 -07:00
didier 2770a0e990 fixing language issues in Ingress.md
Signed-off-by: didier <durand.didier@gmail.com>
2020-09-12 16:56:33 +02:00
Kubernetes Prow Robot 5d159e8866 Merge pull request #23826 from gochist/fix-container-runtime-ko
Complete unfinished conflict resolution
2020-09-12 07:52:56 -07:00
Aris Cahyadi Risdianto 22da0faae1 ID localization for configure pod and container - assign memory resources 2020-09-12 22:17:57 +08:00
didier a5562bd930 fixing FR language in participating.md
Signed-off-by: didier <durand.didier@gmail.com>
2020-09-12 14:55:57 +02:00
Maciej Filocha fa4181d355 Change language code placement for Polish tutorial links
Move language codes outside hyperlinks.
2020-09-12 14:08:20 +02:00
Kubernetes Prow Robot e0daea5d0c Merge pull request #23812 from alegmal/patch-1
added a missing word for clearer understanding
2020-09-12 00:06:56 -07:00
June Yi d4e82281c5 Complete unfinished conflict resolution
It corrects incomplete conflict resolution mistakes.
2020-09-12 14:59:10 +09:00
Kubernetes Prow Robot 9a7cc2a0ac Merge pull request #23823 from pjhwa/fix-23739
Fix broken layout for tabs on Container runtimes page in Korean
2020-09-11 21:30:57 -07:00
Jerry Park c63b4454ad Fix broken layout for tabs on Container runtimes page in Korean 2020-09-12 13:04:31 +09:00
Karen Bradshaw 43c987054e adjust table margin bottom 2020-09-11 21:35:20 -04:00
Karen Bradshaw a6599ab7d1 minor cleanup, format notes 2020-09-11 20:16:55 -04:00
Kubernetes Prow Robot 4a72cf2bad Merge pull request #23778 from Arhell/btn
translate subscribe button
2020-09-11 12:14:10 -07:00
Kubernetes Prow Robot a38e75406a Merge pull request #23814 from gochist/dev-1.19-ko.1
First Korean l10n work for release-1.19
2020-09-11 09:00:14 -07:00
Kubernetes Prow Robot 406bc20d02 Merge pull request #23815 from gochist/resolve-conflict
Resolve conflicts on the Ko l10n milestone branch
2020-09-11 08:58:14 -07:00
June Yi 2001a7df2b Resolve conflicts on the Ko l10n milestone branch 2020-09-11 23:34:22 +09:00
June Yi 986be3462d First Korean l10n work for release-1.19
- Translate tasks/job/parallel-processing-expansion.md into Korean (#23544)
- Fix issue with ko/docs/concepts/workloads/controllers/job.md (#23720)
- Translate reference/scheduling/policies.md in Korean (#23690)
- Update outdated files in the dev-1.19-ko.1 branch (#23702)
- Modify translation access by Korean glossary (#23627)

Co-authored-by: Jerry Park <jaehwa@gmail.com>
Co-authored-by: junghyeonsu <54893898+junghyeonsu@users.noreply.github.com>
Co-authored-by: coolguyhong <podolsmith@naver.com>
2020-09-11 23:30:11 +09:00
Aleg Malinovsky 8b0014260d missing a word
it felt like the sentence was missing a word in that place
2020-09-11 15:24:51 +03:00
Qiming Teng 10e7a044a2 [zh] Translate declarative-config task 2020-09-11 19:50:11 +08:00
Kubernetes Prow Robot 564a49af07 Merge pull request #23801 from supirman/patch-1
[id] Fix typo on Web UI (Dashboard)
2020-09-11 01:20:14 -07:00
Kubernetes Prow Robot 0fbc1bac45 Merge pull request #23674 from croziere/setup-hierarchy-patch
Move setup/independent files to setup/production-environment
2020-09-11 00:44:14 -07:00
M. Habib Rosyad 8adb4c29e5 Clean up case study images in content/pt/case-studies 2020-09-11 11:59:46 +07:00
Kubernetes Prow Robot d9c91821bb Merge pull request #23796 from cimes-isi/patch-1
Typo in 'What's next' section
2020-09-10 21:54:14 -07:00
Kubernetes Prow Robot 21b4c85cc0 Merge pull request #22847 from ariscahyadi/id-local-admin-cluster-sysctl
ID localization for administer cluster - sysctl
2020-09-10 21:48:13 -07:00
Kubernetes Prow Robot f8a2732cc6 Merge pull request #23188 from evanap/id-memory-constraint-namespace
Translate memory-constraint-namespace into Bahasa Indonesia
2020-09-10 21:24:14 -07:00
Mike c732907fc8 Update multiple-zones.md 2020-09-11 11:45:34 +08:00
Qiming Teng 21eb079ff7 Update kubelet reference doc
As usual, we have to manually synchronize the reference for kubelet
for which the auto reference generation fails to work.
2020-09-11 08:39:35 +08:00
Kubernetes Prow Robot 0b9a6fd844 Merge pull request #23800 from AdolfoJulcamoro/patch-1
Corrección al uso confuso de container
2020-09-10 16:48:14 -07:00
Firman Rosdiansyah 5f5b1f3d25 [id] Fix typo on Web UI (Dashboard)
Fix typo that causes the article not rendered properly for "Web UI (Dashboard)" in id l10n
2020-09-11 06:21:54 +07:00
Arhell ffc303b1ad translate subscribe button 2020-09-11 00:30:47 +03:00
Adolfo Julcamoro dee4a58df2 Update _index.md 2020-09-10 16:30:05 -05:00
Kubernetes Prow Robot e5f7e6fbc4 Merge pull request #23444 from didier-durand/master
fixing spelling errors
2020-09-10 13:20:14 -07:00
cimes-isi e0859fdc4b Typo in 'What's next' section 2020-09-10 14:19:29 -04:00
Kumar Kaushik acbaf2577a Limited resources in quota when scoped for priority class 2020-09-10 10:30:18 -07:00
Kubernetes Prow Robot 812c0bd6a6 Merge pull request #23762 from BenHall/RemoveRobotoInteractivityEN
Remove Roboto font from interactivity pages
2020-09-10 09:29:49 -07:00
Karen Bradshaw 92fd3569b3 add v1.18 api ref to redirects 2020-09-10 10:24:17 -04:00
TAKAHASHI Shuuji 9421027192 Fix two typos
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-09-10 23:07:58 +09:00
TAKAHASHI Shuuji 41f9de3fe2 Translate missing sentences. 2020-09-10 23:05:50 +09:00
TAKAHASHI Shuuji 8d77925554 Update content-organization.md 2020-09-10 20:20:07 +09:00
Kubernetes Prow Robot ba908a4640 Merge pull request #22914 from danninov/id/force-delete-stateful-set-pod
Add ID localization of force delete stateful pod
2020-09-10 03:59:45 -07:00
Kubernetes Prow Robot 300d06db0c Merge pull request #22912 from danninov/id/configure-volume-storage
Add ID localization task configure volume storage
2020-09-10 03:57:45 -07:00
Kubernetes Prow Robot 58ece2c0e2 Merge pull request #23165 from ariscahyadi/id-local-debug-app-introspection
ID localization for debug application cluster
2020-09-10 03:55:44 -07:00
TAKAHASHI Shuuji 26c784ae37 Improve the translation of "organization"
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-09-10 19:38:40 +09:00
Kubernetes Prow Robot fe818f4631 Merge pull request #23725 from Arhell/video-sync
sync video block
2020-09-10 02:49:45 -07:00
Ben Hall 537957f8b4 Update content/en/docs/tutorials/kubernetes-basics/public/css/styles.css
Co-authored-by: Celeste Horgan <celeste@cncf.io>
2020-09-10 09:30:49 +01:00
Ben Hall 957fcae26b Update content/en/docs/tutorials/kubernetes-basics/public/css/styles.css
Co-authored-by: Celeste Horgan <celeste@cncf.io>
2020-09-10 09:30:33 +01:00
Maxime Guyot a5cbc1f312 Update Kubespray page 2020-09-10 09:47:44 +02:00
Kubernetes Prow Robot cbb073c280 Merge pull request #23731 from tengqm/zh-links-setup-4
[zh] fix links in setup section (4)
2020-09-10 00:25:45 -07:00
Qiming Teng 7ff239625b Improve object management page by adding a hint
The current instruction doesn't work if one is using `generateName`
field when creating an object.
2020-09-10 08:39:21 +08:00
Kubernetes Prow Robot 58957dcea0 Merge pull request #23771 from mfilocha/add-pl-tutorial-links
Change links for localized tutorials in Polish
2020-09-09 15:01:44 -07:00
Lorenzo Paris d3475e6a5c Update content/en/docs/concepts/storage/storage-classes.md
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-09-09 14:37:24 -07:00
Kubernetes Prow Robot 38bd0aa204 Merge pull request #23669 from tengqm/fix-api-concepts
Fix errors/nits in api-concepts
2020-09-09 14:05:44 -07:00
Kubernetes Prow Robot b0aef17772 Merge pull request #23772 from liggitt/1.19-blog-redirect
Redirect to correct 1.19 release blog date
2020-09-09 11:59:08 -07:00
Kubernetes Prow Robot 2955ede7ee Merge pull request #23279 from sftim/20200820_add_heading_immutable_secret_configmap
Add headings for Immutable ConfigMaps and Secrets
2020-09-09 10:23:08 -07:00
Maciej Filocha 86c2b3ba38 Change links for localized tutorials in Polish
Localized links in a page body are not automatically detected/created.
Thus this manual change.
2020-09-09 17:10:36 +02:00
Jordan Liggitt 651e339928 Redirect to correct 1.19 release blog date 2020-09-09 10:58:21 -04:00
Kubernetes Prow Robot 78155af564 Merge pull request #23491 from tengqm/zh-crd
[zh] Translate tasks/extend-kubernetes/custom-resources/custom-resource-definitions.md
2020-09-09 07:57:53 -07:00
Kubernetes Prow Robot a546813852 Merge pull request #23751 from Alienuser/update-readme-docker
Updating readme files to use the right make functions for build and serve
2020-09-09 07:43:52 -07:00
Kubernetes Prow Robot 34bd8a97a3 Merge pull request #23764 from pjbgf/fix-eventratelimit
Fix incorrect guidance on enabling EventRateLimit
2020-09-09 05:53:52 -07:00
Paulo Gomes 87d36ecfe1 Fix incorrect guidance on enabling EventRateLimit 2020-09-09 09:48:47 +01:00
Kubernetes Prow Robot 2186d4c0a0 Merge pull request #23700 from supirman/id-tutorial-basic-explore
Add ID translation for Explore Your App tutorial
2020-09-09 01:21:54 -07:00
Ben Hall 3fa95f0c93 Remove Roboto reference from interactive translated pages
Signed-off-by: Ben Hall <ben@benhall.me.uk>
2020-09-09 08:53:08 +01:00
Ben Hall 040afda42a Remove Roboto from English docs
Signed-off-by: Ben Hall <ben@benhall.me.uk>
2020-09-09 08:52:21 +01:00
Douglas Schilling Landgraf a4fc1d7b4f [zh] fix import examples for the client-go
The import is broken, this patch fix the libraries.

Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
2020-09-08 21:00:48 -04:00
Douglas Schilling Landgraf 6fb5b93ad7 [zh]: add missing context module for the go example
The client-go example is missing the param context.
This patch adds the missing param.

Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
2020-09-08 21:00:14 -04:00
Douglas Schilling Landgraf eac11ac629 [ko]: add missing context module for the go example
The client-go example is missing the param context.
This patch adds the missing param.

Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
2020-09-08 20:59:36 -04:00
Douglas Schilling Landgraf bdafcf5aa4 [en]: add missing context module for the go example
The client-go example is missing the param context.
This patch adds the missing param.

Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
2020-09-08 20:59:00 -04:00
Douglas Schilling Landgraf ee17ef17a5 [zh]: Add package main to client-go example
The package main is missing from the example.

Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
2020-09-08 20:58:16 -04:00
Douglas Schilling Landgraf d3f537f2c6 [ko]: Add package main to client-go example
The package main is missing from the example.

Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
2020-09-08 20:57:24 -04:00
Douglas Schilling Landgraf ed8ffbda4c [en]: Add package main to client-go example
The package main is missing from the example.

Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
2020-09-08 20:56:13 -04:00
Qiming Teng 6826722885 Fix errors/nits in api-concepts
Nits fixed include:

- incorrectly specified code syntax, e.g. code snippet marked 'json' but
  the content is not JSON;
- the footnote in the paging table contains a nested table which cannot
  be rendered correctly, so the content is removed considering that it
  is just redundant table rows;
- some `kubectl apply` commands failed to provide the correct artifact
  to use while the artifact is stored online.
- fixed some other code fences by explicitly marking them as code
  snippet rather than relying on indentation (hard to maintain).
2020-09-09 08:52:06 +08:00
Tim Bannister b838ea7a3e Revise node draining task page 2020-09-08 21:32:45 +01:00
Tim Bannister 4b3617299a Link to well-known labels rather than repeating the list
- easier to maintain
- less visual space; readers who are interested can follow the hyperlink
2020-09-08 19:47:50 +01:00
Tim Bannister 928c038559 Tidy 404 Not Found error page 2020-09-08 19:36:54 +01:00
Kubernetes Prow Robot 5afff65919 Merge pull request #23752 from Evalle/ISSUE-23739
Fix Broken layout for tabs page in Korean
2020-09-08 07:47:43 -07:00
Kubernetes Prow Robot debec6a190 Merge pull request #23516 from tengqm/fix-crd
Fix nits in CRD task
2020-09-08 07:43:43 -07:00
Evgeny Shmarnev 5568883a78 Fix Broken layout for tabs page in Korean 2020-09-08 15:51:03 +02:00
Firman Rosdiansyah 68396d46e2 Apply suggestions from code review
Co-authored-by: Aris Cahyadi Risdianto <aris.risdianto@gmail.com>
2020-09-08 20:01:36 +07:00
Qiming Teng 57026aa809 [zh] tasks/extend-kubernetes/custom-resources/custom-resource-definitions.md 2020-09-08 20:57:18 +08:00
Lars Helmuth Probst d12b6a6715 Updating readme files to use the right make functions for build and serve 2020-09-08 14:26:09 +02:00
Firman Rosdiansyah 939a3896d2 [id] Fix HorizontalPodAutoscaler path and typo 2020-09-08 18:39:18 +07:00
Qiming Teng 321342b3f0 Fix nits in CRD task 2020-09-08 18:45:38 +08:00
Tom Boettger 00abf7a80f Fix false Object in persistentVolumeClaim explanation
The persistentVolumeClaim explanation was contradictory. I've changed it, since PersistentVolumeClaims are an abstraction layer for PersistentVolumes, which in turn "capture[..] the details of the implementation of the storage".
2020-09-08 12:37:51 +02:00
Kubernetes Prow Robot 71e55e48e5 Merge pull request #23269 from RA489/containerd_config
containerd config improvement
2020-09-08 02:23:43 -07:00
Kubernetes Prow Robot d456c8ffc5 Merge pull request #23149 from tengqm/zh-namespace-task
[zh] Resync namespace task
2020-09-07 23:11:42 -07:00
Kubernetes Prow Robot 6d6b91f36d Merge pull request #23740 from tengqm/zh-sync-eviction-policy
[zh] Add eviction policy page
2020-09-07 23:05:42 -07:00
RA489 c43613b8cf containerd config improvement 2020-09-08 10:59:31 +05:30
Qiming Teng c24b2a12bc Add eviction policy page
This is a sync to English site change (#23478)
2020-09-08 11:44:06 +08:00
Kubernetes Prow Robot 3a4b604eab Merge pull request #22910 from tengqm/zh-rework-deployment
[zh] Rework Deployment concept
2020-09-07 20:11:43 -07:00
Kubernetes Prow Robot 00640d0b84 Merge pull request #23063 from tengqm/zh-tune-debug-service
[zh] Tune translation for debug service task
2020-09-07 20:05:43 -07:00
Kubernetes Prow Robot b7f860e348 Merge pull request #23077 from tengqm/zh-rework-stateful
[zh] Rework stateful application tasks
2020-09-07 19:57:43 -07:00
Kubernetes Prow Robot 6ad17ae328 Merge pull request #23329 from tengqm/zh-persisten-vol
[zh] Translate /docs/concepts/storage/persistent-volumes.md
2020-09-07 19:55:43 -07:00
Firman Rosdiansyah 0bd68f3c42 Add ID translation for /docs/tutorials/kubernetes-basics/explore/ 2020-09-08 09:19:49 +07:00
Kubernetes Prow Robot 8f839e397c Merge pull request #23526 from cyberblack28/#23525
Translate docs/tasks/administer-cluster/kubeadm/upgrading-windows-nodes/ into Japanese. #23525
2020-09-07 18:51:42 -07:00
Qiming Teng 62399b8532 [zh] Rework Deployment concept 2020-09-08 09:09:30 +08:00
Qiming Teng e9c0380502 [zh] Rework stateful application tasks
English context is lost and there are punctuation and space nits.
2020-09-08 08:54:48 +08:00
Qiming Teng 82b25694e3 [zh] Resync namespace task
The English content has changed a lot. This PR resync  the content.
2020-09-08 08:31:44 +08:00
Kubernetes Prow Robot 942fca9b29 Merge pull request #23478 from gm7y8/eviction_policy
Move eviction-policy from tasks to concepts
2020-09-07 15:51:42 -07:00
gm7y8 b330bb0256 Move eviction-policy from tasks to concepts
add what's next to eviction policy
2020-09-07 23:44:28 +01:00
Kubernetes Prow Robot 985f9ae4f1 Merge pull request #23736 from sftim/20200907_es_fix_shortcodes
Remove legacy capture shortcodes
2020-09-07 09:35:41 -07:00
Tim Bannister 7c55747b18 Remove legacy capture shortcodes 2020-09-07 17:22:49 +01:00
Evgeny Shmarnev ad56b48a0b Rewrite GKE refernce in Control Plane-Node Communication 2020-09-07 18:04:53 +02:00
Qiming Teng ad501e4d26 [zh] Translate /docs/concepts/storage/persistent-volumes.md 2020-09-07 21:35:57 +08:00
Qiming Teng 8e3437245f [zh] fix links in setup section (4) 2020-09-07 21:19:52 +08:00
Qiming Teng e592fc15f5 [zh] fix links in setup section (3) 2020-09-07 21:01:05 +08:00
Hannes Leutloff 8bdeda57ac Update setup-ha-etcd-with-kubeadm.md
It was not clear to me that I had to add the unit file to all nodes and restart the kubelet service. I was stuck wondering why etcd could not connect to the other peers until i realized that kubelet was only running on `HOST-0`.

Remove parantheses.

Improve phrasing.

Update content/en/docs/setup/production-environment/tools/kubeadm/setup-ha-etcd-with-kubeadm.md

Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-09-07 13:53:51 +02:00
José Miguel Parrella 4b6fc1610a Add content/es/docs/concepts/overview/kubernetes-api.md (#14649)
* Add content/es/docs/concepts/overview/kubernetes-api.md

* Update content/es/docs/concepts/overview/kubernetes-api.md

Co-Authored-By: Victor Morales <chipahuac@hotmail.com>

* Update content/es/docs/concepts/overview/kubernetes-api.md

Co-Authored-By: Victor Morales <chipahuac@hotmail.com>

* Update content/es/docs/concepts/overview/kubernetes-api.md

Co-Authored-By: Victor Morales <chipahuac@hotmail.com>

* Update content/es/docs/concepts/overview/kubernetes-api.md

Co-Authored-By: Rael Garcia <me@rael.io>

* Update content/es/docs/concepts/overview/kubernetes-api.md

Co-Authored-By: Victor Morales <chipahuac@hotmail.com>

* Update content/es/docs/concepts/overview/kubernetes-api.md

Co-Authored-By: Rael Garcia <me@rael.io>

* Update content/es/docs/concepts/overview/kubernetes-api.md

Co-Authored-By: Rael Garcia <me@rael.io>

* Update content/es/docs/concepts/overview/kubernetes-api.md

Co-Authored-By: Victor Morales <chipahuac@hotmail.com>

* Update content/es/docs/concepts/overview/kubernetes-api.md

Co-Authored-By: Victor Morales <chipahuac@hotmail.com>

* Update content/es/docs/concepts/overview/kubernetes-api.md

Co-Authored-By: Victor Morales <chipahuac@hotmail.com>

* Update content/es/docs/concepts/overview/kubernetes-api.md

* Update content/es/docs/concepts/overview/kubernetes-api.md

* Update content/es/docs/concepts/overview/kubernetes-api.md

* Update content/es/docs/concepts/overview/kubernetes-api.md

* Update content/es/docs/concepts/overview/kubernetes-api.md

Co-authored-by: Victor Morales <chipahuac@hotmail.com>

* Update content/es/docs/concepts/overview/kubernetes-api.md

Co-authored-by: Victor Morales <chipahuac@hotmail.com>

* Update content/es/docs/concepts/overview/kubernetes-api.md

Co-authored-by: Victor Morales <chipahuac@hotmail.com>

* Update content/es/docs/concepts/overview/kubernetes-api.md

* Update content/es/docs/concepts/overview/kubernetes-api.md

* Update content/es/docs/concepts/overview/kubernetes-api.md

* Update content/es/docs/concepts/overview/kubernetes-api.md

* Update content/es/docs/concepts/overview/kubernetes-api.md

Co-authored-by: Victor Morales <chipahuac@hotmail.com>
Co-authored-by: Rael Garcia <me@rael.io>
Co-authored-by: Rael Garcia <rael@rael.io>
2020-09-07 03:49:42 -07:00
Kubernetes Prow Robot ec3d3438b2 Merge pull request #23724 from tengqm/zh-links-setup-2
[zh] Fix links in setup section (2)
2020-09-07 03:27:41 -07:00
Kubernetes Prow Robot 57b6588675 Merge pull request #23545 from tengqm/zh-deprecation-policy
[zh] Translate deprecation policy reference
2020-09-07 03:11:41 -07:00
Arhell 844cb38372 sync video block 2020-09-07 11:53:17 +03:00
Qiming Teng 73415d973b [zh] Fix links in setup section (2)
There are some style corrections in the minikube page as well.
2020-09-07 16:32:50 +08:00
Kubernetes Prow Robot 069aeec40d Merge pull request #23721 from tengqm/zh-links-setup-1
[zh] Fix links in setup section (1)
2020-09-07 00:57:42 -07:00
Qiming Teng 3fda142df9 [zh] Fix links in setup section 2020-09-07 13:35:20 +08:00
Kubernetes Prow Robot 9dac2841ff Merge pull request #23665 from lfzyx/setup
1.The ZH create-cluster-kubeadm.md should be in "content/zh/docs/setup/production-environment/tools/kubeadm"
2020-09-06 21:57:41 -07:00
lfzyx zhou 68fae217dd 1.The create-cluster-kubeadm.md should be in "setup/production-environment/tools/kubeadm" directory
2.Retranslate the create-cluster-kubeadm.md
2020-09-07 11:43:40 +08:00
Kubernetes Prow Robot 6a7565be4d Merge pull request #23546 from tengqm/zh-custom-resources
[zh] Translate custom-resources concept
2020-09-06 20:29:41 -07:00
Kubernetes Prow Robot 5375ca7c4b Merge pull request #23697 from tengqm/zh-api-concepts
[zh] Translate API concepts reference
2020-09-06 20:27:42 -07:00
Kubernetes Prow Robot 4bc6ff7f7d Merge pull request #22941 from tengqm/zh-ccm
[zh] Rework cloud controller
2020-09-06 20:25:41 -07:00
Kubernetes Prow Robot 7454f35abf Merge pull request #23495 from cyberblack28/#23442
Translate docs/tasks/administer-cluster/kubeadm/adding-windows-nodes/ into Japanese. #23442
2020-09-06 19:53:41 -07:00
Kubernetes Prow Robot e82a9e695b Merge pull request #22132 from kubernetes/remyleone-patch-2
Add an slack invite link on README
2020-09-06 15:09:41 -07:00
Kubernetes Prow Robot f0a32c7833 Merge pull request #23710 from pjhwa/fix-23709
Fix issue with k8s.io/docs/concepts/services-networking/ingress.md
2020-09-06 08:45:41 -07:00
Kubernetes Prow Robot 6bfafc8fbf Merge pull request #23695 from Arhell/sync-video
sync video block
2020-09-06 08:15:41 -07:00
Tim Bannister b5b9d88433 Add headings for Immutable ConfigMaps and Secrets 2020-09-06 16:03:35 +01:00
Jerry Park 6cde842648 Fix issue with k8s.io/docs/concepts/services-networking/ingress.md 2020-09-06 21:35:55 +09:00
Kubernetes Prow Robot b1aeb2de30 Merge pull request #23704 from joway/patch-3
Fix typo about "Node" in zh
2020-09-06 00:39:41 -07:00
Kubernetes Prow Robot b07048e5b5 Merge pull request #23703 from joway/patch-2
Fix typo in pod-priority-preemption.md
2020-09-06 00:37:41 -07:00
Joway c16a8909e2 Fix typo about "Node" in zh 2020-09-06 11:59:59 +08:00
Joway ba388e321f Fix typo in pod-priority-preemption.md 2020-09-06 11:53:51 +08:00
Kubernetes Prow Robot 2e599aa39f Merge pull request #23076 from tengqm/zh-tweak-run-ss
[zh] Tweak localization for statefulset task
2020-09-05 08:05:40 -07:00
Kubernetes Prow Robot cbe7d8b823 Merge pull request #23358 from tengqm/zh-security-context
[zh] Translate tasks/configure-pod-container/security-context.md
2020-09-05 07:43:40 -07:00
Kubernetes Prow Robot 8993eb3ee6 Merge pull request #23357 from tengqm/zh-pod-security-std
[zh] Translate concepts/security/pod-security-standards.md
2020-09-05 07:23:40 -07:00
Kubernetes Prow Robot ddf6924bf3 Merge pull request #22201 from fancc/topology
translate enabling service topology into chinese
2020-09-05 06:13:41 -07:00
Kubernetes Prow Robot a40fac5005 Merge pull request #23623 from fancc/metrics
translate system metrics into Chinese
2020-09-05 06:09:40 -07:00
Kubernetes Prow Robot 39286ae9a1 Merge pull request #23686 from chenfengjin/patch-7
Update pod-priority-preemption.md
2020-09-05 06:07:40 -07:00
Kubernetes Prow Robot b771b2c05e Merge pull request #23698 from serathius/blog
Small fixes in structured logging post
2020-09-05 05:09:40 -07:00
Marek Siarkowicz e2f152a867 Small fixes in structured logging post
* Fix name of namespace to kube-system
* Change kubedns to coredns
* Remove tailing whitespaces
* Fix names of json keys (should be lowerCamelCase)
* Fix quotation mark (fixes broken json highlighting)
2020-09-05 13:54:40 +02:00
Kubernetes Prow Robot 377ca1f44f Merge pull request #23352 from tengqm/zh-kustomization
[zh] Translate tasks/manage-kubernetes-objects/kustomization.yaml
2020-09-05 03:03:41 -07:00
Kubernetes Prow Robot 640f03ae91 Merge pull request #23148 from tengqm/zh-tune-kms
[zh] Tune KMS provider task
2020-09-05 03:01:42 -07:00
Kubernetes Prow Robot 9da3aca7cc Merge pull request #23113 from tengqm/zh-resync-config-pv
[zh] Resync config PV storage task
2020-09-05 02:59:41 -07:00
Kubernetes Prow Robot 22072aed40 Merge pull request #23092 from tengqm/zh-install-kubectl
[zh] Rework kubectl install translation
2020-09-05 02:57:41 -07:00
Kubernetes Prow Robot e5e02fe48b Merge pull request #23087 from tengqm/zh-rework-patch
[zh] Rework the kubectl patch task
2020-09-05 02:55:40 -07:00
cyberblack28 61fce1c014 Update content/ja/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes.md
問題ありません。

Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-09-05 16:35:36 +09:00
cyberblack28 055ee7a821 Update content/ja/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes.md
問題ありません。

Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-09-05 16:35:23 +09:00
cyberblack28 6ee6bad0cc Update content/ja/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes.md
良いと思います。

Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-09-05 16:34:58 +09:00
cyberblack28 8ebb83473a Update content/ja/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes.md
良いと思います。

Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-09-05 16:34:16 +09:00
cyberblack28 cce0749012 Update content/ja/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes.md
問題ありません。

Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-09-05 16:33:52 +09:00
cyberblack28 62da4dae04 Update content/ja/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes.md
問題ありません。

Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-09-05 16:33:39 +09:00
cyberblack28 3783048020 Update content/ja/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes.md
問題ありません。

Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-09-05 16:33:19 +09:00
Qiming Teng 83c34b14b0 [zh] Translate API concepts reference 2020-09-05 15:00:21 +08:00
Arhell e6015970e2 sync video block 2020-09-05 01:23:01 +03:00
Kubernetes Prow Robot 87f89bdd42 Merge pull request #23661 from tossmilestone/patch-2
Fix link anchor error
2020-09-04 12:35:41 -07:00
Kubernetes Prow Robot f4239559d5 Merge pull request #23679 from pjhwa/fix-23678
Fix issue with k8s.io/docs/reference/command-line-tools-reference/fea…
2020-09-04 12:11:41 -07:00
Kubernetes Prow Robot 30258a297f Merge pull request #23687 from Marusyk/Marusyk-patch-1
Removes IPVS prerequisites in "Validate IPv4/IPv6 dual-stack"
2020-09-04 11:55:40 -07:00
Kubernetes Prow Robot f310d1543e Merge pull request #23632 from jrsapi/feature-blog-introducing-structured-logs
init blog intro structured logs
2020-09-04 08:17:41 -07:00
Joseph Sandoval 1d4e0308ad Add blog intro for structured logs 2020-09-04 11:04:02 -04:00
Kubernetes Prow Robot f17049f03f Merge pull request #23415 from cedlerouge/patch-1
[FR] Update install-minikube.md
2020-09-04 06:43:41 -07:00
Roman Marusyk f4028e2a01 Removes IPVS prerequisites 2020-09-04 12:21:34 +03:00
陈逢锦/FengjinChen a8fa528b19 Update pod-priority-preemption.md 2020-09-04 17:11:53 +08:00
Kubernetes Prow Robot 11d13b84b6 Merge pull request #23227 from kbhawkey/kb-docsy-toc-config
use docsy page edit/issue setup
2020-09-03 18:51:42 -07:00
Jerry Park 2e143b0583 Fix issue with k8s.io/docs/reference/command-line-tools-reference/feature-gates/ 2020-09-03 23:02:35 +00:00
Kubernetes Prow Robot 5371b7fd8e Merge pull request #23185 from sftim/20200816_do_not_print_announcements
Suppress printing any announcements
2020-09-03 15:59:40 -07:00
Karen Bradshaw 71303db06b use docsy page edit/issue setup
setting feedback buttons, primary color setting

update i18n with issue string

remove local edit page string
2020-09-03 16:35:56 -04:00
Tim Bannister b5beb4cded Suppress printing any announcements
When people print the documentation, omit any configured announcement.

Co-authored-by: Celeste Horgan <celeste@cncf.io>
2020-09-03 21:30:18 +01:00
Tim Bannister 6f628b0789 Remove section: On-Premises VMs (#23500)
* Remove on-premises VMs section

* Remove CloudStack page

This page does not fit in with current content guidelines.

* Remove DC/OS page

This page does not fit in with current content guidelines.

* Remove oVirt page

This page does not fit in with current content guidelines.

* Remove empty section: On-Premises VMs
2020-09-03 12:53:40 -07:00
Kubernetes Prow Robot daf7156bd5 Merge pull request #23517 from sftim/20200828_remove_cloud_providers_page
Remove cloud providers page
2020-09-03 12:07:41 -07:00
Kubernetes Prow Robot 35650aa48f Merge pull request #23038 from shuuji3/en/place-default-search-keywords
Retain the current search keywords in the search input form
2020-09-03 10:37:41 -07:00
Kubernetes Prow Robot 968e56893e Merge pull request #23400 from takaf04/master_ja_security_overview_pr
Translate docs/concepts/security/overview into Japanese
2020-09-03 09:53:40 -07:00
didier d95e3d09d2 fixing various typos / spelling errors in page 2020-09-03 18:16:35 +02:00
Benjamin Rozière a0b0644943 Fix missing translation in tools _index.md 2020-09-03 17:51:36 +02:00
Benjamin Rozière 42303b266a Move setup/independent files to setup/production-environment 2020-09-03 17:31:17 +02:00
bebyx 5607db09bb Add important note about port
This tutorial should note that the Pod works **only** with `--port=8080`. This would probably save couple of hours for adventurous DevOps trainees.
2020-09-03 18:11:06 +03:00
Kubernetes Prow Robot 5114ec6453 Merge pull request #23534 from habibrosyad/gh-23504
Fix link color and tab component styles
2020-09-03 08:03:41 -07:00
Takaaki Fujii 6c0d39e16c checked bracket char 2020-09-03 23:28:40 +09:00
takaf04 ccc1ca0b70 Update content/ja/docs/concepts/security/overview.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-09-03 23:20:28 +09:00
Jordan Liggitt 6b27a86b41 Add warnings blog post (#23592) 2020-09-03 04:57:41 -07:00
bryan 42fe98690d translate system metrics into Chinese 2020-09-03 17:08:50 +08:00
Kubernetes Prow Robot f40217dc30 Merge pull request #23524 from whatthefrog/patch-1
Update basic-stateful-set.md
2020-09-02 20:27:40 -07:00
Kubernetes Prow Robot ca7b287f1e Merge pull request #23658 from thtanaka/docs/kubeadm-reset
kubeadm reset unmounts /var/lib/kubelet
2020-09-02 20:25:40 -07:00
Shaw Ho 722c14f381 Fix link anchor error
Fix anchor error
2020-09-03 10:05:12 +08:00
Kubernetes Prow Robot 2e7e7aa43b Merge pull request #23656 from celestehorgan/experiment-removing-roboto
Remove Roboto
2020-09-02 17:47:40 -07:00
Celeste Horgan 33ff66c7e0 Remove in remaining languages
Signed-off-by: Celeste Horgan <celeste@cncf.io>
2020-09-02 17:13:54 -07:00
Celeste Horgan ba3f527b73 Remove roboto font files
Signed-off-by: Celeste Horgan <celeste@cncf.io>
2020-09-02 17:12:03 -07:00
Celeste Horgan 6ec2f71e58 Remove base_fonts.css
Signed-off-by: Celeste Horgan <celeste@cncf.io>
2020-09-02 16:41:06 -07:00
Celeste Horgan fcb5d5adef Remove roboto from /community, /training
Signed-off-by: Celeste Horgan <celeste@cncf.io>
2020-09-02 16:02:45 -07:00
Celeste Horgan c186b6d1d7 Remove Roboto from case study pages
Signed-off-by: Celeste Horgan <celeste@cncf.io>
2020-09-02 15:53:27 -07:00
Kubernetes Prow Robot 5b08dbc38d Merge pull request #23107 from celestehorgan/add-3rdparty-warning
Add 3rd party content warning
2020-09-02 12:53:06 -07:00
Thomas Tanaka 5c7280bb6d kubeadm reset unmounts /var/lib/kubelet
Signed-off-by: Thomas Tanaka <thomas.tanaka@oracle.com>
2020-09-02 10:52:06 -07:00
Celeste Horgan 0815480036 Remove blog.css as it is no longer used
Signed-off-by: Celeste Horgan <celeste@cncf.io>
2020-09-02 10:30:43 -07:00
Celeste Horgan 0da853bb11 Remove Roboto from partner-style.css, improve button styling
Signed-off-by: Celeste Horgan <celeste@cncf.io>
2020-09-02 10:18:34 -07:00
Celeste Horgan 4cbb3b2823 Remove Roboto from _base.scss
Signed-off-by: Celeste Horgan <celeste@cncf.io>
2020-09-02 09:52:03 -07:00
didier-durand b1ae40c621 Merge pull request #1 from kubernetes/master
Synch from kubernetes
2020-09-02 17:59:17 +02:00
Kubernetes Prow Robot b1a0b1a79a Merge pull request #23560 from mkorbi/feature-blog-1.19-endpoint
add feature blog endpointslice
2020-09-02 08:35:08 -07:00
Max 2cbba6feeb update mean for Endpoint API 2020-09-02 17:07:38 +02:00
Kubernetes Prow Robot 9a8dce35df Merge pull request #23646 from Arhell/fix-link
fix broken link
2020-09-02 07:11:06 -07:00
Kubernetes Prow Robot e9e90bf711 Merge pull request #23652 from feranwq/patch-3
update secret.md fix typo
2020-09-02 05:33:07 -07:00
feranwq 33c8267163 update secret.md fix typo 2020-09-02 16:14:59 +08:00
Kubernetes Prow Robot dcb611d8d5 Merge pull request #23465 from tengqm/zh-rotate-cert
[zh] Translate tasks/tls/manual-rotation-of-ca-certificates.md
2020-09-02 00:33:06 -07:00
cyberblack28 01755116bb reviewers delete 2020-09-02 16:16:01 +09:00
cyberblack28 e6cf4c4568 Update content/ja/docs/tasks/administer-cluster/kubeadm/upgrading-windows-nodes.md
良いと思います。

Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-09-02 16:11:40 +09:00
cyberblack28 6c221377ae Update content/ja/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes.md
良いと思います。

Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-09-02 16:10:54 +09:00
cyberblack28 d7c01381a8 Update content/ja/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes.md
問題ありません。

Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-09-02 16:10:32 +09:00
cyberblack28 571e064622 Update content/ja/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes.md
半角ということで承知しました。

Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-09-02 16:10:09 +09:00
cyberblack28 97a79be0c6 Update content/ja/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes.md
良いと思います。

Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-09-02 16:09:57 +09:00
cyberblack28 2fe0c07fa1 Update content/ja/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes.md
良いと思います。

Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-09-02 16:09:42 +09:00
cyberblack28 ca4dd1c001 Update content/ja/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes.md
良いと思います。

Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-09-02 16:09:24 +09:00
cyberblack28 b9498f5256 Update content/ja/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes.md
半角ということで承知しました。

Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-09-02 16:08:59 +09:00
cyberblack28 ff1de4ad20 Update content/ja/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes.md
半角ということで承知しました。

Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-09-02 16:08:48 +09:00
cyberblack28 c6144ddf76 Update content/ja/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes.md
半角ということで承知しました。

Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-09-02 16:08:33 +09:00
Kubernetes Prow Robot 3c837102cb Merge pull request #23172 from tengqm/zh-sync-kubeadm-certs
[zh] Resync kubeadm-certs task
2020-09-01 23:51:06 -07:00
Kubernetes Prow Robot 164774c35a Merge pull request #23163 from tengqm/zh-fix-change-pv-policy
[zh] Fix change PV reclaim policy task
2020-09-01 23:49:06 -07:00
Kubernetes Prow Robot 89d66391be Merge pull request #23159 from tengqm/zh-access-cluster
[zh] Resync access cluster services task
2020-09-01 23:47:07 -07:00
Kubernetes Prow Robot 5845d84edc Merge pull request #23157 from tengqm/zh-resync-topologymgr
[zh] Resync TopologyManager task
2020-09-01 23:45:07 -07:00
Evan Adi 33bdbfca4e Translate tasks/administer-cluster/manage-resources/memory-constraint-namespace into Bahasa Indonesia
nits:
Fix title typo
Add memory-constraints.yaml
Add memory-constraints-pod.yaml
Add example files
nits:
- index title capitalization
- use Container instead of Kontainer
- fix typos
- translate whatsnext references title
2020-09-02 11:53:22 +07:00
Kubernetes Prow Robot c92e5d7c5a Merge pull request #23463 from wangxy518/patch-8
Update 2018-06-28-Airflow-Kubernetes-Operator.md
2020-09-01 18:45:07 -07:00
Lorenzo Paris 7048041d14 Update storage-classes.md
Adding vSphere CSI StorageClass example.
2020-09-01 16:47:11 -07:00
Max ae7b7c0267 fix typo
Co-authored-by: Rob Scott <rob.scott87@gmail.com>
2020-09-02 00:39:03 +02:00
Max c7aad1693b fix typo
Co-authored-by: Rob Scott <rob.scott87@gmail.com>
2020-09-02 00:38:52 +02:00
Max bf0d740ba3 fix typo
Co-authored-by: Rob Scott <rob.scott87@gmail.com>
2020-09-02 00:38:42 +02:00
Max 971de9c341 fix typo
Co-authored-by: Rob Scott <rob.scott87@gmail.com>
2020-09-02 00:38:32 +02:00
Kubernetes Prow Robot 7ec4498c54 Merge pull request #23564 from npu21/saKey-ko
[ko] Fix arguments for service account key pair
2020-09-01 15:31:09 -07:00
Arhell 8cd3b2c0c3 fix broken link 2020-09-02 00:28:44 +03:00
Kubernetes Prow Robot 7b3d12b573 Merge pull request #23645 from JubayerJoy/patch-1
Change filesystem paths to monospace in Minikube setup guide
2020-09-01 13:29:50 -07:00
Jubayer Abdullah Joy 8cc8199d9a Change filesystem paths to monospace in Minikube setup guide
Signed-off-by: Jubayer Abdullah Joy <jubayerjoy98@gmail.com>

- Changed  filesystem paths to monospace in `/docs/setup/learning-environment/minikube.md` mounted host folder section
2020-09-02 02:01:07 +06:00
Kubernetes Prow Robot 81a3f5420a Merge pull request #23520 from sftim/20200828_revise_available_docs_versions_list
Revise “Supported Versions of the Kubernetes Documentation”
2020-09-01 12:37:50 -07:00
Kubernetes Prow Robot e87e065d46 Merge pull request #23635 from saschagrunert/immutable-secret-configmap-default-true
Remove the feature gate part from immutable secrets/configmaps
2020-09-01 12:35:50 -07:00
Kubernetes Prow Robot f48bad6aa8 Merge pull request #23102 from pohly/generic-ephemeral-volumes-blog
blog: generic ephemeral volumes + storage capacity tracking
2020-09-01 11:43:50 -07:00
Celeste Horgan 47dd26bf09 Add 3rd party content warning
Signed-off-by: Celeste Horgan <celeste@cncf.io>
Co-authored-by: Tim Bannister <tim+github@scalefactory.com>
2020-09-01 10:39:06 -07:00
Max c1f1bcf99b update link
Co-authored-by: Bob Killen <killen.bob@gmail.com>
2020-09-01 16:59:38 +02:00
Sascha Grunert 91f4a125c0 Remove the feature gate part from immutable secrets/configmaps
The feature is in `beta` since Kubernetes v1.19.0 so it is enabled per
default. This means that we can omit the hint to enable the feature
gate manually.

Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2020-09-01 14:32:18 +02:00
韩冬 7945750685 Update container-runtimes.md
add 安装CRI-O之前,应该先更新数据源否则有可能找不到资源。
2020-09-01 14:52:29 +08:00
Kubernetes Prow Robot f0d37cd374 Merge pull request #23434 from jimangel/docsy-patch
updating theme submodule
2020-08-31 21:23:49 -07:00
Kubernetes Prow Robot ed43cf5d08 Merge pull request #23631 from jimangel/modifying-makoscafee-permissions
Updating Barnie Makonda's permissions
2020-08-31 21:05:50 -07:00
Jim Angel 429ac31063 Updating Barnie Makonda's permissions 2020-08-31 22:34:24 -05:00
Kubernetes Prow Robot 12d5a34dc9 Merge pull request #23624 from fancc/certificate
fix some format errors of Certificates
2020-08-31 18:25:50 -07:00
Kubernetes Prow Robot 62f26c69e2 Merge pull request #22203 from fancc/hugepage
update `scheduling-hugepages` page
2020-08-31 18:23:50 -07:00
Kubernetes Prow Robot f783b781d5 Merge pull request #23628 from wwgfhf/wwg_podpreset
Update translation in podpreset.md
2020-08-31 18:19:50 -07:00
wwgfhf 11dbe4f490 Update podpreset.md 2020-09-01 08:58:41 +08:00
Kubernetes Prow Robot 353b5bed24 Merge pull request #23529 from JubayerJoy/master
Move “Resource Bin Packing” into Scheduling & Eviction section
2020-08-31 16:41:53 -07:00
Kubernetes Prow Robot afd4d01220 Merge pull request #23540 from Arhell/remove-indent
remove indent on video block
2020-08-31 11:24:22 -07:00
Kubernetes Prow Robot aa855d5988 Merge pull request #23029 from sftim/20200808_improve_callout_styling
Improve styling for callouts
2020-08-31 11:06:21 -07:00
bryan 900ee5c566 fix some format errors of Certificates 2020-09-01 00:32:47 +08:00
Kubernetes Prow Robot b29e66f357 Merge pull request #23510 from ttonline6/changelog
fix broken links
2020-08-31 09:16:21 -07:00
Kubernetes Prow Robot a9e92583cb Merge pull request #23530 from tallaxes/patch-1
Fix arguments for service account key pair
2020-08-31 09:10:21 -07:00
Kubernetes Prow Robot 1cf74b8d32 Merge pull request #23586 from allx/patch-1
Update endpoint-slices.md
2020-08-31 08:56:21 -07:00
Max 8d08b9bfc1 add feature blog 1y support (#23582)
* add 1y support feature blog

* fixed images

* adjsut title and linkt to slack channel

* Update content/en/blog/_posts/2020-08-31-increase-kubernetes-support-one-year.md

Co-authored-by: Bob Killen <killen.bob@gmail.com>

* Update content/en/blog/_posts/2020-08-31-increase-kubernetes-support-one-year.md

Co-authored-by: Bob Killen <killen.bob@gmail.com>

* Update content/en/blog/_posts/2020-08-31-increase-kubernetes-support-one-year.md

Co-authored-by: Bob Killen <killen.bob@gmail.com>

* Update content/en/blog/_posts/2020-08-31-increase-kubernetes-support-one-year.md

Co-authored-by: Bob Killen <killen.bob@gmail.com>

* Update content/en/blog/_posts/2020-08-31-increase-kubernetes-support-one-year.md

Co-authored-by: Bob Killen <killen.bob@gmail.com>

* Update content/en/blog/_posts/2020-08-31-increase-kubernetes-support-one-year.md

Co-authored-by: Bob Killen <killen.bob@gmail.com>

* Update content/en/blog/_posts/2020-08-31-increase-kubernetes-support-one-year.md

Co-authored-by: Bob Killen <killen.bob@gmail.com>

* Update content/en/blog/_posts/2020-08-31-increase-kubernetes-support-one-year.md

Co-authored-by: Bob Killen <killen.bob@gmail.com>

* Update content/en/blog/_posts/2020-08-31-increase-kubernetes-support-one-year.md

Co-authored-by: Bob Killen <killen.bob@gmail.com>

Co-authored-by: Bob Killen <killen.bob@gmail.com>
2020-08-31 08:52:21 -07:00
bryan 268492a364 translate into chinese 2020-08-31 23:14:23 +08:00
bryan dd9d26c620 update manage-hugepages page 2020-08-31 23:10:12 +08:00
Kubernetes Prow Robot 6610821653 Merge pull request #23551 from tao12345666333/fix-metrics-label
fix `apiserver_requested_deprecated_apis` memtric's label.
2020-08-31 05:06:21 -07:00
Kubernetes Prow Robot 0dac982f78 Merge pull request #23570 from gaoguangze111/update-chinese-access-cluster-link
Update chinese page linkd access-cluster-link
2020-08-31 05:04:20 -07:00
Kubernetes Prow Robot 65d8f16885 Merge pull request #23591 from wwgfhf/wwg_node
Update translation in  assign-pod-node.md
2020-08-31 05:02:20 -07:00
Qiming Teng 28d79ae1e8 [zh] Translate tasks/tls/manual-rotation-of-ca-certificates.md 2020-08-31 20:01:56 +08:00
Kubernetes Prow Robot cb624368e9 Merge pull request #23590 from wwgfhf/wwg_policy
Update translation pod-security-policy.md
2020-08-31 05:00:21 -07:00
Somtochi Onyekwere 5c81a92775 Corrects inconsistency in name 2020-08-31 12:43:50 +01:00
wwgfhf 0319dd70d8 Update assign-pod-node.md 2020-08-31 19:21:52 +08:00
wwgfhf 9da30f4876 Update pod-security-policy.md 2020-08-31 19:18:46 +08:00
Kubernetes Prow Robot e98cd0d41b Merge pull request #23584 from wwgfhf/wwg_nodes
Update translation in nodes.md
2020-08-31 03:14:20 -07:00
Kubernetes Prow Robot 2dda78962b Merge pull request #23577 from gaoguangze111/update-chinese-page-high-availability
update chinese page high-availability
2020-08-31 03:12:20 -07:00
Kubernetes Prow Robot 7bd29ecf74 Merge pull request #23576 from gaoguangze111/update-chinese-page-setup
Change link to Chinese version page
2020-08-31 03:10:21 -07:00
Kubernetes Prow Robot fe029648df Merge pull request #23575 from huchengze/patch-33
Update resource-bin-packing.md for zh
2020-08-31 03:08:20 -07:00
Kubernetes Prow Robot 5796b25534 Merge pull request #23574 from gaoguangze111/Correct-404-link-logging-elasticsearch-kibana
Correct 404 link logging-elasticsearch-kibana
2020-08-31 03:06:21 -07:00
Kubernetes Prow Robot d914e8e3d0 Merge pull request #23573 from huchengze/patch-31
Update explore-intro.html for zh
2020-08-31 03:04:20 -07:00
Kubernetes Prow Robot a879cf684a Merge pull request #23572 from huchengze/patch-30
Update dual-stack.md for zh
2020-08-31 03:02:21 -07:00
Kubernetes Prow Robot 922c6284c5 Merge pull request #23571 from npu21/container-zh
containerd configuration improvement
2020-08-31 03:00:21 -07:00
Kubernetes Prow Robot aff0015d58 Merge pull request #23569 from huchengze/patch-29
Update deployment.md for zh
2020-08-31 02:58:22 -07:00
Kubernetes Prow Robot 54f31fa6a4 Merge pull request #23568 from huchengze/patch-28
Update manage-resources-containers.md for zh
2020-08-31 02:56:21 -07:00
Kubernetes Prow Robot b4aeaa03ef Merge pull request #23567 from huchengze/patch-27
Update addons.md for zh
2020-08-31 02:54:20 -07:00
Kubernetes Prow Robot f0628d2444 Merge pull request #23565 from npu21/svcAccountKey-zh
Fix arguments for service account key pair
2020-08-31 02:52:20 -07:00
Patrick Ohly 5729f1f6b2 blog: generic ephemeral volumes + storage capacity tracking
These are new alpha features coming in Kubernetes 1.19.
2020-08-31 11:31:38 +02:00
alec 3e3de65859 Update endpoint-slices.md
Fix a typo
2020-08-31 17:21:32 +09:00
wwgfhf da48b120c4 Update nodes.md 2020-08-31 15:59:21 +08:00
Max Körbächer 45caa32f9f fixed grammar 2020-08-31 08:51:31 +02:00
GoodGameZoo 21422ad27a update chinese page high-availability 2020-08-30 20:42:15 -07:00
huccshen 5a90349b23 Update resource-bin-packing.md 2020-08-31 11:14:27 +08:00
GoodGameZoo 43d264e044 Change link to Chinese version page 2020-08-30 20:10:40 -07:00
GoodGameZoo b155925511 Correct 404 link logging-elasticsearch-kibana 2020-08-30 20:01:44 -07:00
huccshen a3ca547e1e Update explore-intro.html 2020-08-31 10:57:29 +08:00
huccshen 26f5d35aac Update dual-stack.md 2020-08-31 10:50:57 +08:00
Zhang Yong b4ee843031 containerd configuration improvement 2020-08-31 10:44:39 +08:00
GoodGameZoo ef51a21fdb Update chinese page linkd access-cluster-link 2020-08-30 19:36:59 -07:00
huccshen 32638e65ed Update deployment.md 2020-08-31 10:18:29 +08:00
huccshen e9cf05db66 Update deployment.md 2020-08-31 10:11:29 +08:00
huccshen 71fb3d34e9 Update manage-resources-containers.md 2020-08-31 10:06:52 +08:00
huccshen 517298e98c Update addons.md 2020-08-31 09:58:15 +08:00
Kubernetes Prow Robot 4738206e67 Merge pull request #23559 from tengqm/zh-imperative-command
[zh] Translate imperative-command task
2020-08-30 18:50:21 -07:00
Zhang Yong a66dae2ba3 Fix arguments for service account key pair 2020-08-31 09:47:34 +08:00
Zhang Yong ecf60163b8 Fix arguments for service account key pair 2020-08-31 09:35:38 +08:00
Kubernetes Prow Robot d000628149 Merge pull request #23225 from augustkang/add-closing-fence
Add code fence closing
2020-08-30 17:52:20 -07:00
Jubayer Abdullah Joy 2be9e4e5dd Add redirect for '/docs/concepts/scheduling-eviction/resource-bin-packing/'
File is moved from `/docs/concepts/configuration/resource-bin-packing/` to `/docs/concepts/scheduling-eviction/resource-bin-packing/`
Adding a redirect for old URL
2020-08-30 22:13:28 +06:00
Max 91f9d2e749 adjust wording
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-08-30 17:11:15 +02:00
Max bb139e0b8a edit slug
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-08-30 17:09:54 +02:00
Max 73c8016e4e add quotation mark
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-08-30 17:08:38 +02:00
Kubernetes Prow Robot 8622cd09d6 Merge pull request #23083 from kbhawkey/kb-move-search-page
move search.md
2020-08-30 06:44:22 -07:00
Kubernetes Prow Robot 83df8a79f4 Merge pull request #22926 from yixin21/patch-11
Translate 2019-09-24-san-diego-contributor-summit.md
2020-08-30 05:56:20 -07:00
Max Körbächer ff3c81a681 fix title size 2020-08-30 14:19:52 +02:00
Max Körbächer da41301c54 add endpointslice feature blog 2020-08-30 13:43:51 +02:00
Kubernetes Prow Robot a6e82ba8bc Merge pull request #23466 from tengqm/zh-multi-zones
[zh] Translate setup/best-practices/multiple-zones.md
2020-08-30 03:36:20 -07:00
Qiming Teng 61c1cd6077 [zh] Translate imperative-command task 2020-08-30 18:33:00 +08:00
Kubernetes Prow Robot 648e21ad84 Merge pull request #23553 from npu21/cheatsheet-de
correct Cheatsheet de
2020-08-30 00:34:20 -07:00
Kubernetes Prow Robot 6db296033e Merge pull request #23514 from kushthedude/contri
chore: link to Start Contributing in CONTRIBUTING.md
2020-08-29 22:38:20 -07:00
Qiming Teng d70cd852aa [zh] Translate deprecation policy reference 2020-08-30 13:36:44 +08:00
Qiming Teng 665ba33b08 [zh] Translate custom-resources concept 2020-08-30 13:34:20 +08:00
Zhang Yong 30fea4454e correct cheatsheet 2020-08-30 09:50:21 +08:00
Kubernetes Prow Robot c7e5985098 Merge pull request #23468 from zhangguanzhang/update-zh-container-runtimes
[zh] fix and update setup/production-environment/container-runtimes.md
2020-08-29 18:16:20 -07:00
Arhell 54bae9db18 remove indent on video block 2020-08-30 00:10:12 +03:00
Kubernetes Prow Robot c0d06c1980 Merge pull request #23228 from kvaps/fix-apiserver-dualstack
Specify service-cluster-ip-range for apiserver (dualstack)
2020-08-29 10:53:19 -07:00
Jintao Zhang 72376c52d7 s/removed_version/removed_release
fix `apiserver_requested_deprecated_apis` memtric's label.

ref: https://github.com/kubernetes/kubernetes/blob/044f9102dd44b8a0696f771bf40c2e9df4622076/staging/src/k8s.io/apiserver/pkg/endpoints/metrics/metrics.go#L70

Signed-off-by: Jintao Zhang <zhangjintao9020@gmail.com>
2020-08-30 00:30:09 +08:00
Takaaki Fujii cf1146f75f changed trusted computing base 2020-08-29 23:00:56 +09:00
takaf04 b10e391fc0 Update content/ja/docs/concepts/security/overview.md
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-08-29 22:47:49 +09:00
takaf04 45bfb0adf3 Update content/ja/docs/concepts/security/overview.md
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-08-29 22:45:22 +09:00
takaf04 360d997d1e Update content/ja/docs/concepts/security/overview.md
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-08-29 22:44:07 +09:00
wangjibao.lc 429c78f8f6 update README-ko.md 2020-08-29 16:40:37 +08:00
wangjibao.lc a0aa5b3356 update README-it.md 2020-08-29 16:34:53 +08:00
wangjibao.lc 4f42be1add update README-id.md 2020-08-29 16:30:21 +08:00
M. Habib Rosyad 56b137b88a Fix link color and tab component styles 2020-08-29 14:59:06 +07:00
Yong Zhang e8d464b800 Merge pull request #5 from kubernetes/master
merge
2020-08-29 14:30:02 +08:00
tallaxes a2a1755608 Fix arguments for service account key pair 2020-08-28 15:40:13 -07:00
Jubayer Abdullah Joy 11b10784fd Move “Resource Bin Packing” into Scheduling & Eviction section (#1)
Signed-off-by: Jubayer Abdullah Joy <jubayerjoy98@gmail.com>
2020-08-29 01:42:14 +06:00
Karen Bradshaw 160364d548 move search.md
add search bar to search page

fix bing anchors
2020-08-28 15:37:46 -04:00
cyberblack28 6ccad6439b Title Translate 2020-08-29 01:07:26 +09:00
cyberblack28 89a43a088f Translate Completed 2020-08-29 01:01:58 +09:00
Tim Bannister 94b2f857bb Update Kubernetes architectural diagram (#23138)
* Update Kubernetes architectural diagram

Co-Authored-By: Tim Bannister <tim@scalefactory.com>

* Switch Kubernetes Component diagram to SVG

Co-authored-by: David Kypuros <davidkypuros@gmail.com>
2020-08-28 08:49:50 -07:00
Julien ee8a9b29c2 Update basic-stateful-set.md
Cascading Delete: fixup mixup in delete commands
2020-08-28 17:09:38 +02:00
Tim Bannister 2e55488319 Deprecate {{< versions-other >}} shortcode
Instead of this, use the docs layout named "supported-versions".
2020-08-28 14:58:17 +01:00
Tim Bannister 7bac2479ad Revise list of available documentation versions
For older releases, the previous rendering wasn't quite right.
Implement a custom layout for the supported versions list

This commit does NOT remove the shortcode named {{< versions-other >}}
because it is still used in some localizations.
2020-08-28 14:58:10 +01:00
Tim Bannister 24b350662c Remove links to cloud providers page 2020-08-28 12:53:42 +01:00
Tim Bannister a4ab9c712f Remove cloud providers page
The content guide for the website requires omitting this kind of
content; instead, cloud providers can each provide their own
documentation on how to make their system work with Kubernetes.
2020-08-28 12:44:03 +01:00
Kubernetes Prow Robot 1845764281 Merge pull request #23505 from zacharysarah/smash-the-button
Remove the KubeCon EU event from the landing page
2020-08-28 04:34:52 -07:00
Kubernetes Prow Robot b1c3f44c17 Merge pull request #23508 from gaoguangze111/update-chinese-page-debug-application
Update chinese page debug-application
2020-08-28 04:16:52 -07:00
Kubernetes Prow Robot b9971f2427 Merge pull request #23513 from cheng0214/patch-1
Update chinese horizontal-pod-autoscale-walkthrough.md
2020-08-28 04:14:53 -07:00
Kubernetes Prow Robot e72e653f57 Merge pull request #23515 from xieyanker/patch-1
Fix format error
2020-08-28 04:12:53 -07:00
xieyanker 17e180f8ae Fix format error 2020-08-28 18:37:26 +08:00
Kush Trivedi 09b03d35a1 chore: link to Start Contributing in CONTRIBUTING.md
Signed-off-by: Kush Trivedi <kushthedude@gmail.com>
2020-08-28 15:11:52 +05:30
shencheng 0beb0478b9 Update horizontal-pod-autoscale-walkthrough.md
The yaml example file has mistake
2020-08-28 15:18:43 +08:00
Kubernetes Prow Robot 847c750d2a Merge pull request #23477 from Dong-wook94/bugfix/modify-inconsistency-node-name
Modify Inconsistency node name in Korean
2020-08-27 23:24:54 -07:00
wangjibao.lc 3db8dcc4a6 update link 2020-08-28 12:01:58 +08:00
wangyetao 09d9476f38 fix broken links 2020-08-28 11:44:02 +08:00
GoodGameZoo 65b354ccd9 Update chinese page debug-application 2020-08-27 20:25:12 -07:00
Kubernetes Prow Robot bd38cf195d Merge pull request #23435 from rikatz/flatcar
Add instructions for installing kubeadm in Flatcar Linux
2020-08-27 17:50:18 -07:00
zacharysarah 944c8093da Remove the KubeCon EU event from the landing page 2020-08-27 17:38:30 -07:00
Kubernetes Prow Robot 26b34e9972 Merge pull request #23074 from sobi3ch/patch-1
V1 hello-world app backend yaml definition has wrong indentation
2020-08-27 17:24:18 -07:00
Kubernetes Prow Robot a93c50aef8 Merge pull request #23499 from savitharaghunathan/1.19_rel_notes
Adding v1.19.0 release notes
2020-08-27 16:40:18 -07:00
Kubernetes Prow Robot d8fc2ab2f1 Merge pull request #23489 from BartoszCki/master
Fix a typo
2020-08-27 15:37:30 -07:00
Savitha Raghunathan fd8602b391 Adding v1.19.0 release notes 2020-08-27 18:37:02 -04:00
Kubernetes Prow Robot d1a9cf8f44 Merge pull request #23141 from webmutation/jsonpath-regex-nosupport
Jsonpath regex nosupport
2020-08-27 15:33:29 -07:00
BartoszCki 8bcf7bb744 Make it idiomatic English 2020-08-28 00:31:06 +02:00
Ricardo Pchevuzinske Katz 21a7a01fb3 Add Flatcar instructions
Signed-off-by: Ricardo Pchevuzinske Katz <ricardo.katz@serpro.gov.br>
2020-08-27 17:40:51 -03:00
Christopher De Vries b7f8f824b0 Incorporate suggested language change from Tim Bannister with a couple changes. 2020-08-27 12:46:25 -04:00
Andrew Garrett 8b2e8df3ad semicolon and s/they/the/ 2020-08-27 09:24:50 -07:00
Andrew Garrett 13fcd40344 lowercase container when it's not an API thing
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-08-27 09:23:53 -07:00
Kubernetes Prow Robot 9e6ad5023e Merge pull request #23493 from palnabarun/fix-1.19-release-blog
Fix enhancement statistics in Kubernetes 1.19 release blog
2020-08-27 08:41:53 -07:00
cyberblack28 0729bafcea Translate Completed 2020-08-28 00:28:38 +09:00
Nabarun Pal 7948b19bc9 Fix enhancement statistics in Kubernetes 1.19 release blog
The source of the information is: http://bit.ly/k8s-1-19-enhancements

Signed-off-by: Nabarun Pal <pal.nabarun95@gmail.com>
2020-08-27 20:10:42 +05:30
BartoszCki 9e9b22689c Another typo 2020-08-27 16:07:59 +02:00
BartoszCki 9328c7d2b1 Another typo 2020-08-27 16:00:02 +02:00
BartoszCki 5c8f26e6d6 Fix a typo 2020-08-27 15:23:55 +02:00
Dong-wook94 a7eb062e07 Modify Inconsistency node name in Korean
Change node name from 'noee2' to 'node2'
2020-08-27 17:45:26 +09:00
Kubernetes Prow Robot f965b5fced Merge pull request #23473 from mfilocha/sync-pl-with-upstream-20200827
Synchronize Polish localization - 20200827
2020-08-27 00:43:02 -07:00
Maciej Filocha 4867b6438f Synchronize Polish localization - 20200827
Synchronize Polish localization with upstream master
up to 46bd27df8f.
2020-08-27 08:10:41 +02:00
Kubernetes Prow Robot f0fd3c1569 Merge pull request #23353 from tengqm/zh-pod-priority
[zh] Translate concepts/configuration/pod-priority-preemption.md
2020-08-26 23:07:03 -07:00
zhangguanzhang 91b8a10376 fix and update zh doc 2020-08-27 13:57:36 +08:00
Kubernetes Prow Robot 46bd27df8f Merge pull request #23438 from wangxy518/patch-7
Update container-runtimes.md
2020-08-26 19:13:03 -07:00
Kubernetes Prow Robot c7ab385cdd Merge pull request #23409 from liupeng0518/patch-1
fix typo
2020-08-26 19:01:02 -07:00
杰文 d4f60587d0 Update links to k8s control plane and k8s objects on controller page (#23416)
* add html id #control-plane-components

* Update links to k8s control plane and k8s objects on controller page

Fix links

* Fixe typo

* Update kubernetes-objects.md

* Remove excess Spaces
2020-08-26 18:53:02 -07:00
Kubernetes Prow Robot c4063623ac Merge pull request #23464 from wangxy518/patch-9
Update configmap.md
2020-08-26 18:47:02 -07:00
wangxy518 7e6e7b6f46 Update configmap.md 2020-08-27 09:18:44 +08:00
wangxy518 c2de62be77 Update 2018-06-28-Airflow-Kubernetes-Operator.md 2020-08-27 09:06:41 +08:00
Tim Bannister 4febf7471d Improve styling for callouts
Update styles for callouts (warning, caution, note); also avoid applying
callout-specific styles to general block quotes.
2020-08-27 00:04:26 +01:00
Kubernetes Prow Robot fc3a6220bf Merge pull request #23096 from sftim/20200812_tidy_troubleshooting
Tidy troubleshooting task
2020-08-26 15:01:02 -07:00
Kubernetes Prow Robot 02767f7a3a Merge pull request #23066 from jayunit100/patch-4
Clarify the 3 primitives used for defining policy targets
2020-08-26 14:59:03 -07:00
Kubernetes Prow Robot f6ffc7c881 Merge pull request #23028 from sftim/20200808_fix_glossary_definition_shortcode
Fix glossary definition shortcode
2020-08-26 14:57:04 -07:00
Kubernetes Prow Robot 70b75e16f0 Merge pull request #22981 from shuuji3/en/replace-special-quote-with-normal-ones
Replace special quote characters with normal ones
2020-08-26 14:55:02 -07:00
Kubernetes Prow Robot 723b0863c6 Merge pull request #22754 from sftim/20200726_document_customresourcedefinition_stable
Document CustomResourceDefinition as stable
2020-08-26 14:53:03 -07:00
Kubernetes Prow Robot 06a9e0f39d Merge pull request #22490 from missingcharacter/patch-1
Remove `cluster/update-storage-objects.sh` reference
2020-08-26 14:51:04 -07:00
Kubernetes Prow Robot 390a4d8d9f Merge pull request #22536 from brianpursley/website-22497
Preserve relative path when switching from latest version of the documentation to an older version
2020-08-26 14:49:02 -07:00
Kubernetes Prow Robot 51eb0ded62 Merge pull request #23461 from mkorbi/update-release-blog-1.19
fix release blog 1.19
2020-08-26 14:21:03 -07:00
Somtochi Onyekwere 40d9c0f111 Some more corrections 2020-08-26 22:18:31 +01:00
Max Körbächer e0aaeb1832 fix date 2020-08-26 23:04:24 +02:00
Kubernetes Prow Robot 5a1cbbae00 Merge pull request #23116 from bgsilvait/patch-1
Update manifests with the correct API version
2020-08-26 14:00:21 -07:00
Kubernetes Prow Robot 7392faeb2a Merge pull request #23441 from Vickey-Wu/patch-3
fix: image markdown symbol error
2020-08-26 13:52:19 -07:00
Jim Angel 486a64d2f7 Merge pull request #23405 from mkorbi/release-blog-1.19
Add blog article for v1.19 release
2020-08-26 15:16:12 -05:00
Jim Angel f0490e52e2 Merge pull request #20785 from kubernetes/dev-1.19
Official 1.19 Release Docs
2020-08-26 14:47:58 -05:00
Jim Angel b36f79101e Merge pull request #23460 from savitharaghunathan/config_patch
Correcting URL and other minor k8s versions
2020-08-26 14:24:53 -05:00
Savitha Raghunathan 6793ff4009 Correcting URL and other versions 2020-08-26 14:18:53 -04:00
Daniel Mendes 691ca62bb3 Update content/en/docs/reference/kubectl/jsonpath.md
Co-authored-by: Daniel Smith <dbsmith@google.com>
2020-08-26 19:55:51 +02:00
Daniel Mendes 5a4c534e57 Update content/en/docs/reference/kubectl/jsonpath.md
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-08-26 19:55:26 +02:00
Max Körbächer 0d9be0abd5 add release logo 2020-08-26 15:09:57 +02:00
didier 17807023cc fixing spelling errors
Signed-off-by: didier <durand.didier@gmail.com>
2020-08-26 13:53:40 +02:00
Vickey Wu 915e7f1941 fix: image markdown symbol error
Chinese exclamation symbol in markdown cause image can't be view
2020-08-26 14:49:05 +08:00
Somtochi Onyekwere 4339d17460 Fixes some nits 2020-08-26 07:13:54 +01:00
wangxy518 a88b2340aa Update container-runtimes.md 2020-08-26 09:07:48 +08:00
Jim Angel 4bb6d47e43 updating theme submodule 2020-08-25 15:58:16 -05:00
Max Körbächer b60b26c6ee update release notes link 2020-08-25 21:23:13 +02:00
Max Körbächer 152cbf5b02 update post, add release logo text 2020-08-25 21:09:10 +02:00
Somtochi Onyekwere 8f708911d6 Add blog post: GSoC ‘20 - Building operators for cluster addons 2020-08-25 18:11:02 +01:00
Takaaki Fujii b676bf3f53 fix some kubernetes resource display name 2020-08-25 21:43:35 +09:00
takaf04 fabe7b67d5 Update content/ja/docs/concepts/containers/images.md
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-08-25 21:14:28 +09:00
takaf04 659f9a05cf Update content/ja/docs/concepts/containers/images.md
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-08-25 21:14:03 +09:00
takaf04 3f6a7a8605 Update content/ja/docs/concepts/containers/images.md
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-08-25 21:13:55 +09:00
takaf04 53f1a8a7b1 Update content/ja/docs/concepts/containers/images.md
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
2020-08-25 21:13:44 +09:00
Cédric Roger 5737c8bce1 Update install-minikube.md 2020-08-25 10:06:41 +02:00
Qiming Teng 127072b78e [zh] Translate setup/best-practices/multiple-zones.md 2020-08-25 14:54:51 +08:00
Max afc5b0f4b7 fix headlnines 2020-08-25 08:32:30 +02:00
Max d4dff71be3 Update content/en/blog/_posts/2020-08-25-kubernetes-release-1.19.md
Co-authored-by: Bob Killen <killen.bob@gmail.com>
2020-08-25 08:28:55 +02:00
Max e686b614f9 Update content/en/blog/_posts/2020-08-25-kubernetes-release-1.19.md
Co-authored-by: Bob Killen <killen.bob@gmail.com>
2020-08-25 08:28:45 +02:00
Max ce4863985e Update content/en/blog/_posts/2020-08-25-kubernetes-release-1.19.md
Co-authored-by: Bob Killen <killen.bob@gmail.com>
2020-08-25 08:28:33 +02:00
Max ef29365736 Update content/en/blog/_posts/2020-08-25-kubernetes-release-1.19.md
Co-authored-by: Bob Killen <killen.bob@gmail.com>
2020-08-25 08:28:25 +02:00
Max e8d7bf0dcf Update content/en/blog/_posts/2020-08-25-kubernetes-release-1.19.md
Co-authored-by: Bob Killen <killen.bob@gmail.com>
2020-08-25 08:28:18 +02:00
Max 12b114559d Update content/en/blog/_posts/2020-08-25-kubernetes-release-1.19.md
Co-authored-by: Bob Killen <killen.bob@gmail.com>
2020-08-25 08:28:10 +02:00
Max 163541c6b9 Update content/en/blog/_posts/2020-08-25-kubernetes-release-1.19.md
Co-authored-by: Bob Killen <killen.bob@gmail.com>
2020-08-25 08:27:56 +02:00
Samuel Liu 4883f2f080 Update namespaces.md
fix typo.
2020-08-25 11:02:31 +08:00
Kenichi Omichi 54471cde97 Update the link of kustomization file
The page of kustomize/docs/glossary.md has been moved from
https://github.com/kubernetes-sigs/kustomize to
https://kubernetes-sigs.github.io/kustomize/api-reference/glossary/
This updates the link.
2020-08-24 23:51:52 +00:00
Max Körbächer 4c391b459b add cncf update and title 2020-08-24 21:48:26 +02:00
Andrew Garrett 22a5ff9fdb Fix ambiguity around behavior of preStop hook
When the previous paragraph says that postStart hooks are
fired asynchronously, and this paragraph says "the behavior is
much the same for preStop hooks," it reads as saying that
preStop hooks are fired asynchronously as well–which is not true.

It also seems prudent to give a concrete example of how
terminationGracePeriodSeconds applies to the total time it takes the
preStop hook and the container shutdown to happen.
2020-08-24 12:09:11 -07:00
Keita Akutsu 8b954fdf16 ja-trans: Fix Japanese translation in ja/concepts/cluster-administration/proxies.md #19281 2020-08-25 01:01:18 +09:00
Keita Akutsu 593578db7a ja-trans: Fix Japanese translation in ja/concepts/cluster-administration/proxies.md #19281 2020-08-25 00:59:17 +09:00
Takaaki Fujii 3a044c18d6 finished translate 2020-08-24 23:44:43 +09:00
Takaaki Fujii 85eb1853e2 recheck 2020-08-24 22:22:40 +09:00
Qiming Teng cd47cf8820 [zh] Translate concepts/security/pod-security-standards.md 2020-08-24 19:58:11 +08:00
Qiming Teng e753e55257 [zh] Translate tasks/configure-pod-container/security-context.md 2020-08-24 19:53:36 +08:00
takaf04 7ce319f687 Update content/ja/docs/concepts/containers/images.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-08-24 20:33:31 +09:00
takaf04 cb2500c56c Update content/ja/docs/concepts/containers/images.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-08-24 20:32:44 +09:00
takaf04 4e418f3e81 Update content/ja/docs/concepts/containers/images.md
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
2020-08-24 20:32:20 +09:00
Max Körbächer 17a09045cc init release post 2020-08-24 12:57:25 +02:00
Kubernetes Prow Robot f7049579a1 Merge pull request #23363 from savitharaghunathan/merged-master-dev-1.19
Branch sync - Merge master with dev 1.19
2020-08-23 11:07:41 -07:00
Keita Akutsu cae1bf1adc ja-trans: Fix Japanese translation in ja/concepts/cluster-administration/proxies.md #19281 2020-08-24 02:21:18 +09:00
Savitha Raghunathan 95c94c03d5 resolving conflicts 2020-08-23 12:13:37 -04:00
jay vyas cace35ea04 Clarify the 3 primitives used for defining policy targets
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-08-23 05:11:12 -04:00
Qiming Teng a79a557578 [zh] Translate concepts/configuration/pod-priority-preemption.md 2020-08-23 16:40:31 +08:00
Qiming Teng 193edd36cf [zh] Translate tasks/manage-kubernetes-objects/kustomization.yaml 2020-08-23 12:49:31 +08:00
Tim Bannister 85aaea2a99 Document CustomResourceDefinition as stable
Co-authored-by: Zach Corleissen <zacharysarah@users.noreply.github.com>
2020-08-22 14:14:47 +01:00
Kubernetes Prow Robot 8d56047830 Merge pull request #23084 from robscott/endpointslice-duplication
Documenting EndpointSlice deduplication requirements
2020-08-21 04:33:39 -07:00
Rob Scott 9bca5270fe Documenting EndpointSlice deduplication requirements 2020-08-20 15:53:35 -07:00
Vickey Wu 772684dc45 Update admission-controllers.md
fix: add missing content about CertificateApproval, CertificateSigning and CertificateSubjectRestrictions
2020-08-20 11:15:06 +08:00
Keita Akutsu 889698c167 ja-trans: Fix Japanese translation in ja/concepts/cluster-administration/manage-deployment.md #19280 2020-08-20 02:02:36 +09:00
TAKAHASHI Shuuji 7f9bc793c0 Improve the translation of a phrase 2020-08-19 22:36:53 +09:00
TAKAHASHI Shuuji 6282940ff4 Apply suggestions from code review
Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
2020-08-19 22:32:24 +09:00
TAKAHASHI Shuuji 18a599be6c Translate concepts/services-networking/network-policies into Japanese. 2020-08-19 14:10:33 +09:00
Kubernetes Prow Robot 4575c7d1a5 Merge pull request #23229 from sftim/20200819_update_audit_task
Fix cluster auditing task page
2020-08-18 16:55:10 -07:00
Tim Bannister 420155905a Fix cluster auditing task page 2020-08-19 00:29:06 +01:00
Becca Bau f6eafd9480 Update content/en/docs/tasks/debug-application-cluster/resource-metrics-pipeline.md
Avoiding Latin phrasing

Co-authored-by: Zach Corleissen <zacharysarah@users.noreply.github.com>
2020-08-18 18:32:45 -04:00
Andrei Kvapil b9bc797a9f Specify service-cluster-ip-range for apiserver 2020-08-18 23:39:12 +02:00
Daniel Mendes 6262a5dae3 Update jsonpath.md 2020-08-18 19:59:10 +02:00
Qiming Teng 1d05d2cba2 [zh] Rework cloud controller
The English version has been drastically revised.
2020-08-18 22:51:24 +08:00
Tim Bannister fb127402c6 Add cncf-landscape shortcode
and adjust /partners/ to use it.
2020-08-18 13:34:43 +01:00
augustkang b55ef2498f add missing code block fence 2020-08-18 19:03:09 +09:00
augustkang 4b5c7f18d2 add closing fence 2020-08-18 18:47:11 +09:00
TAKAHASHI Shuuji 385c9ab606 Translate contribute/style/content-organization into Japanese. 2020-08-18 09:14:27 +09:00
TAKAHASHI Shuuji 3085bbde02 Copy contribute/style/content-organization.md from en/ directory. 2020-08-18 08:11:50 +09:00
TAKAHASHI Shuuji 0e7433b99c Translate contribute/style/content-guide.md into Japanese. 2020-08-18 07:20:00 +09:00
TAKAHASHI Shuuji 32e0ff51d6 Copy contribute/style/content-guide.md from en/ directory. 2020-08-18 06:50:14 +09:00
Max Körbächer 4491deea60 init 2020-08-17 20:26:07 +02:00
Qiming Teng 41b796a961 [zh] Resync kubeadm-certs task 2020-08-16 13:43:38 +08:00
Aris Cahyadi Risdianto dd1c2cd330 ID localization for debug application cluster
Add nginx-with-request yaml for debug application cluster
2020-08-16 01:17:45 +07:00
Qiming Teng 23ec620716 [zh] Fix change PV reclaim policy task
The original English text is missing ...
2020-08-15 22:59:28 +08:00
Tim Bannister 84b05958b2 Tidy troubleshooting task 2020-08-15 14:07:07 +01:00
Qiming Teng 0f97bf3c67 [zh] Resync TopologyManager task
Mainly fix the upstream English text changes.
2020-08-15 20:24:22 +08:00
Qiming Teng fbd908ce97 [zh] Resync access cluster services task
The English context was completely missed from this page. There are few
upstream changes that need syncs.
2020-08-15 15:03:49 +08:00
wangxy518 839c4bcf90 Update volume-snapshots.md 2020-08-15 08:04:46 +08:00
TAKAHASHI Shuuji e5cee09476 Copy concepts/services-networking/endpoint-slices.md from en/ directory. 2020-08-15 02:45:01 +09:00
Kubernetes Prow Robot 4f7f778a73 Merge pull request #23018 from savitharaghunathan/ref_docs_1.19
Update generated reference API docs
2020-08-14 10:42:21 -07:00
Dery Rahman Ahaddienata f85e732ad6 Kubernetes master -> Kubernetes control plane 2020-08-14 21:58:56 +07:00
Dery Rahman Ahaddienata 53ec8d14f5 Deploy -> menyebarkan & summary -> ringkasan 2020-08-14 21:58:53 +07:00
Savitha Raghunathan 9b21270b8f Update minor verison in api index page 2020-08-14 10:21:36 -04:00
Daniel Mendes 5247eaccc3 Apply suggestions from code review
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-08-14 14:55:00 +02:00
nishipy 0cc2b2a1df Translate concepts/cluster-administration/cloud-providers/ into Japanese 2020-08-14 21:11:06 +09:00
Dery Rahman Ahaddienata 346979402b Apply suggestions from code review
Co-authored-by: Aris Cahyadi Risdianto <aris.risdianto@gmail.com>
Co-authored-by: Yudi A Phanama <11147376+phanama@users.noreply.github.com>
2020-08-14 19:09:25 +07:00
Christopher De Vries 4bb76cd0fb Change secondary to replica and use primary as an adjective consistently 2020-08-14 08:04:50 -04:00
Dery Rahman Ahaddienata efe9e55d17 Update content/id/docs/tutorials/kubernetes-basics/deploy-app/_index.md
Co-authored-by: Aris Cahyadi Risdianto <aris.risdianto@gmail.com>
2020-08-14 19:01:40 +07:00
Daniel Mendes 869817b56c Update jsonpath.md 2020-08-14 11:40:11 +02:00
Daniel Mendes 2a33dfdcd6 Update jsonpath.md
Adding note that JSONPath in kubectl cli does not currently support RegEx.
2020-08-14 11:31:00 +02:00
Qiming Teng 4de8e2964f [zh] Tune KMS provider task
Issues fixed:

- The word secret should not be translated due to its special meaning;
- The indentation of contents in a enumeration context was mostly wrong;
- Some links are pointing to English version;
- The way English context was commented out is making future tracking
difficult.
2020-08-14 16:16:02 +08:00
Becca Bau 2a19a35ad9 grammatical changes to resource metrics pipeline
Made some grammatical changes to the text.
2020-08-13 18:09:35 -04:00
Savitha Raghunathan 50cfe280cd Updating generated files for v1.19.0-rc.4 2020-08-13 16:45:52 -04:00
Christopher De Vries 044d11de32 Replace master/slave with primary/secondary where possible 2020-08-13 08:59:24 -04:00
Bruno Gabriel da Silva d8b3ec4f63 Update manifests with the correct API version
Change the API from deployment  manifests  apps/v1beta1 ->  apps/v1

As per doc (https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/)

Deployment in the extensions/v1beta1, apps/v1beta1, and apps/v1beta2 API versions is no longer served
Migrate to use the apps/v1 API version, available since v1.9. Existing persisted data can be retrieved/updated via the new version.
2020-08-13 11:06:12 +01:00
Qiming Teng 9c718eb066 [zh] Resync config PV storage task 2020-08-13 13:44:18 +08:00
Kubernetes Prow Robot 9d0baba1e1 Merge pull request #23075 from annajung/merged-master-dev-1.19
Merged master dev 1.19
2020-08-12 09:43:44 -07:00
Anna Jung dfb15d9f30 Fix syntax issue with ingress demo 2020-08-12 08:47:34 -05:00
Kubernetes Prow Robot 786a3a65c2 Merge pull request #23061 from pohly/storage-capacity
storage capacity: mention API group
2020-08-12 01:13:45 -07:00
Takaaki Fujii 1c06e3763c fix list-centence and concept 2020-08-12 17:03:31 +09:00
Qiming Teng 6e90a5bda2 [zh] Rework kubectl install translation
The English version has changed a lot.
2020-08-12 14:59:40 +08:00
Takaaki Fujii 60ba92c12f completed translating 2020-08-12 11:52:35 +09:00
Qiming Teng e073ac38f8 [zh] Rework kubectl patch tasks
The file location has changed in English site, with two new sections
added.
2020-08-12 10:39:51 +08:00
Tim Bannister c105f1a03a Fix glossary definition shortcode
Fix a bug rendering short glossary definitions. Also, add an example
of a short glossary definition to the style guide.
2020-08-11 22:41:42 +01:00
Keita Akutsu b497eb0463 ja-trans: Fix Japanese translation in ja/concepts/cluster-administration/proxies.md #19281 2020-08-12 00:24:45 +09:00
Keita Akutsu fe29370afb ja-trans: Fix Japanese translation in ja/concepts/cluster-administration/manage-deployment.md #19280 2020-08-11 23:56:53 +09:00
Qiming Teng 0836d67ef6 [zh] Tweak localization for stateful set task 2020-08-11 21:42:37 +08:00
Anna Jung 09d0f598fa Merge master into dev-1.19 to keep in sync 2020-08-11 08:34:02 -05:00
Kubernetes Prow Robot d9784dc5b4 Merge pull request #23068 from divyenpatel/dev-1.19
describe CSIMigrationvSphere and CSIMigrationvSphereComplete flags
2020-08-11 06:24:18 -07:00
TAKAHASHI Shuuji c6a96128c4 Replace special quote characters with normal ones. 2020-08-11 21:05:22 +09:00
Piotr Sobieszczański 75fd9320d8 v1 backend yaml definition has wrong indentation 2020-08-11 12:05:50 +02:00
Divyen Patel a83681671a describe CSIMigrationvSphere and CSIMigrationvSphereComplete flags 2020-08-10 11:09:18 -07:00
Patrick Ohly 6d84df458e Update content/en/docs/concepts/storage/storage-capacity.md
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-08-10 19:32:25 +02:00
Patrick Ohly c5e26a2636 Update content/en/docs/concepts/storage/storage-capacity.md
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-08-10 19:32:12 +02:00
Qiming Teng badeab324b [zh] Tune translation for debug service task 2020-08-10 22:57:44 +08:00
Patrick Ohly 0dd9d1088e storage capacity: mention API group
Just the feature gate alone is not enough, the API group also needs to
be enabled.
2020-08-10 16:23:59 +02:00
Brian Pursley 7bc5ee0710 Preserve relative path when switching between versions of the documentation 2020-08-09 10:41:36 -04:00
TAKAHASHI Shuuji 34d805df72 Fill the search input form with the current search keywords. 2020-08-09 12:14:40 +09:00
TAKAHASHI Shuuji 5cc86c82f8 Add example resources. 2020-08-07 13:13:00 +09:00
TAKAHASHI Shuuji 54436fa647 Copy concepts/services-networking/network-policies.md from en/ directory. 2020-08-07 13:13:00 +09:00
Keita Akutsu 02c055e4d7 ja-trans: Translate concepts/cluster-administration/proxies.md into Japanese #19281 2020-08-06 00:33:00 +09:00
Keita Akutsu d38aa54efa ja-trans: Translate concepts/cluster-administration/manage-deployment.md into Japanese #19280 2020-08-05 01:29:48 +09:00
Kubernetes Prow Robot 679e13055a Merge pull request #22932 from savitharaghunathan/merged-master-dev-1.19
Branch sync - Merge master with dev 1.19
2020-08-04 08:22:21 -07:00
danninov 15e2140286 Add ID localization of force delete stateful pod 2020-08-04 17:10:30 +07:00
danninov 57fe47cb18 Add ID localization task configure volume storage 2020-08-04 06:13:37 +07:00
Savitha Raghunathan 53c71ad3f9 Merge remote-tracking branch 'upstream/master' into dev-1.19 2020-08-03 16:09:39 -04:00
yixin21 1a2fec388d Create 2019-09-24-san-diego-contributor-summit.md
zh-trans 2019-09-24-san-diego-contributor-summit.md
2020-08-03 20:41:35 +08:00
Philippe Martin 23e979e5f0 Add examples 2020-07-31 16:50:37 +02:00
Philippe Martin 6558ca888a end of translation 2020-07-31 16:50:37 +02:00
Philippe Martin 71d6fb6d97 Start translation 2020-07-31 16:50:37 +02:00
Aris Cahyadi Risdianto 83c4b60966 ID localization for administer cluster - sysctl 2020-07-31 16:28:39 +08:00
Kubernetes Prow Robot af4e2fdf2b Merge pull request #22712 from javidiaz/alphanoticefeature
Adding feature status and prerequisite to new feature.
2020-07-28 05:19:08 -07:00
Kubernetes Prow Robot 66df1d4139 Merge pull request #22793 from savitharaghunathan/merged-master-dev-1.19
Branch sync - Merge master with dev 1.19
2020-07-27 16:57:07 -07:00
Savitha Raghunathan e2a861c2f9 Merge remote-tracking branch 'upstream/master' into dev-1.19 2020-07-27 19:10:42 -04:00
Giovan Isa Musthofa f543b530fb ID Fix link emphasize 2020-07-26 17:58:27 +07:00
Javier Diaz-Montes 6b0192ef72 Adding feature status and prerequisite to new feature. 2020-07-24 12:56:47 -04:00
Kubernetes Prow Robot c5a2bb2edd Merge pull request #22547 from julianvmodesto/csa-and-ssa
Document client-side to server-side apply upgrade
2020-07-21 16:16:05 -07:00
Julian V. Modesto 6b367af5e3 Document client-side to server-side apply upgrade.
Co-authored-by: Zach Corleissen <zacharysarah@users.noreply.github.com>
2020-07-21 18:00:56 -04:00
Kubernetes Prow Robot 6d61644cb1 Merge pull request #22628 from RenaudWasTaken/DisableAcceleratorUsageMetrics
Add DisableAcceleratorUsageMetrics feature flag documentation
2020-07-21 14:22:05 -07:00
Renaud Gaubert bbe4de82e1 Add DisableAcceleratorUsageMetrics feature flag
Signed-off-by: Renaud Gaubert <rgaubert@nvidia.com>
2020-07-21 21:17:24 +00:00
Kubernetes Prow Robot 3841d72380 Merge pull request #21278 from hasheddan/seccomp
Add documentation for Seccomp GA
2020-07-20 12:14:39 -07:00
Zach Corleissen 54949b544e Resolving a nit
Resolves https://github.com/kubernetes/website/pull/22412#discussion_r457602815
2020-07-20 12:01:52 -07:00
Joe Betz 648508c051 Add transferring ownership section to api concepts 2020-07-20 12:01:52 -07:00
hasheddan 3ad7ea77f1 Add documentation for generally available seccomp functionality
Signed-off-by: hasheddan <georgedanielmangum@gmail.com>
2020-07-20 13:51:17 -05:00
Kubernetes Prow Robot 71fa859471 Merge pull request #22596 from savitharaghunathan/merged-master-dev-1.19
Branch sync - Merge master with dev 1.19
2020-07-19 16:52:50 -07:00
Savitha Raghunathan 53f2d23359 resolving conflicts 2020-07-19 19:15:36 -04:00
Kubernetes Prow Robot a25db870c3 Merge pull request #22535 from smarterclayton/fix_doc
Update feature gate info for Service and Node exclusion labels
2020-07-17 17:32:54 -07:00
Clayton Coleman 9e52afe293 Update feature gate info for Service and Node exclusion labels
These features are beta in 1.19 and the legacy gate will be disabled
by default starting in 1.20.
2020-07-17 10:35:41 -04:00
Kubernetes Prow Robot 0d3b4b326d Merge pull request #22415 from jpbetz/resource-version-match
Add resourceVersionMatch parameter documentation to API concepts
2020-07-16 18:19:00 -07:00
Joe Betz e194a89e3a Add resourceVersionMatch param documentation to API concepts 2020-07-16 17:11:33 -07:00
Kubernetes Prow Robot 27cb105589 Merge pull request #22544 from tengqm/drop-dynamicauditing
Drop DynamicAuditing
2020-07-16 11:28:15 -07:00
Kubernetes Prow Robot 8fea591259 Merge pull request #22545 from msau42/dev-1.19
Update Azure disk feature gates for 1.19 beta
2020-07-16 11:24:15 -07:00
Kubernetes Prow Robot 5fa68b9ee1 Merge pull request #21671 from huffmanca/csi-driver-fsgroup-support
Include details on the CSIVolumeSupportFSGroup feature gate
2020-07-16 10:21:41 -07:00
Michelle Au 8a53eed8d8 Update Azure disk feature gates for 1.19 beta 2020-07-16 09:55:20 -07:00
Christian Huffman 0d6765d2fa Include details on the CSIVolumeFSGroupPolicy feature gate 2020-07-16 12:01:08 -04:00
Qiming Teng 7b2126c036 Update audit.md 2020-07-16 21:03:06 +08:00
Qiming Teng c52731f462 Drop DynamicAuditing
The dynamic auditing feature is dropped in 1.19.

Ref1: https://groups.google.com/forum/#!topic/kubernetes-sig-auth/aV_nXpa5uWU
Ref2: kubernetes/kubernetes#91502
2020-07-16 20:51:57 +08:00
Kubernetes Prow Robot c7285443ee Merge pull request #21634 from pohly/kubernetes-1-19-features
storage: CSIStorageCapacity
2020-07-16 03:53:41 -07:00
Kubernetes Prow Robot 49bd40e6d3 Merge pull request #21115 from Huang-Wei/1.19-pts-stable
Promote PodTopologySpread to stable in 1.19
2020-07-16 03:43:42 -07:00
Patrick Ohly 19b8f8421f storage: CSIStorageCapacity
This is the initial documentation for one new feature:
- https://github.com/kubernetes/enhancements/issues/1472
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-07-16 08:52:08 +02:00
Kubernetes Prow Robot eb6b1f8a4e Merge pull request #21663 from rosti/kubeadm-cc-updates-1.19
kubeadm: component config updates in 1.19
2020-07-15 17:44:33 -07:00
Kubernetes Prow Robot 79b9438d8b Merge pull request #21444 from xing-yang/csi_migration_1.19
Add doc for vSphere CSI Migration
2020-07-15 16:22:35 -07:00
Kubernetes Prow Robot c26fdebaad Merge pull request #21108 from liggitt/csr-ga
Rotate kubelet client certificates GA, CSR API GA
2020-07-15 14:50:37 -07:00
Kubernetes Prow Robot 78c130b286 Merge pull request #21581 from liggitt/warning-doc
Document deprecation warnings feature
2020-07-15 14:48:38 -07:00
Wei Huang a886f56819 fixup: address comments 2020-07-15 12:22:36 -07:00
Wei Huang b74f399e5e Promote PodTopologySpread to stable in 1.19 2020-07-15 10:53:29 -07:00
Kubernetes Prow Robot 38b7408b70 Merge pull request #22529 from sftim/20200715_tidy_endpointslice_concept
Tidy EndpointSlice concept
2020-07-15 10:42:38 -07:00
Kubernetes Prow Robot 3f7af5daaf Merge pull request #22438 from pohly/generic-ephemeral-volumes
storage: GenericEphemeralVolume
2020-07-15 09:48:38 -07:00
Kubernetes Prow Robot 9a23188e30 Merge pull request #21652 from marosset/1.19-windows-contanerd
v1.19 Windows OS version support + containerd doc updates
2020-07-15 09:40:38 -07:00
Patrick Ohly 4401fd81d7 Update content/en/docs/concepts/storage/ephemeral-volumes.md
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-07-15 18:28:34 +02:00
Jordan Liggitt f12bc65e80 Address doc review comments 2020-07-15 12:24:42 -04:00
Jordan Liggitt 78d4a10243 CSR API to GA 2020-07-15 11:56:07 -04:00
Jordan Liggitt bc2ed912d9 Rotate kubelet client certificates GA 2020-07-15 11:55:23 -04:00
James Sturtevant 00ef397436 adjust wording 2020-07-15 08:52:35 -07:00
marosset 8a9763a8bc Upgrading Windows OS version support + containerd feature state for v1.19
Co-authored-by: jsturtevant <jstur@microsoft.com>
2020-07-15 08:45:50 -07:00
Jordan Liggitt 2d4357abc6 Add deprecation warning info 2020-07-15 11:30:44 -04:00
xing-yang d2c58dcd0f Add doc for vSphere CSI Migration 2020-07-15 15:02:30 +00:00
Rostislav M. Georgiev 65e914e5e5 Update the kubeadm upgrade page for 1.19
Signed-off-by: Rostislav M. Georgiev <rostislavg@vmware.com>
2020-07-15 16:32:35 +03:00
Rostislav M. Georgiev b554f41c21 kubeadm: Document component config related changes
This briefly adds a description for some side steps in the upgrade
process. Most notably, it mentions the existance of the component config
state table at the end of the `kubeadm upgrade plan` output and the need
to specify a file with upgraded configs to `kubeadm upgrade apply` if
the config state table says so.

Signed-off-by: Rostislav M. Georgiev <rostislavg@vmware.com>
2020-07-15 16:32:35 +03:00
Kubernetes Prow Robot 647b1d3ff0 Merge pull request #21534 from daschott/daschott-win-networking-1.19
updating Windows networking section with new features
2020-07-15 05:54:38 -07:00
Kubernetes Prow Robot f7d2e6da8c Merge pull request #22441 from ankeesler/ankeesler/exec-cred-prov-install-hint
Update external credential providers docs with install hint details
2020-07-15 05:52:37 -07:00
cristiano-degiorgis 93262be5cf upgrade translation for control-plane-node-communication 2020-07-15 13:22:23 +02:00
Tim Bannister 591d3c15cb Tidy EndpointSlice concept 2020-07-15 10:36:21 +01:00
Kubernetes Prow Robot 6af7fec403 Merge pull request #22522 from sftim/20200715_tidy_ingress_concept_for_ga
Tidy ingress concept for GA
2020-07-14 21:20:37 -07:00
Tim Bannister 15ecffa4d0 Tidy Ingress concept
Update documentation for stable Ingress resource (tidying)
2020-07-15 00:42:38 +01:00
Kubernetes Prow Robot b31e51bad6 Merge pull request #21587 from foobarfran/aws-elb-node-targeting
Add target nodes AWS ELB annotation documentation
2020-07-14 16:36:37 -07:00
Franco Morinigo 54b80dc136 Add target nodes AWS ELB annotation documentation 2020-07-14 20:11:45 -03:00
Kubernetes Prow Robot 6ec8665bba Merge pull request #22429 from Huang-Wei/postfilter-doc
Document the changes of scheduler PostFilter extension point
2020-07-14 13:21:22 -07:00
Patrick Ohly 25d50c17b5 Update content/en/docs/concepts/storage/ephemeral-volumes.md
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-07-14 20:47:39 +02:00
Kubernetes Prow Robot b7471e9c0e Merge pull request #22038 from adtac/adtac/reserve-dev-1.19
scheduling-framework.md: update Reserve and Unreserve descriptions
2020-07-14 11:03:21 -07:00
Kubernetes Prow Robot 713603e146 Merge pull request #21607 from klueska/upstream-topology-manager-docs-update
Topology Manager docs update for 1.19
2020-07-14 10:45:21 -07:00
Kubernetes Prow Robot 2ea1d221c7 Merge pull request #21453 from denkensk/update-non-preempt-beta
Update non-preempting option Doc
2020-07-14 10:11:21 -07:00
Kubernetes Prow Robot b9a5adeedd Merge pull request #21589 from robscott/endpointslice-1.19
Updating EndpointSlice documentation for Kubernetes 1.19
2020-07-14 09:41:21 -07:00
Kubernetes Prow Robot bf022d4790 Merge pull request #21689 from alculquicondor/default-spreading
Docs for new default PodTopologySpread functionality and gate
2020-07-14 09:37:22 -07:00
Kubernetes Prow Robot 61ec4a43a9 Merge pull request #21202 from serathius/doc
Document Structured Logging Enhancement
2020-07-14 09:09:21 -07:00
Patrick Ohly 5981f4f860 storage: GenericEphemeralVolume
This is the initial documentation for one new feature:
- https://github.com/kubernetes/enhancements/issues/1698

A new page gets created for different ephemeral volumes because the
relationship between them needs to be explained.

Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-07-14 10:32:53 +02:00
Marek Siarkowicz f9833ee09a Document structured logging
* Separate system logs from Logging Architecture as it mainly covers application logging
* Rename "Metics For The Kubernetes Control Plane" to "Metrics For The Kubernetes System Components" as it covers non-control plane components
* Rename files to `system-logs.md` and `system-metrics.md`
* Remove trailing whitespaces
* Add sections about Klog and Structured Logging

Co-authored-by: Celeste Horgan <celeste@cncf.io>
Co-authored-by: Zach Corleissen <zacharysarah@users.noreply.github.com>
Co-authored-by: Tim Bannister <tim@scalefactory.com>
Co-authored-by: Paweł Kępka <pkepka@google.com>
2020-07-14 00:39:21 +02:00
Rob Scott 028af758bb Updating EndpointSlice documentation for Kubernetes 1.19 2020-07-13 13:25:00 -07:00
Kubernetes Prow Robot 82ac6d49fa Merge pull request #21590 from robscott/ingress-1.19
Updating Ingress docs for 1.19
2020-07-13 11:45:21 -07:00
Aldo Culquicondor 91b83cf906 Docs revision
Signed-off-by: Aldo Culquicondor <acondor@google.com>
2020-07-13 14:30:00 -04:00
Wei Huang 9959ffc513 remove release notes section 2020-07-13 09:52:30 -07:00
Wei Huang 481aa2cce0 Remove the "How to disable preemption" stanza and rewordings 2020-07-13 09:51:12 -07:00
Wei Huang e2fd28a35b Document the changes of scheduler PostFilter extension point 2020-07-13 09:51:12 -07:00
Ricardo Rosales abfff67725 Remove cluster/update-storage-objects.sh reference
Seems like this https://github.com/kubernetes/kubernetes/pull/83969/files makes it obsolete
2020-07-13 10:22:29 -05:00
Kevin Klues 7b270b47bc Add updated documentation about the device plugin interface
Signed-off-by: Kevin Klues <kklues@nvidia.com>
2020-07-13 16:54:52 +02:00
Kubernetes Prow Robot d6b7bf5f38 Merge pull request #21588 from robscott/app-protocol-1.19
Updating AppProtocol docs for 1.19 release
2020-07-10 13:49:49 -07:00
Rob Scott 4e6aa1b43b Updating AppProtocol docs for 1.19 release 2020-07-09 18:31:43 -07:00
Rob Scott b8d8b9984d Fixing some issues in Ingress docs 2020-07-09 17:59:24 -07:00
Kubernetes Prow Robot 6915f6b35d Merge pull request #22430 from savitharaghunathan/merged-master-dev-1.19
Branch sync - Merge master with dev 1.19
2020-07-09 15:18:34 -07:00
Adhityaa Chandrasekar a77986c867 scheduling-framework.md: update Reserve and Unreserve descriptions 2020-07-09 16:15:23 +00:00
Andrew Keesler 371ac1ffb5 Update external credential providers docs with install hint details
Signed-off-by: Andrew Keesler <akeesler@vmware.com>
2020-07-09 11:57:16 -04:00
Aldo Culquicondor e02160c63c Docs for new default PodTopologySpread functionality and gate
Signed-off-by: Aldo Culquicondor <acondor@google.com>
2020-07-08 18:25:25 -04:00
Savitha Raghunathan 0ebc16c10c resolving conflicts 2020-07-08 16:01:48 -04:00
Kubernetes Prow Robot 754c6b1a64 Merge pull request #21437 from alculquicondor/beta-component-config
Add Scheduling Configuration reference doc
2020-07-08 11:11:08 -07:00
Kubernetes Prow Robot 4d21440444 Merge pull request #21928 from tpepper/1.19
patch support: KEP 1498 Kubernetes yearly support period
2020-07-08 10:29:09 -07:00
Tim Pepper 2abe081611 patch support: KEP 1498 Kubernetes yearly support period
As of the KEP
https://git.k8s.io/enhancements/keps/sig-release/1498-kubernetes-yearly-support-period
becoming implementable for 1.19, we have a variation in support
which should be visible to our project's downstream consumers.

Signed-off-by: Tim Pepper <tpepper@vmware.com>
2020-07-08 10:22:53 -07:00
Kubernetes Prow Robot 38a5d01d75 Merge pull request #21210 from javidiaz/hostnamefqdn
Documentation for new feature setHostnameAsFQDN
2020-07-08 07:01:10 -07:00
Christopher M. Luciano 95a77e30db ingress: Update documentation for wildcard hostnames
Signed-off-by: Christopher M. Luciano <cmluciano@us.ibm.com>
2020-07-07 18:17:25 -07:00
Christopher M. Luciano 248ecd10bf ingress: Add documentation on resource backends
Signed-off-by: Christopher M. Luciano <cmluciano@us.ibm.com>
2020-07-07 18:16:58 -07:00
Christopher M. Luciano 51f6e23f35 Updating Ingress docs for 1.19
Co-authored-by: robscott <robertjscott@google.com>
2020-07-07 17:58:51 -07:00
Kubernetes Prow Robot d48be75067 Merge pull request #22089 from Huang-Wei/deprecate-ResourceLimitsPriorityFunction
Document the deprecation of featuregate ResourceLimitsPriorityFunction (1.19)
2020-07-07 14:39:07 -07:00
Javier Diaz-Montes 64422b159a Documenting setHostnameAsFQDN feature
KEP: kubernetes/enhancements#1797 and kubernetes/enhancements#1792
Code PR: kubernetes/kubernetes#91699
2020-07-07 16:42:31 -04:00
Kubernetes Prow Robot c7cf16fbb6 Merge pull request #22218 from savitharaghunathan/merged-master-dev-1.19
Branch sync - Merge master with dev 1.19
2020-07-07 10:45:58 -07:00
Aldo Culquicondor 9ed3f427a2 Review comments 2
Signed-off-by: Aldo Culquicondor <acondor@google.com>
2020-07-07 10:41:45 -04:00
Dery Rahman Ahaddienata 13516045d3 Add docs/tutorials/kubernetes-basics/deploy-app ID translation 2020-07-07 19:37:58 +07:00
Aldo Culquicondor 34c3537a72 Review comments
Signed-off-by: Aldo Culquicondor <acondor@google.com>
2020-07-06 17:15:43 -04:00
Aldo Culquicondor 72090c98af Add Scheduling Configuration reference doc
Built from the existing Scheduling Profiles doc.

Signed-off-by: Aldo Culquicondor <acondor@google.com>
2020-07-06 16:32:21 -04:00
Kubernetes Prow Robot 7825b79270 Merge pull request #21703 from tengqm/StreamingProxyRedirects
Mark StreamingProxyRedirects deprecated in 1.19
2020-07-06 07:16:52 -07:00
Irvi Firqotul Aini ddeb994446 Add irvifa as lead as a preparation step for transition 2020-07-02 01:44:31 +07:00
David Schott 4a746cf2c4 addressing feedback 2020-06-30 17:21:26 -07:00
Savitha Raghunathan 220d754880 Merge remote-tracking branch 'upstream/master' into dev-1.19 2020-06-30 18:02:37 -04:00
David Schott ca3e813cb2 Update content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-06-30 12:33:53 -07:00
David Schott 0349514d11 Update content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-06-30 11:54:33 -07:00
David Schott 90e2a30005 Update content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-06-30 11:53:55 -07:00
David Schott 7686c208ae Update content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-06-30 11:53:46 -07:00
David Schott eae3119f89 Update content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-06-30 11:53:38 -07:00
David Schott 4bc02fce4b Update content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md
Co-authored-by: Tim Bannister <tim@scalefactory.com>
2020-06-30 11:53:24 -07:00
Kubernetes Prow Robot bc90e9eed0 Merge pull request #21672 from janosi/sctp
Moving SCTP support from alpha to beta
2020-06-29 10:43:25 -07:00
Kubernetes Prow Robot 11e13b63ee Merge pull request #21189 from wojtek-t/immutable_secrets_beta
Promote Immutable Secrets/ConfigMaps to Beta
2020-06-29 05:13:24 -07:00
wojtekt 0d7d24195d Promote immutable secrets/configmaps to Beta 2020-06-29 07:53:37 +02:00
mikonoid cbced2f6cd fix grammar 2020-06-28 19:46:08 +03:00
Rémy Léone f1ec7a4a54 Add an slack invite link on README 2020-06-28 13:42:18 +02:00
mikonoid 4ffeeb31c8 fix identation 2020-06-27 16:25:10 +03:00
mikonoid c2c4b6ca0e added original link 2020-06-27 16:21:43 +03:00
Wei Huang 9d1f16db85 Deprecate featuregate ResourceLimitsPriorityFunction in 1.19 2020-06-26 12:41:53 -07:00
mikonoid a78caf7fbb added uk minikube documentation 2020-06-26 16:50:09 +03:00
Kubernetes Prow Robot f93844fd63 Merge pull request #21697 from tengqm/RotateKubeletClientCertificate-119
Mark RotateKubeletClientCertificate GA
2020-06-24 05:53:17 -07:00
Kubernetes Prow Robot eeeffdb159 Merge pull request #21528 from bart0sh/PR0002-multisize-hugepages-beta
Promote HugePageStorageMediumSize feature to Beta
2020-06-19 11:38:44 -07:00
Kubernetes Prow Robot ab9bff3536 Merge pull request #21827 from savitharaghunathan/merged-master-dev-1.19
Branch sync master into dev 1.19
2020-06-17 15:38:05 -07:00
Savitha Raghunathan 7ddedb00a0 resolving conflicts 2020-06-17 17:11:24 -04:00
David Schott b32a248618 added IPv6 and minor networking fix-ups to Windows 2020-06-16 15:08:36 -07:00
Laszlo Janosi 29663e9fca Fix review comments.
"Endpoints" is plural.
Add that the alpha state of the feature lasted til 1.18.
Fix the description of the feature. It is not alpha anymore.
2020-06-15 14:33:54 +00:00
Laszlo Janosi edeb26de0b SCTP moving from alpha to beta 2020-06-15 14:33:38 +00:00
Kubernetes Prow Robot 3ad8c45b0b Merge pull request #21702 from tengqm/ServiceAppProtocol
ServiceAppProtocol is beta in 1.19
2020-06-14 10:51:55 -07:00
Kubernetes Prow Robot 54e1f493a1 Merge pull request #21707 from Cweiping/remove_kubectl_run_command_deprecated_en_from_dev_1.19
use kubectl create deployment to create deployment with  --replicas and --port
2020-06-14 06:09:55 -07:00
Weiping Cai 0202db7c00 use replicas to replace kubectl scale deployment.
Signed-off-by: Weiping Cai <weiping.cai@daocloud.io>
2020-06-14 19:08:31 +08:00
Weiping Cai cf3becadff use kubectl create deployment to create deployment with --replicas and --port.
Signed-off-by: Weiping Cai <weiping.cai@daocloud.io>
2020-06-13 17:31:10 +08:00
Qiming Teng 58c152a9a8 Mark StreamingProxyRedirects deprecated in 1.19 2020-06-13 14:31:46 +08:00
Qiming Teng 358a361346 ServiceAppProtocol is beta in 1.19 2020-06-13 14:17:31 +08:00
Qiming Teng 33d2138c2d Mark RotateKubeletClientCertificate GA 2020-06-13 11:29:01 +08:00
Cria Hu 580d1b3100 fix broken link: http://kubernetes.io/docs/home/contribute/page-templates/ 2020-06-12 14:21:50 +08:00
Kubernetes Prow Robot 696c873110 Merge pull request #21604 from savitharaghunathan/merged-master-dev-1.19
Branch sync - Merge master with dev 1.19
2020-06-09 16:42:05 -07:00
Savitha Raghunathan f1966fe56a Merge remote-tracking branch 'upstream/master' into dev-1.19 2020-06-09 11:21:36 -04:00
Alex Wang 4439f795f8 update non preempt beta 2020-06-08 23:58:58 +08:00
Ed Bartosh 33468aac5a Promote HugePageStorageMediumSize feature to Beta
This is a documentation update for promoting
multiple sizes hugepages future to Beta.
2020-06-08 14:43:39 +03:00
David Schott e01349dc91 updating Windows networking section with new features 2020-06-05 17:23:24 -07:00
Kubernetes Prow Robot 0061388373 Merge pull request #21214 from savitharaghunathan/merged-master-dev-1.19
Branch sync - Merge master with dev 1.19
2020-05-26 18:14:41 -07:00
Savitha Raghunathan 6311db5da4 Merge remote-tracking branch 'upstream/master' into dev-1.19 2020-05-26 18:03:50 -04:00
rennokki 623f46446a Added new PHP client library 2020-05-21 21:29:32 +03:00
Kubernetes Prow Robot 32d7f11a95 Merge pull request #21073 from savitharaghunathan/merged-master-dev-1.19
Branch sync - Merge master with dev 1.19
2020-05-20 08:08:18 -07:00
Savitha Raghunathan 1f08c931df Merge remote-tracking branch 'upstream/master' into dev-1.19 2020-05-19 16:58:32 -04:00
Kubernetes Prow Robot 8e4d1d918d Merge pull request #20896 from savitharaghunathan/merged-master-dev-1.19
Branch sync - Merge master with dev 1.19
2020-05-11 14:18:22 -07:00
Savitha Raghunathan ea8179d29d Merge remote-tracking branch 'upstream/master' into dev-1.19 2020-05-11 16:07:40 -04:00
Kubernetes Prow Robot 2cb47cb2e1 Merge pull request #20847 from savitharaghunathan/dev-1.19
Changing config.toml on dev-1.19 branch to prepare for v1.19 release
2020-05-09 09:05:51 -07:00
Savitha Raghunathan 42fbd6e789 config changes to prepare for v1.19 release
Change config on dev-1.19 branch to prepare for v1.19 release
2020-05-08 15:02:45 -04:00
Monis Khan 18664c0fff zh: remove support for basic authentication
Signed-off-by: Monis Khan <mok@vmware.com>
2020-05-06 17:47:54 -07:00
Kevin Taylor 4ed975af84 Remove reference to VolumeSubpathEnvExpansion feature gate 2020-05-06 17:47:54 -07:00
Monis Khan 45551e8cba Remove support for basic authentication
Signed-off-by: Monis Khan <mok@vmware.com>
2020-05-06 17:47:54 -07:00
icheikhrouhou 16bbc95df8 fix translate liveness and probes fr 2020-04-13 11:08:17 +02:00
icheikhrouhou 414e1ce804 fix translate share process fr 2020-04-13 10:50:20 +02:00
Cheikhrouhou ines 74af2f19b3 fix naming for liveness fr 2019-12-26 20:35:43 +01:00
Cheikhrouhou ines 293a4ea9d7 translate process namespace fr 2019-12-24 21:52:22 +01:00
Cheikhrouhou ines 55892e5367 translate liveness fr 2019-12-20 21:12:06 +01:00
1946 changed files with 112382 additions and 64440 deletions
+3
View File
@@ -5,6 +5,9 @@ charset = utf-8
max_line_length = 80
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[*.{css,html,js,json,sass,md,mmark,toml,yaml}]
indent_style = space
indent_size = 2
+1 -1
View File
@@ -2,7 +2,7 @@
name: Support Request
about: Support request or question relating to Kubernetes Website project
labels:
- triage/support
- kind/support
---
**This is Support**
+7
View File
@@ -0,0 +1,7 @@
# See the OWNERS docs at https://go.k8s.io/owners
reviewers:
- sig-docs-en-reviews # Defined in OWNERS_ALIASES
approvers:
- sig-docs-en-owners # Defined in OWNERS_ALIASES
+4 -2
View File
@@ -14,9 +14,11 @@
Use the default base branch, “master”, if you're documenting existing
features in the English localization.
If you're working on a different localization (not English), or you
are documenting a feature that will be part of a future release, see
If you're working on a different localization (not English), see
https://kubernetes.io/docs/contribute/new-content/overview/#choose-which-git-branch-to-use
for advice.
If you're documenting a feature that will be part of a future release, see
https://kubernetes.io/docs/contribute/new-content/new-features/ for advice.
-->
+11
View File
@@ -0,0 +1,11 @@
# See the OWNERS docs at https://go.k8s.io/owners
# When modifying this file, consider the security implications of
# allowing listed reviewers / approvals to modify or remove any
# configured GitHub Actions.
reviewers:
- sig-docs-leads
approvers:
- sig-docs-leads
+3 -1
View File
@@ -18,7 +18,7 @@ The [Kubernetes SIG Docs Discussion Group](https://groups.google.com/forum/#!for
### Style Guides and Templates
Before submitting a pull request to create new content, please review the [Kubernetes.io style guide](http://kubernetes.io/docs/home/contribute/style-guide/) and follow the [instructions for using page templates](http://kubernetes.io/docs/home/contribute/page-templates/).
Before submitting a pull request to create new content, please review the [Kubernetes.io style guide](http://kubernetes.io/docs/home/contribute/style-guide/) and follow the [instructions for using page templates](https://kubernetes.io/docs/contribute/style/page-content-types/).
## Contributing to Documentation
@@ -35,3 +35,5 @@ Note that code issues should be filed against the main kubernetes repository, wh
### Submitting Documentation Pull Requests
If you're fixing an issue in the existing documentation, you should submit a PR against the master branch. Follow [these instructions to create a documentation pull request against the kubernetes.io repository](http://kubernetes.io/docs/home/contribute/create-pull-request/).
For more information, see [contributing to Kubernetes docs](https://kubernetes.io/docs/contribute/).
+3 -1
View File
@@ -16,7 +16,7 @@ RUN apk add --no-cache \
build-base \
libc6-compat \
npm && \
npm install -G autoprefixer postcss-cli
npm install -D autoprefixer postcss-cli
ARG HUGO_VERSION
@@ -29,4 +29,6 @@ RUN mkdir -p /usr/local/src && \
WORKDIR /src
USER hugo:hugo
EXPOSE 1313
+13 -11
View File
@@ -23,14 +23,14 @@ module-check:
all: build ## Build site with production settings and put deliverables in ./public
build: module-check ## Build site with production settings and put deliverables in ./public
hugo --minify
build: module-check ## Build site with non-production settings and put deliverables in ./public
hugo --minify --environment development
build-preview: module-check ## Build site with drafts and future posts enabled
hugo --buildDrafts --buildFuture
hugo --buildDrafts --buildFuture --environment preview
deploy-preview: ## Deploy preview site via netlify
hugo --enableGitInfo --buildFuture -b $(DEPLOY_PRIME_URL)
hugo --enableGitInfo --buildFuture --environment preview -b $(DEPLOY_PRIME_URL)
functions-build:
$(NETLIFY_FUNC) build functions-src
@@ -38,13 +38,15 @@ functions-build:
check-headers-file:
scripts/check-headers-file.sh
production-build: build check-headers-file ## Build the production site and ensure that noindex headers aren't added
production-build: module-check ## Build the production site and ensure that noindex headers aren't added
hugo --minify --environment production
HUGO_ENV=production $(MAKE) check-headers-file
non-production-build: ## Build the non-production site, which adds noindex headers to prevent indexing
hugo --enableGitInfo
non-production-build: module-check ## Build the non-production site, which adds noindex headers to prevent indexing
hugo --enableGitInfo --environment nonprod
serve: module-check ## Boot the development server.
hugo server --buildFuture
hugo server --buildFuture --environment development
docker-image:
@echo -e "$(CCRED)**** The use of docker-image is deprecated. Use container-image instead. ****$(CCEND)"
@@ -65,10 +67,10 @@ container-image:
--build-arg HUGO_VERSION=$(HUGO_VERSION)
container-build: module-check
$(CONTAINER_RUN) $(CONTAINER_IMAGE) hugo --minify
$(CONTAINER_RUN) --read-only --mount type=tmpfs,destination=/tmp,tmpfs-mode=01777 $(CONTAINER_IMAGE) sh -c "npm ci && hugo --minify --environment development"
container-serve: module-check
$(CONTAINER_RUN) --mount type=tmpfs,destination=/src/resources,tmpfs-mode=0755 -p 1313:1313 $(CONTAINER_IMAGE) hugo server --buildFuture --bind 0.0.0.0
$(CONTAINER_RUN) --read-only --mount type=tmpfs,destination=/tmp,tmpfs-mode=01777 -p 1313:1313 $(CONTAINER_IMAGE) hugo server --buildFuture --environment development --bind 0.0.0.0 --destination /tmp/hugo --cleanDestinationDir
test-examples:
scripts/test_examples.sh install
@@ -83,5 +85,5 @@ docker-internal-linkcheck:
$(MAKE) container-internal-linkcheck
container-internal-linkcheck: link-checker-image-pull
$(CONTAINER_RUN) $(CONTAINER_IMAGE) hugo --config config.toml,linkcheck-config.toml --buildFuture
$(CONTAINER_RUN) $(CONTAINER_IMAGE) hugo --config config.toml,linkcheck-config.toml --buildFuture --environment test
$(CONTAINER_ENGINE) run --mount type=bind,source=$(CURDIR),target=/test --rm wjdp/htmltest htmltest
+4 -3
View File
@@ -7,10 +7,11 @@ approvers:
- sig-docs-en-owners # Defined in OWNERS_ALIASES
emeritus_approvers:
# chenopis, you're welcome to return when you're ready to resume PR wrangling
# jaredbhatti, you're welcome to return when you're ready to resume PR wrangling
# stewart-yu, you're welcome to return when you're ready to resume PR wrangling
# - chenopis, commented out to disable PR assignments
# - jaredbhatti, commented out to disable PR assignments
# - steveperry-53, commented out to disable PR assignments
- stewart-yu
- zacharysarah
labels:
- sig/docs
+20 -24
View File
@@ -22,18 +22,18 @@ aliases:
- mkorbi
- rlenferink
sig-docs-en-owners: # Admins for English content
- annajung
- bradtopol
- celestehorgan
- irvifa
- jimangel
- kbarnard10
- kbhawkey
- makoscafee
- onlydole
- savitharaghunathan
- sftim
- steveperry-53
- tengqm
- xiangpengzhao
- zacharysarah
- zparnold
sig-docs-en-reviews: # PR reviews for English content
@@ -43,14 +43,11 @@ aliases:
- jimangel
- kbarnard10
- kbhawkey
- makoscafee
- onlydole
- rajeshdeshpande02
- sftim
- steveperry-53
- tengqm
- xiangpengzhao
- zacharysarah
- zparnold
sig-docs-es-owners: # Admins for Spanish content
- raelga
@@ -123,17 +120,17 @@ aliases:
- bells17
# cstoku
- inductor
- kakts
- makocchi-git
# MasayaAoyama
- nasa9084
- oke-py
# oke-py
sig-docs-ko-owners: # Admins for Korean content
- ClaudiaJKang
- gochist
- ianychoi
- seokho-son
- ysyukr
- zacharysarah
sig-docs-ko-reviews: # PR reviews for Korean content
- ClaudiaJKang
- gochist
@@ -142,35 +139,34 @@ aliases:
- ysyukr
- pjhwa
sig-docs-leads: # Website chairs and tech leads
- irvifa
- jimangel
- kbarnard10
- kbhawkey
- onlydole
- sftim
- zacharysarah
sig-docs-zh-owners: # Admins for Chinese content
- chenopis
# chenopis
- chenrui333
- dchen1107
- haibinxie
- hanjiayao
- lichuqiang
- SataQiu
- tengqm
- xiangpengzhao
- xichengliudui
- zacharysarah
- zhangxiaoyu-zidif
sig-docs-zh-reviews: # PR reviews for Chinese content
- chenrui333
- idealhack
# dchen1107
# haibinxie
# hanjiayao
# lichuqiang
- SataQiu
- tanjunchen
- tengqm
- xiangpengzhao
- xichengliudui
- zhangxiaoyu-zidif
# zhangxiaoyu-zidif
sig-docs-zh-reviews: # PR reviews for Chinese content
- chenrui333
- howieyuen
- idealhack
- pigletfly
- SataQiu
- tanjunchen
- tengqm
- xichengliudui
# zhangxiaoyu-zidif
sig-docs-pt-owners: # Admins for Portuguese content
- femrtnz
- jcjesus
+2 -2
View File
@@ -40,13 +40,13 @@ Um die Kubernetes-Website lokal laufen zu lassen, empfiehlt es sich, ein speziel
Wenn Sie Docker [installiert](https://www.docker.com/get-started) haben, erstellen Sie das Docker-Image `kubernetes-hugo` lokal:
```bash
make docker-image
make container-image
```
Nachdem das Image erstellt wurde, können Sie die Site lokal ausführen:
```bash
make docker-serve
make container-serve
```
Öffnen Sie Ihren Browser unter http://localhost:1313, um die Site anzuzeigen. Wenn Sie Änderungen an den Quelldateien vornehmen, aktualisiert Hugo die Site und erzwingt eine Browseraktualisierung.
+2 -2
View File
@@ -33,13 +33,13 @@ El método recomendado para levantar una copia local del sitio web kubernetes.io
Una vez tenga Docker [configurado en su máquina](https://www.docker.com/get-started), puede construir la imagen de Docker `kubernetes-hugo` localmente ejecutando el siguiente comando en la raíz del repositorio:
```bash
make docker-image
make container-image
```
Una vez tenga la imagen construida, puede levantar el sitio web ejecutando:
```bash
make docker-serve
make container-serve
```
Abra su navegador y visite http://localhost:1313 para acceder a su copia local del sitio. A medida que vaya haciendo cambios en el código fuente, Hugo irá actualizando la página y forzará la actualización en el navegador.
+4 -4
View File
@@ -16,13 +16,13 @@ Faites tous les changements que vous voulez dans votre fork, et quand vous êtes
Une fois votre pull request créée, un examinateur de Kubernetes se chargera de vous fournir une revue claire et exploitable.
En tant que propriétaire de la pull request, **il est de votre responsabilité de modifier votre pull request pour tenir compte des commentaires qui vous ont été fournis par l'examinateur de Kubernetes.**
Notez également que vous pourriez vous retrouver avec plus d'un examinateur de Kubernetes pour vous fournir des commentaires ou vous pourriez finir par recevoir des commentaires d'un autre examinateur que celui qui vous a été initialement affecté pour vous fournir ces commentaires.
De plus, dans certains cas, l'un de vos examinateur peut demander un examen technique à un [examinateur technique de Kubernetes](https://github.com/kubernetes/website/wiki/Tech-reviewers) au besoin.
De plus, dans certains cas, l'un de vos examinateurs peut demander un examen technique à un [examinateur technique de Kubernetes](https://github.com/kubernetes/website/wiki/Tech-reviewers) au besoin.
Les examinateurs feront de leur mieux pour fournir une revue rapidement, mais le temps de réponse peut varier selon les circonstances.
Pour plus d'informations sur la contribution à la documentation Kubernetes, voir :
* [Commencez à contribuer](https://kubernetes.io/docs/contribute/start/)
* [Apperçu des modifications apportées à votre documentation](http://kubernetes.io/docs/contribute/intermediate#view-your-changes-locally)
* [Aperçu des modifications apportées à votre documentation](http://kubernetes.io/docs/contribute/intermediate#view-your-changes-locally)
* [Utilisation des modèles de page](https://kubernetes.io/docs/contribute/style/page-content-types/)
* [Documentation Style Guide](http://kubernetes.io/docs/contribute/style/style-guide/)
* [Traduction de la documentation Kubernetes](https://kubernetes.io/docs/contribute/localization/)
@@ -38,13 +38,13 @@ La façon recommandée d'exécuter le site web Kubernetes localement est d'utili
Si vous avez Docker [up and running](https://www.docker.com/get-started), construisez l'image Docker `kubernetes-hugo' localement:
```bash
make docker-image
make container-image
```
Une fois l'image construite, vous pouvez exécuter le site localement :
```bash
make docker-serve
make container-serve
```
Ouvrez votre navigateur à l'adresse: http://localhost:1313 pour voir le site.
+4 -4
View File
@@ -17,7 +17,7 @@
* [योगदान देना शुरू करें](https://kubernetes.io/docs/contribute/start/)
* [परिवर्तनों को अंतिम चरण में लेजाएं](http://kubernetes.io/docs/contribute/intermediate#view-your-changes-locally)
* [पेज टेम्पलेट](http://kubernetes.io/docs/contribute/style/page-templates/)
* [पेज टेम्पलेट](https://kubernetes.io/docs/contribute/style/page-content-types/)
* [प्रलेखन शैली गाइड](http://kubernetes.io/docs/contribute/style/style-guide/)
* [स्थानीयकरण कुबरनेट्स प्रलेखन](https://kubernetes.io/docs/contribute/localization/)
@@ -41,13 +41,13 @@
यदि आप [डॉकर](https://www.docker.com/get-started) चला रहे हैं, तो स्थानीय रूप से `कुबेरनेट्स-ह्यूगो` Docker image बनाएँ:
```bash
make docker-image
make container-image
```
एक बार image बन जाने के बाद, आप साइट को स्थानीय रूप से चला सकते हैं:
```bash
make docker-serve
make container-serve
```
साइट देखने के लिए अपने browser को `http://localhost:1313` पर खोलें। जैसा कि आप source फ़ाइलों में परिवर्तन करते हैं, Hugo साइट को अपडेट करता है और browser को refresh करने पर मजबूर करता है।
@@ -81,4 +81,4 @@ make serve
कुबरनेट्स सामुदायिक भागीदारी पर पनपती है, और हम वास्तव में हमारी साइट और हमारे प्रलेखन में आपके योगदान की सराहना करते हैं!
कुबरनेट्स आपकी भागीदारी पर निर्भर है, और हम हमारी साइट और प्रलेखन में आपके योगदान का मान करते हैं!
कुबरनेट्स आपकी भागीदारी पर निर्भर है, और हम हमारी साइट और प्रलेखन में आपके योगदान का मान करते हैं!
+3 -3
View File
@@ -15,7 +15,7 @@ Untuk informasi lebih lanjut mengenai tata cara melakukan kontribusi, kamu dapat
* [Petunjuk Melakukan Kontribusi](https://kubernetes.io/docs/contribute/start/)
* [Melakukan Tahap Staging pada Konten Dokumentasi yang telah Kamu Sediakan](http://kubernetes.io/docs/contribute/intermediate#view-your-changes-locally)
* [Petunjuk Menggunakan Page Templates](http://kubernetes.io/docs/contribute/style/page-templates/)
* [Petunjuk Menggunakan Page Templates](https://kubernetes.io/docs/contribute/style/page-content-types/)
* [Petunjuk untuk Documentation Style](http://kubernetes.io/docs/contribute/style/style-guide/)
* [Petunjuk untuk Melakukan Lokalisasi Dokumentasi Kubernetes](https://kubernetes.io/docs/contribute/localization/)
@@ -30,13 +30,13 @@ Petunjuk yang disarankan untuk menjalankan Dokumentasi Kubernetes pada mesin lok
Jika kamu sudah memiliki **Docker** [yang sudah dapat digunakan](https://www.docker.com/get-started), kamu dapat melakukan **build** `kubernetes-hugo` **Docker image** secara lokal:
```bash
make docker-image
make container-image
```
Setelah **image** berhasil di-**build**, kamu dapat menjalankan website tersebut pada mesin lokal-mu:
```bash
make docker-serve
make container-serve
```
Buka **browser** kamu ke http://localhost:1313 untuk melihat laman dokumentasi. Selama kamu melakukan penambahan konten, **Hugo** akan secara otomatis melakukan perubahan terhadap laman dokumentasi apabila **browser** melakukan proses **refresh**.
+3 -3
View File
@@ -15,7 +15,7 @@ Per maggiori informazioni su come contribuire alla documentazione Kubernetes, ve
* [Cominciare a contribuire](https://kubernetes.io/docs/contribute/start/)
* [Vedere le modifiche localmente](http://kubernetes.io/docs/contribute/intermediate#view-your-changes-locally)
* [Utilizzare i template delle pagine](http://kubernetes.io/docs/contribute/style/page-templates/)
* [Utilizzare i template delle pagine](https://kubernetes.io/docs/contribute/style/page-content-types/)
* [Guida Stilistica per la documentazione di Kubernetes](http://kubernetes.io/docs/contribute/style/style-guide/)
* [Tradurre la documentazione di Kubernetes](https://kubernetes.io/docs/contribute/localization/)
@@ -30,13 +30,13 @@ Il modo consigliato per eseguire localmente il sito Web Kubernetes prevede l'uti
Se hai Docker [attivo e funzionante](https://www.docker.com/get-started), crea l'immagine Docker `kubernetes-hugo` localmente:
```bash
make docker-image
make container-image
```
Dopo aver creato l'immagine, è possibile eseguire il sito Web localmente:
```bash
make docker-serve
make container-serve
```
Apri il tuo browser su http://localhost:1313 per visualizzare il sito Web. Mentre modifichi i file sorgenti, Hugo aggiorna automaticamente il sito Web e forza un aggiornamento della pagina visualizzata nel browser.
+76 -10
View File
@@ -4,34 +4,100 @@
このリポジトリには、[KubernetesのWebサイトとドキュメント](https://kubernetes.io/)をビルドするために必要な全アセットが格納されています。貢献に興味を持っていただきありがとうございます!
## Hugoを使ってローカル環境でWebサイトを動かす
# リポジトリの使い方
Hugoのインストール方法については[Hugoの公式ドキュメント](https://gohugo.io/getting-started/installing/)をご覧ください。このとき、[`netlify.toml`](netlify.toml#L10)ファイルに記述されている`HUGO_VERSION`と同じバージョンをインストールするようにしてください
Hugo(Extended version)を使用してWebサイトをローカルで実行することも、コンテナランタイムで実行することもできます。コンテナランタイムを使用することを強くお勧めします。これにより、本番Webサイトとのデプロイメントの一貫性が得られます
Hugoがインストールできたら、以下のコマンドを使ってWebサイトをローカル上で動かすことができます:
## 前提条件
```bash
このリポジトリを使用するには、以下をローカルにインストールする必要があります。
- [npm](https://www.npmjs.com/)
- [Go](https://golang.org/)
- [Hugo(Extended version)](https://gohugo.io/)
- [Docker](https://www.docker.com/)などのコンテナランタイム
開始する前に、依存関係をインストールしてください。リポジトリのクローンを作成し、ディレクトリに移動します。
```
git clone https://github.com/kubernetes/website.git
cd website
```
KubernetesのWebサイトではDocsyというHugoテーマを使用しています。コンテナでWebサイトを実行する場合でも、以下を実行して、サブモジュールおよびその他の開発依存関係をプルすることを強くお勧めします。
```
# pull in the Docsy submodule
git submodule update --init --recursive --depth 1
```
**注意:** Kubernetesのウェブサイトでは[DocsyというHugoのテーマ](https://github.com/google/docsy#readme)を使用しています。リポジトリを更新していない場合、 `website/themes/docsy`ディレクトリは空です。 このサイトはテーマのローカルコピーなしでは構築できません。
## コンテナを使ってウェブサイトを動かす
テーマをアップデートするには以下のコマンドを実行します:
コンテナ内でサイトを構築するには以下を実行してコンテナイメージを構築し、実行します
```bash
git submodule update --init --recursive --depth 1
```
make container-image
make container-serve
```
サイトをローカルでビルドしてテストするには以下のコマンドを実行します:
お使いのブラウザにて http://localhost:1313 にアクセスしてください。リポジトリ内のソースファイルに変更を加えると、HugoがWebサイトの内容を更新してブラウザに反映します
## Hugoを使ってローカル環境でWebサイトを動かす
[`netlify.toml`](netlify.toml#L10)ファイルに記述されている`HUGO_VERSION`と同じExtended versionのHugoをインストールするようにしてください。
ローカルでサイトを構築してテストするには、次のコマンドを実行します。
```bash
hugo server --buildFuture
# install dependencies
npm ci
make serve
```
これで、Hugoのサーバーが1313番ポートを使って開始します。お使いのブラウザにて http://localhost:1313 にアクセスしてください。リポジトリ内のソースファイルに変更を加えると、HugoがWebサイトの内容を更新してブラウザに反映します。
## トラブルシューティング
### error: failed to transform resource: TOCSS: failed to transform "scss/main.scss" (text/x-scss): this feature is not available in your current Hugo version
Hugoは、技術的な理由から2種類のバイナリがリリースされています。現在のウェブサイトは**Hugo Extended**バージョンのみに基づいて運営されています。[リリースページ](https://github.com/gohugoio/hugo/releases)で名前に「extended」が含まれるアーカイブを探します。確認するには、`hugo version`を実行し、「extended」という単語を探します。
### macOSにてtoo many open filesというエラーが表示される
macOS上で`make serve`を実行した際に以下のエラーが表示される場合
```
ERROR 2020/08/01 19:09:18 Error: listen tcp 127.0.0.1:1313: socket: too many open files
make: *** [serve] Error 1
```
OS上で同時に開けるファイルの上限を確認してください。
`launchctl limit maxfiles`
続いて、以下のコマンドを実行します(https://gist.github.com/tombigel/d503800a282fcadbee14b537735d202c より引用)。
```
#!/bin/sh
# These are the original gist links, linking to my gists now.
# curl -O https://gist.githubusercontent.com/a2ikm/761c2ab02b7b3935679e55af5d81786a/raw/ab644cb92f216c019a2f032bbf25e258b01d87f9/limit.maxfiles.plist
# curl -O https://gist.githubusercontent.com/a2ikm/761c2ab02b7b3935679e55af5d81786a/raw/ab644cb92f216c019a2f032bbf25e258b01d87f9/limit.maxproc.plist
curl -O https://gist.githubusercontent.com/tombigel/d503800a282fcadbee14b537735d202c/raw/ed73cacf82906fdde59976a0c8248cce8b44f906/limit.maxfiles.plist
curl -O https://gist.githubusercontent.com/tombigel/d503800a282fcadbee14b537735d202c/raw/ed73cacf82906fdde59976a0c8248cce8b44f906/limit.maxproc.plist
sudo mv limit.maxfiles.plist /Library/LaunchDaemons
sudo mv limit.maxproc.plist /Library/LaunchDaemons
sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
sudo chown root:wheel /Library/LaunchDaemons/limit.maxproc.plist
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
```
こちらはmacOSのCatalinaとMojaveで動作を確認しています。
## SIG Docsに参加する
[コミュニティのページ](https://github.com/kubernetes/community/tree/master/sig-docs#meetings)をご覧になることで、SIG Docs Kubernetesコミュニティとの関わり方を学ぶことができます。
+119 -44
View File
@@ -1,69 +1,144 @@
# 쿠버네티스 문서화
[![Build Status](https://api.travis-ci.org/kubernetes/website.svg?branch=master)](https://travis-ci.org/kubernetes/website)
[![GitHub release](https://img.shields.io/github/release/kubernetes/website.svg)](https://github.com/kubernetes/website/releases/latest)
[![Netlify Status](https://api.netlify.com/api/v1/badges/be93b718-a6df-402a-b4a4-855ba186c97d/deploy-status)](https://app.netlify.com/sites/kubernetes-io-master-staging/deploys) [![GitHub release](https://img.shields.io/github/release/kubernetes/website.svg)](https://github.com/kubernetes/website/releases/latest)
환영합니다! 이 저장소는 쿠버네티스 웹사이트 및 문서화를 만드는 데 필요로 하는 모든 asset에 대한 공간을 제공합니다. 여러분이 기여를 원한다는 사실에 매우 기쁩니다!
이 저장소[쿠버네티스 웹사이트 및 문서](https://kubernetes.io/)를 빌드하는 데 필요한 자산이 포함되어 있습니다. 기여해주셔서 감사합니다!
## 문서에 기여하기
# 저장소 사용하기
이 저장소에 대한 복제본을 여러분의 GitHub 계정에 생성하기 위해 화면 오른쪽 위 영역에 있는 **Fork** 버튼을 클릭 가능합니다. 이 복제본은 *fork* 라고 부릅니다. 여러분의 fork에서 원하는 임의의 변경 사항을 만들고, 해당 변경 사항을 보낼 준비가 되었다면, 여러분의 fork로 이동하여 새로운 풀 리퀘스트를 만들어 우리에게 알려주시기 바랍니다.
Hugo(확장 버전)를 사용하여 웹사이트를 로컬에서 실행하거나, 컨테이너 런타임에서 실행할 수 있습니다. 라이브 웹사이트와의 배포 일관성을 제공하므로, 컨테이너 런타임을 사용하는 것을 적극 권장합니다.
여러분의 풀 리퀘스트가 생성된 이후에는, 쿠버네티스 리뷰어가 명료하고 실행 가능한 피드백을 제공하는 책임을 담당할 것입니다. 풀 리퀘스트의 오너로서, **쿠버네티스 리뷰어로부터 제공받은 피드백을 수용하기 위해 풀 리퀘스트를 수정하는 것은 여러분의 책임입니다.** 또한, 참고로 한 명 이상의 쿠버네티스 리뷰어가 여러분에게 피드백을 제공하는 상황에 처하거나, 또는 여러분에게 피드백을 제공하기로 원래 할당된 사람이 아닌 다른 쿠버네티스 리뷰어로부터 피드백을 받는 상황에 처할 수도 있습니다. 그뿐만 아니라, 몇몇 상황에서는, 필요에 따라 리뷰어 중 한 명이 [쿠버네티스 기술 리뷰어](https://github.com/kubernetes/website/wiki/Tech-reviewers)로부터의 기술 리뷰를 요청할지도 모릅니다. 리뷰어는 제시간에 피드백을 제공하기 위해 최선을 다할 것이지만, 응답 시간은 상황에 따라 달라질 수도 있습니다.
## 사전 준비 사항
쿠버네티스 문서화에 기여하기와 관련된 보다 자세한 정보는, 다음을 살펴봅니다:
이 저장소를 사용하기 위해, 로컬에 다음의 소프트웨어들이 설치되어 있어야 합니다.
* [기여 시작하기](https://kubernetes.io/docs/contribute/start/)
* [문서화 변경 사항 스테이징하기](http://kubernetes.io/docs/contribute/intermediate#view-your-changes-locally)
* [페이지 템플릿 사용하기](http://kubernetes.io/docs/contribute/style/page-templates/)
* [문서화 스타일 가이드](http://kubernetes.io/docs/contribute/style/style-guide/)
* [쿠버네티스 문서화 로컬라이징](https://kubernetes.io/docs/contribute/localization/)
- [npm](https://www.npmjs.com/)
- [Go](https://golang.org/)
- [Hugo(확장 버전)](https://gohugo.io/)
- [도커](https://www.docker.com/)와 같은 컨테이너 런타임.
## `README.md`에 대한 쿠버네티스 문서화 번역
시작하기 전에 의존성이 있는 소프트웨어를 설치합니다. 저장소를 복제(clone)하고 디렉터리로 이동합니다.
### 한국어
`README.md` 번역 및 한국어 기여자를 위한 보다 자세한 가이드를 [한국어 README](README-ko.md) 페이지 혹은 [쿠버네티스 문서 한글화 가이드](https://kubernetes.io/ko/docs/contribute/localization_ko/)에서 살펴봅니다.
한국어 번역 메인테이너에게 다음을 통해 연락 가능합니다.
* 이덕준 ([GitHub - @gochist](https://github.com/gochist))
* [Slack channel](https://kubernetes.slack.com/messages/kubernetes-docs-ko)
## 도커를 사용하여 사이트를 로컬에서 실행하기
쿠버네티스 웹사이트를 로컬에서 실행하기 위한 추천하는 방식은 [Hugo](https://gohugo.io) 정적 사이트 생성기를 포함하는 특별한 [도커](https://docker.com) 이미지를 실행하는 것입니다.
> Windows에서 실행하는 경우, [Chocolatey](https://chocolatey.org)로 설치할 수 있는 명명 추가 도구를 필요로 할 것입니다. `choco install make`
> 도커를 사용하지 않고 웹사이트를 로컬에서 실행하기를 선호하는 경우에는, 아래 [Hugo를 사용한 로컬 사이트 실행하기](#hugo를-사용한-로컬-사이트-실행하기)를 살펴봅니다.
도커 [동작 및 실행](https://www.docker.com/get-started) 환경이 있는 경우, 로컬에서 `kubernetes-hugo` 도커 이미지를 빌드 합니다:
```bash
make docker-image
```
git clone https://github.com/kubernetes/website.git
cd website
```
해당 이미지가 빌드 된 이후, 사이트를 로컬에서 실행할 수 있습니다:
쿠버네티스 웹사이트는 [Docsy Hugo 테마](https://github.com/google/docsy#readme)를 사용합니다. 웹사이트를 컨테이너에서 실행하려는 경우에도, 다음을 실행하여 하위 모듈 및 기타 개발 종속성을 가져오는 것이 좋습니다.
```bash
make docker-serve
```
# Docsy 하위 모듈 가져오기
git submodule update --init --recursive --depth 1
```
브라우저에서 http://localhost:1313 를 열어 사이트를 살펴봅니다. 소스 파일에 변경 사항이 있을 때, Hugo는 사이트를 업데이트하고 브라우저를 강제로 새로고침합니다.
## 컨테이너를 사용하여 웹사이트 실행하기
## Hugo를 사용한 로컬 사이트 실행하기
컨테이너에서 사이트를 빌드하려면, 다음을 실행하여 컨테이너 이미지를 빌드하고 실행합니다.
Hugo 설치 안내를 위해서는 [공식 Hugo 문서화](https://gohugo.io/getting-started/installing/)를 살펴봅니다. [`netlify.toml`](netlify.toml#L9) 파일에 있는 `HUGO_VERSION` 환경 변수에서 지정된 Hugo 버전이 설치되었는지를 확인합니다.
```
make container-image
make container-serve
```
Hugo가 설치되었을 때 로컬에서 사이트를 실행하기 위해 (다음을 실행합니다):
웹사이트를 보려면 브라우저를 http://localhost:1313 으로 엽니다. 소스 파일을 변경하면 Hugo가 웹사이트를 업데이트하고 브라우저를 강제로 새로 고칩니다.
## Hugo를 사용하여 로컬에서 웹사이트 실행하기
[`netlify.toml`](netlify.toml#L10) 파일의 `HUGO_VERSION` 환경 변수에 지정된 Hugo 확장 버전을 설치해야 합니다.
사이트를 로컬에서 빌드하고 테스트하려면, 다음을 실행합니다.
```bash
# 의존성 있는 소프트웨어 설치
npm ci
make serve
```
이를 통해 로컬 Hugo 서버를 1313번 포트에 시작니다. 브라우저에서 http://localhost:1313 를 열어 사이트를 살펴봅니다. 소스 파일 변경 사항이 있을 때, Hugo사이트를 업데이트하고 브라우저를 강제로 새로고침합니다.
그러면 포트 1313에서 로컬 Hugo 서버가 시작니다. 웹사이트를 보려면 http://localhost:1313 으로 브라우저를 엽니다. 소스 파일 변경하면, Hugo가 웹사이트를 업데이트하고 브라우저를 강제로 새로 고칩니다.
## 감사합니다!
## 문제 해결
### error: failed to transform resource: TOCSS: failed to transform "scss/main.scss" (text/x-scss): this feature is not available in your current Hugo version
쿠버네티스는 커뮤니티 참여와 함께 생존하며, 우리는 사이트 및 문서화에 대한 여러분의 컨트리뷰션에 대해 정말 감사하게 생각합니다!
Hugo는 기술적인 이유로 2개의 바이너리 세트로 제공됩니다. 현재 웹사이트는 **Hugo 확장** 버전 기반에서만 실행됩니다. [릴리스 페이지](https://github.com/gohugoio/hugo/releases)에서 이름에 `extended` 가 포함된 아카이브를 찾습니다. 확인하려면, `hugo version` 을 실행하고 `extended` 라는 단어를 찾습니다.
### too many open files 이슈에 대한 macOS 문제 해결
macOS에서 `make serve` 를 실행하면 다음의 오류 메시지가 출력됩니다.
```
ERROR 2020/08/01 19:09:18 Error: listen tcp 127.0.0.1:1313: socket: too many open files
make: *** [serve] Error 1
```
파일 오픈 개수에 대한 현재 제한값을 확인합니다.
`launchctl limit maxfiles`
그리고 다음의 명령을 실행합니다(https://gist.github.com/tombigel/d503800a282fcadbee14b537735d202c 를 참고하여 적용).
```
#!/bin/sh
# 코멘트 처리한 것은 원래 gist 링크들이며, 그 아래는 수정된 tombigel의 gist 링크입니다.
# curl -O https://gist.githubusercontent.com/a2ikm/761c2ab02b7b3935679e55af5d81786a/raw/ab644cb92f216c019a2f032bbf25e258b01d87f9/limit.maxfiles.plist
# curl -O https://gist.githubusercontent.com/a2ikm/761c2ab02b7b3935679e55af5d81786a/raw/ab644cb92f216c019a2f032bbf25e258b01d87f9/limit.maxproc.plist
curl -O https://gist.githubusercontent.com/tombigel/d503800a282fcadbee14b537735d202c/raw/ed73cacf82906fdde59976a0c8248cce8b44f906/limit.maxfiles.plist
curl -O https://gist.githubusercontent.com/tombigel/d503800a282fcadbee14b537735d202c/raw/ed73cacf82906fdde59976a0c8248cce8b44f906/limit.maxproc.plist
sudo mv limit.maxfiles.plist /Library/LaunchDaemons
sudo mv limit.maxproc.plist /Library/LaunchDaemons
sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
sudo chown root:wheel /Library/LaunchDaemons/limit.maxproc.plist
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
```
이 내용은 Catalina와 Mojave macOS에서 작동합니다.
# SIG Docs에 참여하기
[커뮤니티 페이지](https://github.com/kubernetes/community/tree/master/sig-docs#meetings)에서 SIG Docs 쿠버네티스 커뮤니티 및 회의에 대한 자세한 내용을 확인합니다.
이 프로젝트의 메인테이너에게 연락을 할 수도 있습니다.
- [슬랙](https://kubernetes.slack.com/messages/sig-docs) [슬랙에 초대 받기](https://slack.k8s.io/)
- [메일링 리스트](https://groups.google.com/forum/#!forum/kubernetes-sig-docs)
# 문서에 기여하기
이 저장소에 대한 복제본을 여러분의 GitHub 계정에 생성하기 위해 화면 오른쪽 위 영역에 있는 **Fork** 버튼을 클릭하면 됩니다. 이 복제본은 *fork* 라고 부릅니다. 여러분의 fork에서 원하는 임의의 변경 사항을 만들고, 해당 변경 사항을 보낼 준비가 되었다면, 여러분의 fork로 이동하여 새로운 풀 리퀘스트를 만들어 우리에게 알려주시기 바랍니다.
여러분의 풀 리퀘스트가 생성된 이후에는, 쿠버네티스 리뷰어가 명료하고 실행 가능한 피드백을 제공하는 책임을 담당할 것입니다. 풀 리퀘스트의 오너로서, **쿠버네티스 리뷰어로부터 제공받은 피드백을 수용하기 위해 풀 리퀘스트를 수정하는 것은 여러분의 책임입니다.**
또한, 참고로 한 명 이상의 쿠버네티스 리뷰어가 여러분에게 피드백을 제공하는 상황이거나, 또는 원래 여러분에게 피드백을 제공하기로 할당된 사람이 아닌 다른 쿠버네티스 리뷰어로부터 피드백을 받는 상황도 있습니다.
그뿐만 아니라, 몇몇 상황에서는, 필요에 따라 리뷰어 중 한 명이 [쿠버네티스 기술 리뷰어](https://github.com/kubernetes/website/wiki/Tech-reviewers)로부터의 기술 리뷰를 요청할지도 모릅니다. 리뷰어는 제시간에 피드백을 제공하기 위해 최선을 다할 것이지만, 응답 시간은 상황에 따라 달라질 수도 있습니다.
쿠버네티스 문서화에 기여하기와 관련된 보다 자세한 정보는, 다음을 참고합니다.
* [쿠버네티스 문서에 기여하기](https://kubernetes.io/docs/contribute/)
* [페이지 콘텐트 타입](https://kubernetes.io/docs/contribute/style/page-content-types/)
* [문서화 스타일 가이드](http://kubernetes.io/docs/contribute/style/style-guide/)
* [쿠버네티스 문서 현지화](https://kubernetes.io/docs/contribute/localization/)
# `README.md`에 대한 쿠버네티스 문서 현지화(localization)
## 한국어
`README.md` 번역 및 한국어 기여자를 위한 보다 자세한 가이드는 [쿠버네티스 문서 한글화 가이드](https://kubernetes.io/ko/docs/contribute/localization_ko/)를 참고합니다.
한국어 번역 메인테이너에게 다음을 통해 연락할 수 있습니다.
* 손석호 ([GitHub - @seokho-son](https://github.com/seokho-son))
* [슬랙 채널](https://kubernetes.slack.com/messages/kubernetes-docs-ko)
# 행동 강령
쿠버네티스 커뮤니티 참여는 [CNCF 행동 강령](https://github.com/cncf/foundation/blob/master/code-of-conduct-languages/ko.md)을 따릅니다.
# 감사합니다!
쿠버네티스는 커뮤니티 참여를 통해 번창하며, 우리는 웹사이트 및 문서화에 대한 당신의 기여에 감사드립니다!
+3 -3
View File
@@ -17,7 +17,7 @@ Więcej informacji na temat współpracy przy tworzeniu dokumentacji znajdziesz
* [Jak rozpocząć współpracę](https://kubernetes.io/docs/contribute/start/)
* [Podgląd wprowadzanych zmian w dokumentacji](http://kubernetes.io/docs/contribute/intermediate#view-your-changes-locally)
* [Szablony stron](http://kubernetes.io/docs/contribute/style/page-templates/)
* [Szablony stron](https://kubernetes.io/docs/contribute/style/page-content-types/)
* [Styl pisania dokumentacji](http://kubernetes.io/docs/contribute/style/style-guide/)
* [Lokalizacja dokumentacji Kubernetes](https://kubernetes.io/docs/contribute/localization/)
@@ -49,13 +49,13 @@ choco install make
Jeśli [zainstalowałeś i uruchomiłeś](https://www.docker.com/get-started) już Dockera, zbuduj obraz `kubernetes-hugo` lokalnie:
```bash
make docker-image
make container-image
```
Po zbudowaniu obrazu, możesz uruchomić serwis lokalnie:
```bash
make docker-serve
make container-serve
```
Aby obejrzeć zawartość serwisu otwórz w przeglądarce adres http://localhost:1313. Po każdej zmianie plików źródłowych, Hugo automatycznie aktualizuje stronę i odświeża jej widok w przeglądarce.
+2 -2
View File
@@ -35,13 +35,13 @@ A maneira recomendada de executar o site do Kubernetes localmente é executar um
Se você tiver o Docker [em funcionamento](https://www.docker.com/get-started), crie a imagem do Docker do `kubernetes-hugo` localmente:
```bash
make docker-image
make container-image
```
Depois que a imagem foi criada, você pode executar o site localmente:
```bash
make docker-serve
make container-serve
```
Abra seu navegador para http://localhost:1313 para visualizar o site. Conforme você faz alterações nos arquivos de origem, Hugo atualiza o site e força a atualização do navegador.
+2 -2
View File
@@ -38,8 +38,8 @@ hugo server --buildFuture
Узнать подробнее о том, как поучаствовать в документации Kubernetes, вы можете по ссылкам ниже:
* [Начните вносить свой вклад](https://kubernetes.io/docs/contribute/)
* [Использование шаблонов страниц](http://kubernetes.io/docs/contribute/style/page-templates/)
* [Руководство по оформлению документации](http://kubernetes.io/docs/contribute/style/style-guide/)
* [Использование шаблонов страниц](https://kubernetes.io/docs/contribute/style/page-content-types/)
* [Руководство по оформлению документации](https://kubernetes.io/docs/contribute/style/style-guide/)
* [Руководство по локализации Kubernetes](https://kubernetes.io/docs/contribute/localization/)
## Файл `README.md` на других языках
+3 -3
View File
@@ -15,7 +15,7 @@ Một khi Pull Request của bạn được tạo, reviewer sẽ chịu trách n
* [Bắt đầu đóng góp](https://kubernetes.io/docs/contribute/start/)
* [Các giai đoạn thay đổi tài liệu](http://kubernetes.io/docs/contribute/intermediate#view-your-changes-locally)
* [Sử dụng các trang templates](http://kubernetes.io/docs/contribute/style/page-templates/)
* [Sử dụng các trang templates](https://kubernetes.io/docs/contribute/style/page-content-types/)
* [Hướng dẫn biểu mẫu tài liệu](http://kubernetes.io/docs/contribute/style/style-guide/)
* [Địa phương hóa tài liệu Kubernetes](https://kubernetes.io/docs/contribute/localization/)
@@ -31,13 +31,13 @@ Cách được đề xuất để chạy trang web Kubernetes cục bộ là dù
Nếu bạn có Docker đang [up và running](https://www.docker.com/get-started), build `kubernetes-hugo` Docker image cục bộ:
```bash
make docker-image
make container-image
```
Khi image đã được built, bạn có thể chạy website cục bộ:
```bash
make docker-serve
make container-serve
```
Mở trình duyệt và đến địa chỉ http://localhost:1313 để xem website. Khi bạn thay đổi các file nguồn, Hugo cập nhật website và buộc làm mới trình duyệt.
+128 -29
View File
@@ -13,52 +13,94 @@ This repository contains the assets required to build the [Kubernetes website an
我们非常高兴您想要参与贡献!
<!--
## Running the website locally using Hugo
# Using this repository
See the [official Hugo documentation](https://gohugo.io/getting-started/installing/) for Hugo installation instructions. Make sure to install the Hugo extended version specified by the `HUGO_VERSION` environment variable in the [`netlify.toml`](netlify.toml#L10) file.
You can run the website locally using Hugo (Extended version), or you can run it in a container runtime. We strongly recommend using the container runtime, as it gives deployment consistency with the live website.
-->
## 在本地使用 Hugo 来运行网站
## 使用这个仓库
请参考 [Hugo 的官方文档](https://gohugo.io/getting-started/installing/)了解 Hugo 的安装指令
请确保安装的是 [`netlify.toml`](netlify.toml#L10) 文件中环境变量 `HUGO_VERSION` 所指定的
Hugo 扩展版本。
可以使用 Hugo(扩展版)在本地运行网站,也可以在容器中运行它。强烈建议使用容器,因为这样可以和在线网站的部署保持一致
<!--
Before building the site, clone the Kubernetes website repository:
-->
在构造网站之前,先克隆 Kubernetes website 仓库:
## Prerequisites
```bash
To use this repository, you need the following installed locally:
- [npm](https://www.npmjs.com/)
- [Go](https://golang.org/)
- [Hugo (Extended version)](https://gohugo.io/)
- A container runtime, like [Docker](https://www.docker.com/).
-->
## 前提条件
使用这个仓库,需要在本地安装以下软件:
- [npm](https://www.npmjs.com/)
- [Go](https://golang.org/)
- [Hugo (Extended version)](https://gohugo.io/)
- 容器运行时,比如 [Docker](https://www.docker.com/).
<!--
Before you start, install the dependencies. Clone the repository and navigate to the directory:
-->
开始前,先安装这些依赖。克隆本仓库并进入对应目录:
```
git clone https://github.com/kubernetes/website.git
cd website
git submodule update --init --recursive
```
<!--
**Note:** The Kubernetes website deploys the [Docsy Hugo theme](https://github.com/google/docsy#readme).
If you have not updated your website repository, the `website/themes/docsy` directory is empty.
The site cannot build without a local copy of the theme.
Update the website theme:
The Kubernetes website uses the [Docsy Hugo theme](https://github.com/google/docsy#readme). Even if you plan to run the website in a container, we strongly recommend pulling in the submodule and other development dependencies by running the following:
-->
**注意:** Kubernetes 网站要部署 [Docsy Hugo 主题](https://github.com/google/docsy#readme).
如果你还没有更新你本地的 website 仓库,目录 `website/themes/docsy`
会是空目录。
在本地没有主题副本的情况下,网站无法正常构造。
使用下面的命令更新网站主题
Kubernetes 网站使用的是 [Docsy Hugo 主题](https://github.com/google/docsy#readme)。 即使你打算在容器中运行网站,我们也强烈建议你通过运行以下命令来引入子模块和其他开发依赖项
```bash
```
# pull in the Docsy submodule
git submodule update --init --recursive --depth 1
```
<!--
## Running the website using a container
To build the site in a container, run the following to build the container image and run it:
-->
## 在容器中运行网站
要在容器中构建网站,请通过以下命令来构建容器镜像并运行:
```
make container-image
make container-serve
```
<!--
Open up your browser to http://localhost:1313 to view the website. As you make changes to the source files, Hugo updates the website and forces a browser refresh.
-->
启动浏览器,打开 http://localhost:1313 来查看网站。
当你对源文件作出修改时,Hugo 会更新网站并强制浏览器执行刷新操作。
<!--
## Running the website locally using Hugo
Make sure to install the Hugo extended version specified by the `HUGO_VERSION` environment variable in the [`netlify.toml`](netlify.toml#L10) file.
To build and test the site locally, run:
-->
## 在本地使用 Hugo 来运行网站
请确保安装的是 [`netlify.toml`](netlify.toml#L10) 文件中环境变量 `HUGO_VERSION` 所指定的
Hugo 扩展版本。
若要在本地构造和测试网站,请运行:
```bash
hugo server --buildFuture
# install dependencies
npm ci
make serve
```
<!--
@@ -68,6 +110,63 @@ This will start the local Hugo server on port 1313. Open up your browser to http
启动浏览器,打开 http://localhost:1313 来查看网站。
当你对源文件作出修改时,Hugo 会更新网站并强制浏览器执行刷新操作。
<!--
## Troubleshooting
### error: failed to transform resource: TOCSS: failed to transform "scss/main.scss" (text/x-scss): this feature is not available in your current Hugo version
Hugo is shipped in two set of binaries for technical reasons. The current website runs based on the **Hugo Extended** version only. In the [release page](https://github.com/gohugoio/hugo/releases) look for archives with `extended` in the name. To confirm, run `hugo version` and look for the word `extended`.
-->
## 故障排除
### error: failed to transform resource: TOCSS: failed to transform "scss/main.scss" (text/x-scss): this feature is not available in your current Hugo version
由于技术原因,Hugo 会发布两套二进制文件。
当前网站仅基于 **Hugo Extended** 版本运行。
在 [发布页面](https://github.com/gohugoio/hugo/releases) 中查找名称为 `extended` 的归档。可以运行 `huge version` 查看是否有单词 `extended` 来确认。
<!--
### Troubleshooting macOS for too many open files
If you run `make serve` on macOS and receive the following error:
-->
### 对 macOs 上打开太多文件的故障排除
如果在 macOS 上运行 `make serve` 收到以下错误:
```
ERROR 2020/08/01 19:09:18 Error: listen tcp 127.0.0.1:1313: socket: too many open files
make: *** [serve] Error 1
```
试着查看一下当前打开文件数的限制:
`launchctl limit maxfiles`
然后运行以下命令(参考https://gist.github.com/tombigel/d503800a282fcadbee14b537735d202c):
```
#!/bin/sh
# These are the original gist links, linking to my gists now.
# curl -O https://gist.githubusercontent.com/a2ikm/761c2ab02b7b3935679e55af5d81786a/raw/ab644cb92f216c019a2f032bbf25e258b01d87f9/limit.maxfiles.plist
# curl -O https://gist.githubusercontent.com/a2ikm/761c2ab02b7b3935679e55af5d81786a/raw/ab644cb92f216c019a2f032bbf25e258b01d87f9/limit.maxproc.plist
curl -O https://gist.githubusercontent.com/tombigel/d503800a282fcadbee14b537735d202c/raw/ed73cacf82906fdde59976a0c8248cce8b44f906/limit.maxfiles.plist
curl -O https://gist.githubusercontent.com/tombigel/d503800a282fcadbee14b537735d202c/raw/ed73cacf82906fdde59976a0c8248cce8b44f906/limit.maxproc.plist
sudo mv limit.maxfiles.plist /Library/LaunchDaemons
sudo mv limit.maxproc.plist /Library/LaunchDaemons
sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
sudo chown root:wheel /Library/LaunchDaemons/limit.maxproc.plist
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
```
这适用于 Catalina 和 Mojave macOS。
<!--
## Get involved with SIG Docs
@@ -78,7 +177,7 @@ You can also reach the maintainers of this project at:
- [Slack](https://kubernetes.slack.com/messages/sig-docs)
- [Mailing List](https://groups.google.com/forum/#!forum/kubernetes-sig-docs)
-->
## 参与 SIG Docs 工作
# 参与 SIG Docs 工作
通过 [社区页面](https://github.com/kubernetes/community/tree/master/sig-docs#meetings)
进一步了解 SIG Docs Kubernetes 社区和会议信息。
@@ -95,7 +194,7 @@ You can click the **Fork** button in the upper-right area of the screen to creat
Once your pull request is created, a Kubernetes reviewer will take responsibility for providing clear, actionable feedback. As the owner of the pull request, **it is your responsibility to modify your pull request to address the feedback that has been provided to you by the Kubernetes reviewer.**
-->
## 为文档做贡献
# 为文档做贡献
你也可以点击屏幕右上方区域的 **Fork** 按钮,在你自己的 GitHub
账号下创建本仓库的拷贝。此拷贝被称作 *fork*
@@ -133,7 +232,7 @@ For more information about contributing to the Kubernetes documentation, see:
* [文档风格指南](http://kubernetes.io/docs/contribute/style/style-guide/)
* [本地化 Kubernetes 文档](https://kubernetes.io/docs/contribute/localization/)
## 中文本地化
# 中文本地化
可以通过以下方式联系中文本地化的维护人员:
@@ -146,15 +245,15 @@ For more information about contributing to the Kubernetes documentation, see:
Participation in the Kubernetes community is governed by the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md).
-->
### 行为准则
# 行为准则
参与 Kubernetes 社区受 [CNCF 行为准则](https://github.com/cncf/foundation/blob/master/code-of-conduct.md)约束。
参与 Kubernetes 社区受 [CNCF 行为准则](https://github.com/cncf/foundation/blob/master/code-of-conduct.md) 约束。
<!--
## Thank you!
Kubernetes thrives on community participation, and we appreciate your contributions to our website and our documentation!
-->
## 感谢!
# 感谢!
Kubernetes 因为社区的参与而蓬勃发展,感谢您对我们网站和文档的贡献!
+11 -8
View File
@@ -6,16 +6,15 @@ This repository contains the assets required to build the [Kubernetes website an
# Using this repository
You can run the website locally using Hugo, or you can run it in a container runtime. We strongly recommend using the container runtime, as it gives deployment consistency with the live website.
You can run the website locally using Hugo (Extended version), or you can run it in a container runtime. We strongly recommend using the container runtime, as it gives deployment consistency with the live website.
## Prerequisites
To use this repository, you need the following installed locally:
- [yarn](https://yarnpkg.com/)
- [npm](https://www.npmjs.com/)
- [Go](https://golang.org/)
- [Hugo](https://gohugo.io/)
- [Hugo (Extended version)](https://gohugo.io/)
- A container runtime, like [Docker](https://www.docker.com/).
Before you start, install the dependencies. Clone the repository and navigate to the directory:
@@ -28,9 +27,6 @@ cd website
The Kubernetes website uses the [Docsy Hugo theme](https://github.com/google/docsy#readme). Even if you plan to run the website in a container, we strongly recommend pulling in the submodule and other development dependencies by running the following:
```
# install dependencies
yarn
# pull in the Docsy submodule
git submodule update --init --recursive --depth 1
```
@@ -53,11 +49,18 @@ Make sure to install the Hugo extended version specified by the `HUGO_VERSION` e
To build and test the site locally, run:
```bash
# install dependencies
npm ci
make serve
```
This will start the local Hugo server on port 1313. Open up your browser to http://localhost:1313 to view the website. As you make changes to the source files, Hugo updates the website and forces a browser refresh.
## Troubleshooting
### error: failed to transform resource: TOCSS: failed to transform "scss/main.scss" (text/x-scss): this feature is not available in your current Hugo version
Hugo is shipped in two set of binaries for technical reasons. The current website runs based on the **Hugo Extended** version only. In the [release page](https://github.com/gohugoio/hugo/releases) look for archives with `extended` in the name. To confirm, run `hugo version` and look for the word `extended`.
### Troubleshooting macOS for too many open files
If you run `make serve` on macOS and receive the following error:
@@ -71,7 +74,7 @@ Try checking the current limit for open files:
`launchctl limit maxfiles`
Then run the following commands:
Then run the following commands (adapted from https://gist.github.com/tombigel/d503800a282fcadbee14b537735d202c):
```
#!/bin/sh
@@ -101,7 +104,7 @@ Learn more about SIG Docs Kubernetes community and meetings on the [community pa
You can also reach the maintainers of this project at:
- [Slack](https://kubernetes.slack.com/messages/sig-docs)
- [Slack](https://kubernetes.slack.com/messages/sig-docs) [Get an invite for this Slack](https://slack.k8s.io/)
- [Mailing List](https://groups.google.com/forum/#!forum/kubernetes-sig-docs)
# Contributing to the docs
+2 -1
View File
@@ -10,6 +10,7 @@
# DO NOT REPORT SECURITY VULNERABILITIES DIRECTLY TO THESE NAMES, FOLLOW THE
# INSTRUCTIONS AT https://kubernetes.io/security/
irvifa
jimangel
kbarnard10
zacharysarah
sftim
+10 -2
View File
@@ -17,14 +17,22 @@ limitations under the License.
var Search = {
init: function () {
$(document).ready(function () {
// Fill the search input form with the current search keywords
const searchKeywords = new URLSearchParams(location.search).get('q');
if (searchKeywords !== null && searchKeywords !== '') {
const searchInput = document.querySelector('.td-search-input');
searchInput.focus();
searchInput.value = searchKeywords;
}
// Set a keydown event
$(document).on("keypress", ".td-search-input", function (e) {
if (e.keyCode !== 13) {
return;
}
var query = $(this).val();
var searchPage = "{{ "docs/search/" | absURL }}?q=" + query;
document.location = searchPage;
document.location = "{{ "search/" | absURL }}?q=" + query;
return false;
});
+19 -2
View File
@@ -42,6 +42,10 @@ $video-section-height: 200px;
body {
background-color: white;
a {
color: $blue;
}
}
section {
@@ -71,6 +75,7 @@ footer {
background-color: $blue;
text-decoration: none;
font-size: 1rem;
border: 0px;
}
#cellophane {
@@ -83,6 +88,20 @@ footer {
}
}
main {
.button {
display: inline-block;
border-radius: 6px;
padding: 6px 20px;
line-height: 1.3rem;
color: white;
background-color: $blue;
text-decoration: none;
font-size: 1rem;
border: 0px;
}
}
// HEADER
#hamburger {
@@ -336,7 +355,6 @@ dd {
width: 100%;
height: 45px;
line-height: 45px;
font-family: "Roboto", sans-serif;
font-size: 20px;
color: $blue;
}
@@ -612,7 +630,6 @@ section#cncf {
padding-top: 30px;
padding-bottom: 80px;
background-size: auto;
// font-family: "Roboto Mono", monospace !important;
font-size: 24px;
// font-weight: bold;
+2 -1
View File
@@ -2,6 +2,7 @@
hr {
background-color: #999999;
margin-top: 0;
}
h2 {
@@ -10,7 +11,7 @@ h2 {
.subhead {
padding-bottom: 2% !important;
padding-top: 0% !important;
padding-top: 0.75em !important;
}
.details {
+84 -18
View File
@@ -11,15 +11,19 @@ $announcement-size-adjustment: 8px;
max-width: 100%;
}
table {
margin-bottom: 1rem;
display: initial;
}
@media only screen and (min-width: 768px) {
padding-top: 2rem !important;
}
}
.ui-widget {
font-family: inherit;
font-size: inherit;
}
.ui-widget-content a {
color: $blue;
}
}
section {
@@ -34,6 +38,14 @@ section {
padding: 0 !important;
}
/* Emphasize first paragraph of running text on site front page */
body.td-home main[role="main"] > section:first-of-type .content p:first-child {
line-height: 1.3em;
font-size: 1.4em;
margin-bottom: 1.5em;
}
#desktopShowVideoButton {
border: none
}
@@ -44,6 +56,39 @@ section {
}
}
body.td-404 main .error-details {
max-width: 1100px;
margin-left: auto;
margin-right: auto;
margin-top: 4em;
margin-bottom: 0;
}
/* Global - Mermaid.js diagrams */
.mermaid {
overflow-x: auto;
max-width: 80%;
border: 1px solid rgb(222, 226, 230);
border-radius: 5px;
margin-bottom: 1rem;
padding-top: 1rem;
padding-bottom: 1rem;
// mermaid diagram - sequence diagram
.actor {
fill: #326ce5 !important;
}
text.actor {
font-size: 18px !important;
stroke: white !important;
fill: white !important;
}
.activation0 {
fill: #c9e9ec !important;
}
}
/* HEADER */
.td-navbar {
@@ -268,22 +313,34 @@ main {
// blockquotes and callouts
blockquote {
padding: 0.4rem 0.4rem 0.4rem 1rem !important;
}
.td-content, body {
blockquote.callout {
padding: 0.4rem 0.4rem 0.4rem 1rem;
border: 1px solid #eee;
border-left-width: 0.5em;
background: #fff;
color: #000;
margin-top: 0.5em;
margin-bottom: 0.5em;
}
blockquote.callout {
border-radius: calc(1em/3);
}
.callout.caution {
border-left-color: #f0ad4e;
}
// callouts are contained in static CSS as well. these require override.
.callout.note {
border-left-color: #428bca;
}
.caution {
border-left-color: #f0ad4e !important;
}
.callout.warning {
border-left-color: #d9534f;
}
.note {
border-left-color: #428bca !important;
}
.warning {
border-left-color: #d9534f !important;
h1:first-of-type + blockquote.callout {
margin-top: 1.5em;
}
}
.deprecation-warning {
@@ -393,6 +450,7 @@ body.cid-community > #deprecation-warning > .deprecation-warning > * {
}
color: $blue;
margin: 1rem;
}
}
}
@@ -512,3 +570,11 @@ body.td-documentation {
}
}
}
/* glossary tooltip */
.glossary-tooltip {
display: inline-block;
border-bottom: 1px dotted black; /* If you want dots under the hoverable text */
color: black;
text-decoration: none !important;
}
+14
View File
@@ -11,3 +11,17 @@ Add styles or override variables from the theme here. */
@import "base";
@import "tablet";
@import "desktop";
$primary: #3371e3;
// tooltip
$tooltip-bg: #555;
$tooltip-arrow-color: $tooltip-bg !default;
$tooltip-arrow-width: 10px !default;
$tooltip-opacity: 1 !default;
$tooltip-color: #fff !default;
$tooltip-max-width: 300px !default;
$tooltip-font-size: 1rem;
$tooltip-padding: 5px 8px;
$tooltip-border-radius: 6px;
$tooltip-font-weight: 400;
+60 -34
View File
@@ -33,6 +33,23 @@ enableGitInfo = true
# Hindi is disabled because it's currently in development.
disableLanguages = ["hi", "no"]
[caches]
[caches.assets]
dir = ":cacheDir/_gen"
maxAge = -1
[caches.getcsv]
dir = ":cacheDir/:project"
maxAge = "60s"
[caches.getjson]
dir = ":cacheDir/:project"
maxAge = "60s"
[caches.images]
dir = ":cacheDir/_images"
maxAge = -1
[caches.modules]
dir = ":cacheDir/modules"
maxAge = -1
[markup]
[markup.goldmark]
[markup.goldmark.extensions]
@@ -66,6 +83,10 @@ date = ["date", ":filename", "publishDate", "lastmod"]
[permalinks]
blog = "/:section/:year/:month/:day/:slug/"
[sitemap]
filename = "sitemap.xml"
priority = 0.75
# Be explicit about the output formats. We (currently) only want an RSS feed for the home page.
[outputs]
home = [ "HTML", "RSS", "HEADERS" ]
@@ -112,24 +133,30 @@ copyright_linux = "Copyright © 2020 The Linux Foundation ®."
version_menu = "Versions"
time_format_blog = "Monday, January 02, 2006"
time_format_default = "January 02, 2006 at 3:04 PM PST"
description = "Production-Grade Container Orchestration"
showedit = true
latest = "v1.18"
latest = "v1.23"
fullversion = "v1.18.0"
version = "v1.18"
githubbranch = "master"
docsbranch = "master"
deprecated = false
fullversion = "v1.19.16"
version = "v1.19"
githubbranch = "v1.19.16"
docsbranch = "release-1.19"
deprecated = true
currentUrl = "https://kubernetes.io/docs/home/"
nextUrl = "https://kubernetes-io-vnext-staging.netlify.com/"
githubWebsiteRepo = "github.com/kubernetes/website"
# See codenew shortcode
githubWebsiteRaw = "raw.githubusercontent.com/kubernetes/website"
# GitHub repository link for editing a page and opening issues.
github_repo = "https://github.com/kubernetes/website"
# param for displaying an announcement block on every page.
# See /i18n/en.toml for message text and title.
announcement = true
announcement = false
announcement_bg = "#000000" #choose a dark color  text is white
#Searching
@@ -149,47 +176,46 @@ offlineSearch = false
[params.pushAssets]
css = [
"callouts",
"styles",
"custom-jekyll/tags"
"styles"
]
js = [
"script"
]
[[params.versions]]
fullversion = "v1.18.0"
version = "v1.18"
githubbranch = "v1.18.0"
docsbranch = "release-1.18"
fullversion = "v1.23.0"
version = "v1.23"
githubbranch = "v1.23.0"
docsbranch = "main"
url = "https://kubernetes.io"
[[params.versions]]
fullversion = "v1.17.4"
version = "v1.17"
githubbranch = "v1.17.4"
docsbranch = "release-1.17"
url = "https://v1-17.docs.kubernetes.io"
fullversion = "v1.22.4"
version = "v1.22"
githubbranch = "v1.22.4"
docsbranch = "release-1.22"
url = "https://v1-22.docs.kubernetes.io"
[[params.versions]]
fullversion = "v1.16.8"
version = "v1.16"
githubbranch = "v1.16.8"
docsbranch = "release-1.16"
url = "https://v1-16.docs.kubernetes.io"
fullversion = "v1.21.7"
version = "v1.21"
githubbranch = "v1.21.7"
docsbranch = "release-1.21"
url = "https://v1-21.docs.kubernetes.io"
[[params.versions]]
fullversion = "v1.15.11"
version = "v1.15"
githubbranch = "v1.15.11"
docsbranch = "release-1.15"
url = "https://v1-15.docs.kubernetes.io"
fullversion = "v1.20.13"
version = "v1.20"
githubbranch = "v1.20.13"
docsbranch = "release-1.20"
url = "https://v1-20.docs.kubernetes.io"
[[params.versions]]
fullversion = "v1.14.10"
version = "v1.14"
githubbranch = "v1.14.10"
docsbranch = "release-1.14"
url = "https://v1-14.docs.kubernetes.io"
fullversion = "v1.19.16"
version = "v1.19"
githubbranch = "v1.19.16"
docsbranch = "release-1.19"
url = "https://v1-19.docs.kubernetes.io"
# User interface configuration
[params.ui]
@@ -6,7 +6,7 @@ weight: 10
<!-- overview -->
Ein Knoten (Node in Englisch) ist eine Arbeitsmaschine in Kubernetes, früher als `minion` bekannt. Ein Node
Ein Knoten (Node in Englisch) ist eine Arbeitsmaschine in Kubernetes. Ein Node
kann je nach Cluster eine VM oder eine physische Maschine sein. Jeder Node enthält
die für den Betrieb von [Pods](/docs/concepts/workloads/pods/pod/) notwendigen Dienste
und wird von den Master-Komponenten verwaltet.
@@ -54,7 +54,8 @@ KUBECONFIG=~/.kube/config:~/.kube/kubconfig2 kubectl config view
# Zeigen Sie das Passwort für den e2e-Benutzer an
kubectl config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}'
kubectl config view -o jsonpath='{.users[].name}' # eine Liste der Benutzer erhalten
kubectl config view -o jsonpath='{.users[].name}' # den ersten Benutzer anzeigen
kubectl config view -o jsonpath='{.users[*].name}' # eine Liste der Benutzer erhalten
kubectl config current-context # den aktuellen Kontext anzeigen
kubectl config use-context my-cluster-name # Setzen Sie den Standardkontext auf my-cluster-name
@@ -334,7 +334,7 @@ Sie müssen nun sicherstellen, dass das kubectl-Abschlussskript in allen Ihren S
```
{{< note >}}
bash-completion bezieht alle Verfollständigungsskripte aus `/etc/bash_completion.d`.
bash-completion bezieht alle Vervollständigungsskripte aus `/etc/bash_completion.d`.
{{< /note >}}
Beide Ansätze sind gleichwertig. Nach dem erneuten Laden der Shell sollte kubectl autocompletion funktionieren.
@@ -69,7 +69,7 @@ sudo mv minikube /usr/local/bin
### Linux
{{< note >}}
Dieses Dokument zeigt Ihnen, wie Sie Minikube mit einer statischen Binärdatei unter Linux installieren. Für alternative Linux-Installationsmethoden siehe [Andere Installationsmethoden](https://github.com/kubernetes/minikube#other-ways-to-install) im offiziellen Minikube-GitHub-Repository.
Dieses Dokument zeigt Ihnen, wie Sie Minikube mit einer statischen Binärdatei unter Linux installieren. Für alternative Linux-Installationsmethoden siehe [Andere Installationsmethoden](https://minikube.sigs.k8s.io/docs/start/) im offiziellen Minikube-GitHub-Repository.
{{< /note >}}
Sie können Minikube unter Linux installieren, indem Sie eine statische Binärdatei herunterladen:
@@ -21,7 +21,7 @@ weight: 20
<div class="katacoda__alert">
Um mit dem Terminal zu interagieren, verwenden Sie bitte die Desktop- / Tablet-Version
</div>
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/1" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-font="Roboto" data-katacoda-fontheader="Roboto Slab" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;"></div>
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/1" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;"></div>
</div>
<div class="row">
<div class="col-md-12">
@@ -23,7 +23,7 @@ weight: 20
Um mit dem Terminal zu interagieren, verwenden Sie bitte die Desktop- / Tablet-Version
</div>
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/7" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-font="Roboto" data-katacoda-fontheader="Roboto Slab" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;">
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/7" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;">
</div>
</div>
@@ -24,7 +24,7 @@ weight: 20
Um mit dem Terminal zu interagieren, verwenden Sie bitte die Desktop- / Tablet-Version
</div>
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/4" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-font="Roboto" data-katacoda-fontheader="Roboto Slab" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;">
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/4" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;">
</div>
</div>
<div class="row">
@@ -21,7 +21,7 @@ weight: 20
<div class="katacoda__alert">
Um mit dem Terminal zu interagieren, verwenden Sie bitte die Desktop- / Tablet-Version
</div>
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/8" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-font="Roboto" data-katacoda-fontheader="Roboto Slab" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;">
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/8" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;">
</div>
</div>
<div class="row">
@@ -21,7 +21,7 @@ weight: 20
<div class="katacoda__alert">
Um mit dem Terminal zu interagieren, verwenden Sie bitte die Desktop- / Tablet-Version
</div>
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/5" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-font="Roboto" data-katacoda-fontheader="Roboto Slab" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;">
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/5" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;">
</div>
</div>
<div class="row">
@@ -21,7 +21,7 @@ weight: 20
<div class="katacoda__alert">
Um mit dem Terminal zu interagieren, verwenden Sie bitte die Desktop- / Tablet-Version
</div>
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/6" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-font="Roboto" data-katacoda-fontheader="Roboto Slab" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;">
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/6" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;">
</div>
</div>
<div class="row">
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

After

Width:  |  Height:  |  Size: 693 KiB

+9 -7
View File
@@ -2,11 +2,13 @@
title: "Production-Grade Container Orchestration"
abstract: "Automated container deployment, scaling, and management"
cid: home
sitemap:
priority: 1.0
---
{{< blocks/section id="oceanNodes" >}}
{{% blocks/feature image="flower" %}}
### [Kubernetes (K8s)]({{< relref "/docs/concepts/overview/what-is-kubernetes" >}}) is an open-source system for automating deployment, scaling, and management of containerized applications.
[Kubernetes]({{< relref "/docs/concepts/overview/what-is-kubernetes" >}}), also known as K8s, is an open-source system for automating deployment, scaling, and management of containerized applications.
It groups containers that make up an application into logical units for easy management and discovery. Kubernetes builds upon [15 years of experience of running production workloads at Google](http://queue.acm.org/detail.cfm?id=2898444), combined with best-of-breed ideas and practices from the community.
{{% /blocks/feature %}}
@@ -26,7 +28,7 @@ Whether testing locally or running a global enterprise, Kubernetes flexibility g
{{% /blocks/feature %}}
{{% blocks/feature image="suitcase" %}}
#### Run Anywhere
#### Run K8s Anywhere
Kubernetes is open source giving you the freedom to take advantage of on-premises, hybrid, or public cloud infrastructure, letting you effortlessly move workloads to where it matters to you.
@@ -41,12 +43,12 @@ Kubernetes is open source giving you the freedom to take advantage of on-premise
<button id="desktopShowVideoButton" onclick="kub.showVideo()">Watch Video</button>
<br>
<br>
<a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/?utm_source=kubernetes.io&utm_medium=nav&utm_campaign=kccnceu20" button id="desktopKCButton">Attend KubeCon EU virtually on August 17-20, 2020</a>
<br>
<br>
<br>
<br>
<a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/?utm_source=kubernetes.io&utm_medium=nav&utm_campaign=kccncna20" button id="desktopKCButton">Attend KubeCon NA virtually on November 17-20, 2020</a>
<br>
<br>
<br>
<br>
<a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/?utm_source=kubernetes.io&utm_medium=nav&utm_campaign=kccnceu21" button id="desktopKCButton">Attend KubeCon EU virtually on May 4 7, 2021</a>
</div>
<div id="videoPlayer">
<iframe data-url="https://www.youtube.com/embed/H06qrNmGqyE?autoplay=1" frameborder="0" allowfullscreen></iframe>
@@ -9,57 +9,37 @@ url: /blog/2016/01/Kubernetes-Community-Meeting-Notes_28
Note taker: Rob Hirshfeld
- Use Case (10 min): [SFDC Paul Brown](https://docs.google.com/a/google.com/presentation/d/1MEI97efplr3f-GDX1GcWGfkEuGKKV-4niu27kHOeMLk/edit?usp=sharing_eid&ts=56a114f8)
- SIG Report - SIG-config and the story of [#18215](https://github.com/kubernetes/kubernetes/pull/18215)
- SIG Report - SIG-config and the story of [#18215](https://github.com/kubernetes/kubernetes/pull/18215).
- Application config IN K8s not deployment of K8s
- Topic has been reuse of configuration,specifically parameterization(aka templates). Needs:
- include scoping(cluster namespace)
- slight customization (naming changes, but not major config)
- multiple positions on how todo this including allowing external or simple extensions
- PetSet creates instances w/stable namespace
- A[p](https://github.com/kubernetes/kubernetes/pull/18215)p[l](https://github.com/kubernetes/kubernetes/pull/18215)i[c](https://github.com/kubernetes/kubernetes/pull/18215)a[t](https://github.com/kubernetes/kubernetes/pull/18215)i[o](https://github.com/kubernetes/kubernetes/pull/18215)n[](https://github.com/kubernetes/kubernetes/pull/18215)c[o](https://github.com/kubernetes/kubernetes/pull/18215)n[f](https://github.com/kubernetes/kubernetes/pull/18215)i[g](https://github.com/kubernetes/kubernetes/pull/18215) [I](https://github.com/kubernetes/kubernetes/pull/18215)N[](https://github.com/kubernetes/kubernetes/pull/18215)K[8](https://github.com/kubernetes/kubernetes/pull/18215)s[,](https://github.com/kubernetes/kubernetes/pull/18215) [n](https://github.com/kubernetes/kubernetes/pull/18215)o[t](https://github.com/kubernetes/kubernetes/pull/18215) [d](https://github.com/kubernetes/kubernetes/pull/18215)e[p](https://github.com/kubernetes/kubernetes/pull/18215)l[o](https://github.com/kubernetes/kubernetes/pull/18215)y[m](https://github.com/kubernetes/kubernetes/pull/18215)e[n](https://github.com/kubernetes/kubernetes/pull/18215)t[](https://github.com/kubernetes/kubernetes/pull/18215)o[f](https://github.com/kubernetes/kubernetes/pull/18215) [K](https://github.com/kubernetes/kubernetes/pull/18215)8[s](https://github.com/kubernetes/kubernetes/pull/18215)
- [T](https://github.com/kubernetes/kubernetes/pull/18215)o[p](https://github.com/kubernetes/kubernetes/pull/18215)i[c](https://github.com/kubernetes/kubernetes/pull/18215) [h](https://github.com/kubernetes/kubernetes/pull/18215)a[s](https://github.com/kubernetes/kubernetes/pull/18215) [b](https://github.com/kubernetes/kubernetes/pull/18215)e[e](https://github.com/kubernetes/kubernetes/pull/18215)n[](https://github.com/kubernetes/kubernetes/pull/18215)r[e](https://github.com/kubernetes/kubernetes/pull/18215)u[s](https://github.com/kubernetes/kubernetes/pull/18215)e[](https://github.com/kubernetes/kubernetes/pull/18215)o[f](https://github.com/kubernetes/kubernetes/pull/18215) [c](https://github.com/kubernetes/kubernetes/pull/18215)o[n](https://github.com/kubernetes/kubernetes/pull/18215)f[i](https://github.com/kubernetes/kubernetes/pull/18215)g[u](https://github.com/kubernetes/kubernetes/pull/18215)r[a](https://github.com/kubernetes/kubernetes/pull/18215)t[i](https://github.com/kubernetes/kubernetes/pull/18215)o[n](https://github.com/kubernetes/kubernetes/pull/18215),[](https://github.com/kubernetes/kubernetes/pull/18215)s[p](https://github.com/kubernetes/kubernetes/pull/18215)e[c](https://github.com/kubernetes/kubernetes/pull/18215)i[f](https://github.com/kubernetes/kubernetes/pull/18215)i[c](https://github.com/kubernetes/kubernetes/pull/18215)a[l](https://github.com/kubernetes/kubernetes/pull/18215)l[y](https://github.com/kubernetes/kubernetes/pull/18215) [p](https://github.com/kubernetes/kubernetes/pull/18215)a[r](https://github.com/kubernetes/kubernetes/pull/18215)a[m](https://github.com/kubernetes/kubernetes/pull/18215)e[t](https://github.com/kubernetes/kubernetes/pull/18215)e[r](https://github.com/kubernetes/kubernetes/pull/18215)i[z](https://github.com/kubernetes/kubernetes/pull/18215)a[t](https://github.com/kubernetes/kubernetes/pull/18215)i[o](https://github.com/kubernetes/kubernetes/pull/18215)n[](https://github.com/kubernetes/kubernetes/pull/18215)([a](https://github.com/kubernetes/kubernetes/pull/18215)k[a](https://github.com/kubernetes/kubernetes/pull/18215) [t](https://github.com/kubernetes/kubernetes/pull/18215)e[m](https://github.com/kubernetes/kubernetes/pull/18215)p[l](https://github.com/kubernetes/kubernetes/pull/18215)a[t](https://github.com/kubernetes/kubernetes/pull/18215)e[s](https://github.com/kubernetes/kubernetes/pull/18215))[. Needs:](https://github.com/kubernetes/kubernetes/pull/18215)
- Workflow proposal
- Distributed Chron. Challenge is that configs need to create multiple objects in sequence
- Trying to figure out how balance the many config options out there (compose, terraform,ansible/etc)
- Goal is to “meet people where they are” to keep it simple
- Q: is there an opinion for the keystore sizing
- large size / data blob would not be appropriate
- you can pull data(config) from another store for larger objects
- n[e](https://github.com/kubernetes/kubernetes/pull/18215)e[d](https://github.com/kubernetes/kubernetes/pull/18215)s[](https://github.com/kubernetes/kubernetes/pull/18215)i[n](https://github.com/kubernetes/kubernetes/pull/18215)c[l](https://github.com/kubernetes/kubernetes/pull/18215)u[d](https://github.com/kubernetes/kubernetes/pull/18215)e[](https://github.com/kubernetes/kubernetes/pull/18215)s[c](https://github.com/kubernetes/kubernetes/pull/18215)o[p](https://github.com/kubernetes/kubernetes/pull/18215)i[n](https://github.com/kubernetes/kubernetes/pull/18215)g[](https://github.com/kubernetes/kubernetes/pull/18215)([c](https://github.com/kubernetes/kubernetes/pull/18215)l[u](https://github.com/kubernetes/kubernetes/pull/18215)s[t](https://github.com/kubernetes/kubernetes/pull/18215)e[r](https://github.com/kubernetes/kubernetes/pull/18215) [n](https://github.com/kubernetes/kubernetes/pull/18215)a[m](https://github.com/kubernetes/kubernetes/pull/18215)e[s](https://github.com/kubernetes/kubernetes/pull/18215)p[a](https://github.com/kubernetes/kubernetes/pull/18215)c[e](https://github.com/kubernetes/kubernetes/pull/18215))
- s[l](https://github.com/kubernetes/kubernetes/pull/18215)i[g](https://github.com/kubernetes/kubernetes/pull/18215)h[t](https://github.com/kubernetes/kubernetes/pull/18215) [c](https://github.com/kubernetes/kubernetes/pull/18215)u[s](https://github.com/kubernetes/kubernetes/pull/18215)t[o](https://github.com/kubernetes/kubernetes/pull/18215)m[i](https://github.com/kubernetes/kubernetes/pull/18215)z[a](https://github.com/kubernetes/kubernetes/pull/18215)t[i](https://github.com/kubernetes/kubernetes/pull/18215)o[n (naming changes, but not major config)](https://github.com/kubernetes/kubernetes/pull/18215)
- [m](https://github.com/kubernetes/kubernetes/pull/18215)u[l](https://github.com/kubernetes/kubernetes/pull/18215)t[i](https://github.com/kubernetes/kubernetes/pull/18215)p[l](https://github.com/kubernetes/kubernetes/pull/18215)e[](https://github.com/kubernetes/kubernetes/pull/18215)p[o](https://github.com/kubernetes/kubernetes/pull/18215)s[i](https://github.com/kubernetes/kubernetes/pull/18215)t[i](https://github.com/kubernetes/kubernetes/pull/18215)o[n](https://github.com/kubernetes/kubernetes/pull/18215)s[](https://github.com/kubernetes/kubernetes/pull/18215)o[n](https://github.com/kubernetes/kubernetes/pull/18215) [h](https://github.com/kubernetes/kubernetes/pull/18215)o[w](https://github.com/kubernetes/kubernetes/pull/18215) [t](https://github.com/kubernetes/kubernetes/pull/18215)o[](https://github.com/kubernetes/kubernetes/pull/18215)d[o](https://github.com/kubernetes/kubernetes/pull/18215) [t](https://github.com/kubernetes/kubernetes/pull/18215)h[i](https://github.com/kubernetes/kubernetes/pull/18215)s[](https://github.com/kubernetes/kubernetes/pull/18215)i[n](https://github.com/kubernetes/kubernetes/pull/18215)c[l](https://github.com/kubernetes/kubernetes/pull/18215)u[d](https://github.com/kubernetes/kubernetes/pull/18215)i[n](https://github.com/kubernetes/kubernetes/pull/18215)g[](https://github.com/kubernetes/kubernetes/pull/18215)
-
a[l](https://github.com/kubernetes/kubernetes/pull/18215)l[o](https://github.com/kubernetes/kubernetes/pull/18215)w[i](https://github.com/kubernetes/kubernetes/pull/18215)n[g](https://github.com/kubernetes/kubernetes/pull/18215) [e](https://github.com/kubernetes/kubernetes/pull/18215)x[t](https://github.com/kubernetes/kubernetes/pull/18215)e[r](https://github.com/kubernetes/kubernetes/pull/18215)n[a](https://github.com/kubernetes/kubernetes/pull/18215)l[](https://github.com/kubernetes/kubernetes/pull/18215)o[r](https://github.com/kubernetes/kubernetes/pull/18215) [s](https://github.com/kubernetes/kubernetes/pull/18215)i[m](https://github.com/kubernetes/kubernetes/pull/18215)p[l](https://github.com/kubernetes/kubernetes/pull/18215)e[](https://github.com/kubernetes/kubernetes/pull/18215)e[x](https://github.com/kubernetes/kubernetes/pull/18215)t[e](https://github.com/kubernetes/kubernetes/pull/18215)n[s](https://github.com/kubernetes/kubernetes/pull/18215)i[o](https://github.com/kubernetes/kubernetes/pull/18215)n[s](https://github.com/kubernetes/kubernetes/pull/18215).
-
P[e](https://github.com/kubernetes/kubernetes/pull/18215)t[S](https://github.com/kubernetes/kubernetes/pull/18215)e[t](https://github.com/kubernetes/kubernetes/pull/18215) [c](https://github.com/kubernetes/kubernetes/pull/18215)r[e](https://github.com/kubernetes/kubernetes/pull/18215)a[t](https://github.com/kubernetes/kubernetes/pull/18215)e[s](https://github.com/kubernetes/kubernetes/pull/18215) [i](https://github.com/kubernetes/kubernetes/pull/18215)n[s](https://github.com/kubernetes/kubernetes/pull/18215)t[a](https://github.com/kubernetes/kubernetes/pull/18215)n[c](https://github.com/kubernetes/kubernetes/pull/18215)e[s](https://github.com/kubernetes/kubernetes/pull/18215) [w](https://github.com/kubernetes/kubernetes/pull/18215)/[](https://github.com/kubernetes/kubernetes/pull/18215)s[t](https://github.com/kubernetes/kubernetes/pull/18215)a[b](https://github.com/kubernetes/kubernetes/pull/18215)l[e](https://github.com/kubernetes/kubernetes/pull/18215) [n](https://github.com/kubernetes/kubernetes/pull/18215)a[m](https://github.com/kubernetes/kubernetes/pull/18215)e[s](https://github.com/kubernetes/kubernetes/pull/18215)p[a](https://github.com/kubernetes/kubernetes/pull/18215)c[e](https://github.com/kubernetes/kubernetes/pull/18215)
-
[W](https://github.com/kubernetes/kubernetes/pull/18215)o[r](https://github.com/kubernetes/kubernetes/pull/18215)k[f](https://github.com/kubernetes/kubernetes/pull/18215)l[o](https://github.com/kubernetes/kubernetes/pull/18215)w[](https://github.com/kubernetes/kubernetes/pull/18215)p[r](https://github.com/kubernetes/kubernetes/pull/18215)o[p](https://github.com/kubernetes/kubernetes/pull/18215)o[s](https://github.com/kubernetes/kubernetes/pull/18215)a[l](https://github.com/kubernetes/kubernetes/pull/18215)
-
[D](https://github.com/kubernetes/kubernetes/pull/18215)i[s](https://github.com/kubernetes/kubernetes/pull/18215)t[r](https://github.com/kubernetes/kubernetes/pull/18215)i[b](https://github.com/kubernetes/kubernetes/pull/18215)u[t](https://github.com/kubernetes/kubernetes/pull/18215)e[d](https://github.com/kubernetes/kubernetes/pull/18215) [C](https://github.com/kubernetes/kubernetes/pull/18215)h[r](https://github.com/kubernetes/kubernetes/pull/18215)o[n](https://github.com/kubernetes/kubernetes/pull/18215).
-
C[h](https://github.com/kubernetes/kubernetes/pull/18215)a[l](https://github.com/kubernetes/kubernetes/pull/18215)l[e](https://github.com/kubernetes/kubernetes/pull/18215)n[g](https://github.com/kubernetes/kubernetes/pull/18215)e[](https://github.com/kubernetes/kubernetes/pull/18215)i[s](https://github.com/kubernetes/kubernetes/pull/18215) [t](https://github.com/kubernetes/kubernetes/pull/18215)h[a](https://github.com/kubernetes/kubernetes/pull/18215)t[](https://github.com/kubernetes/kubernetes/pull/18215)c[o](https://github.com/kubernetes/kubernetes/pull/18215)n[f](https://github.com/kubernetes/kubernetes/pull/18215)i[g](https://github.com/kubernetes/kubernetes/pull/18215)s[](https://github.com/kubernetes/kubernetes/pull/18215)n[e](https://github.com/kubernetes/kubernetes/pull/18215)e[d](https://github.com/kubernetes/kubernetes/pull/18215) [t](https://github.com/kubernetes/kubernetes/pull/18215)o[](https://github.com/kubernetes/kubernetes/pull/18215)c[r](https://github.com/kubernetes/kubernetes/pull/18215)e[a](https://github.com/kubernetes/kubernetes/pull/18215)t[e](https://github.com/kubernetes/kubernetes/pull/18215) [m](https://github.com/kubernetes/kubernetes/pull/18215)u[l](https://github.com/kubernetes/kubernetes/pull/18215)t[i](https://github.com/kubernetes/kubernetes/pull/18215)p[l](https://github.com/kubernetes/kubernetes/pull/18215)e[](https://github.com/kubernetes/kubernetes/pull/18215)o[b](https://github.com/kubernetes/kubernetes/pull/18215)j[e](https://github.com/kubernetes/kubernetes/pull/18215)c[t](https://github.com/kubernetes/kubernetes/pull/18215)s[](https://github.com/kubernetes/kubernetes/pull/18215)i[n](https://github.com/kubernetes/kubernetes/pull/18215) [s](https://github.com/kubernetes/kubernetes/pull/18215)e[q](https://github.com/kubernetes/kubernetes/pull/18215)u[e](https://github.com/kubernetes/kubernetes/pull/18215)n[c](https://github.com/kubernetes/kubernetes/pull/18215)e
-
T[r](https://github.com/kubernetes/kubernetes/pull/18215)y[i](https://github.com/kubernetes/kubernetes/pull/18215)n[g](https://github.com/kubernetes/kubernetes/pull/18215) [t](https://github.com/kubernetes/kubernetes/pull/18215)o[](https://github.com/kubernetes/kubernetes/pull/18215)f[i](https://github.com/kubernetes/kubernetes/pull/18215)g[u](https://github.com/kubernetes/kubernetes/pull/18215)r[e](https://github.com/kubernetes/kubernetes/pull/18215) [o](https://github.com/kubernetes/kubernetes/pull/18215)u[t](https://github.com/kubernetes/kubernetes/pull/18215) [h](https://github.com/kubernetes/kubernetes/pull/18215)o[w](https://github.com/kubernetes/kubernetes/pull/18215) [b](https://github.com/kubernetes/kubernetes/pull/18215)a[l](https://github.com/kubernetes/kubernetes/pull/18215)a[n](https://github.com/kubernetes/kubernetes/pull/18215)c[e](https://github.com/kubernetes/kubernetes/pull/18215) [t](https://github.com/kubernetes/kubernetes/pull/18215)h[e](https://github.com/kubernetes/kubernetes/pull/18215) [m](https://github.com/kubernetes/kubernetes/pull/18215)a[n](https://github.com/kubernetes/kubernetes/pull/18215)y[](https://github.com/kubernetes/kubernetes/pull/18215)c[o](https://github.com/kubernetes/kubernetes/pull/18215)n[f](https://github.com/kubernetes/kubernetes/pull/18215)i[g](https://github.com/kubernetes/kubernetes/pull/18215) [o](https://github.com/kubernetes/kubernetes/pull/18215)p[t](https://github.com/kubernetes/kubernetes/pull/18215)i[o](https://github.com/kubernetes/kubernetes/pull/18215)n[s](https://github.com/kubernetes/kubernetes/pull/18215) [o](https://github.com/kubernetes/kubernetes/pull/18215)u[t](https://github.com/kubernetes/kubernetes/pull/18215) [t](https://github.com/kubernetes/kubernetes/pull/18215)h[e](https://github.com/kubernetes/kubernetes/pull/18215)r[e](https://github.com/kubernetes/kubernetes/pull/18215) [(](https://github.com/kubernetes/kubernetes/pull/18215)c[o](https://github.com/kubernetes/kubernetes/pull/18215)m[p](https://github.com/kubernetes/kubernetes/pull/18215)o[s](https://github.com/kubernetes/kubernetes/pull/18215)e[,](https://github.com/kubernetes/kubernetes/pull/18215) [t](https://github.com/kubernetes/kubernetes/pull/18215)e[r](https://github.com/kubernetes/kubernetes/pull/18215)r[a](https://github.com/kubernetes/kubernetes/pull/18215)f[o](https://github.com/kubernetes/kubernetes/pull/18215)r[m](https://github.com/kubernetes/kubernetes/pull/18215),[](https://github.com/kubernetes/kubernetes/pull/18215)a[n](https://github.com/kubernetes/kubernetes/pull/18215)s[i](https://github.com/kubernetes/kubernetes/pull/18215)b[l](https://github.com/kubernetes/kubernetes/pull/18215)e[/](https://github.com/kubernetes/kubernetes/pull/18215)e[t](https://github.com/kubernetes/kubernetes/pull/18215)c[)](https://github.com/kubernetes/kubernetes/pull/18215)
-
[G](https://github.com/kubernetes/kubernetes/pull/18215)o[a](https://github.com/kubernetes/kubernetes/pull/18215)l[](https://github.com/kubernetes/kubernetes/pull/18215)i[s](https://github.com/kubernetes/kubernetes/pull/18215) [t](https://github.com/kubernetes/kubernetes/pull/18215)o[](https://github.com/kubernetes/kubernetes/pull/18215)“[m](https://github.com/kubernetes/kubernetes/pull/18215)e[e](https://github.com/kubernetes/kubernetes/pull/18215)t[](https://github.com/kubernetes/kubernetes/pull/18215)p[e](https://github.com/kubernetes/kubernetes/pull/18215)o[p](https://github.com/kubernetes/kubernetes/pull/18215)l[e](https://github.com/kubernetes/kubernetes/pull/18215) [w](https://github.com/kubernetes/kubernetes/pull/18215)h[e](https://github.com/kubernetes/kubernetes/pull/18215)r[e](https://github.com/kubernetes/kubernetes/pull/18215) [t](https://github.com/kubernetes/kubernetes/pull/18215)h[e](https://github.com/kubernetes/kubernetes/pull/18215)y[](https://github.com/kubernetes/kubernetes/pull/18215)a[r](https://github.com/kubernetes/kubernetes/pull/18215)e[](https://github.com/kubernetes/kubernetes/pull/18215) [t](https://github.com/kubernetes/kubernetes/pull/18215)o[](https://github.com/kubernetes/kubernetes/pull/18215)k[e](https://github.com/kubernetes/kubernetes/pull/18215)e[p](https://github.com/kubernetes/kubernetes/pull/18215) [i](https://github.com/kubernetes/kubernetes/pull/18215)t[](https://github.com/kubernetes/kubernetes/pull/18215)s[i](https://github.com/kubernetes/kubernetes/pull/18215)m[p](https://github.com/kubernetes/kubernetes/pull/18215)l[e](https://github.com/kubernetes/kubernetes/pull/18215)
-
[Q](https://github.com/kubernetes/kubernetes/pull/18215): is there an opinion for the keystore sizing
-
large size / data blob would not be appropriate
-
you can pull data(config) from another store for larger objects
-
[SIG Report - SIG-federation - progress on Ubernetes-Lite & Ubernetes design](https://github.com/kubernetes/kubernetes/pull/18215)
-
[G](https://github.com/kubernetes/kubernetes/pull/18215)o[a](https://github.com/kubernetes/kubernetes/pull/18215)l[](https://github.com/kubernetes/kubernetes/pull/18215)i[t](https://github.com/kubernetes/kubernetes/pull/18215) [t](https://github.com/kubernetes/kubernetes/pull/18215)o[](https://github.com/kubernetes/kubernetes/pull/18215)b[e](https://github.com/kubernetes/kubernetes/pull/18215) [a](https://github.com/kubernetes/kubernetes/pull/18215)b[l](https://github.com/kubernetes/kubernetes/pull/18215)e[](https://github.com/kubernetes/kubernetes/pull/18215)t[o](https://github.com/kubernetes/kubernetes/pull/18215) [h](https://github.com/kubernetes/kubernetes/pull/18215)a[v](https://github.com/kubernetes/kubernetes/pull/18215)e[](https://github.com/kubernetes/kubernetes/pull/18215)a[](https://github.com/kubernetes/kubernetes/pull/18215)c[l](https://github.com/kubernetes/kubernetes/pull/18215)u[s](https://github.com/kubernetes/kubernetes/pull/18215)t[e](https://github.com/kubernetes/kubernetes/pull/18215)r[](https://github.com/kubernetes/kubernetes/pull/18215)m[a](https://github.com/kubernetes/kubernetes/pull/18215)n[a](https://github.com/kubernetes/kubernetes/pull/18215)g[e](https://github.com/kubernetes/kubernetes/pull/18215)r[,](https://github.com/kubernetes/kubernetes/pull/18215) [s](https://github.com/kubernetes/kubernetes/pull/18215)o[](https://github.com/kubernetes/kubernetes/pull/18215)y[o](https://github.com/kubernetes/kubernetes/pull/18215)u[](https://github.com/kubernetes/kubernetes/pull/18215)c[a](https://github.com/kubernetes/kubernetes/pull/18215)n[](https://github.com/kubernetes/kubernetes/pull/18215)f[e](https://github.com/kubernetes/kubernetes/pull/18215)d[e](https://github.com/kubernetes/kubernetes/pull/18215)r[a](https://github.com/kubernetes/kubernetes/pull/18215)t[e](https://github.com/kubernetes/kubernetes/pull/18215) [c](https://github.com/kubernetes/kubernetes/pull/18215)l[u](https://github.com/kubernetes/kubernetes/pull/18215)s[t](https://github.com/kubernetes/kubernetes/pull/18215)e[r](https://github.com/kubernetes/kubernetes/pull/18215)s[. &nbsp;They will automatically distribute the pods.](https://github.com/kubernetes/kubernetes/pull/18215)
-
P[l](https://github.com/kubernetes/kubernetes/pull/18215)a[n](https://github.com/kubernetes/kubernetes/pull/18215) [i](https://github.com/kubernetes/kubernetes/pull/18215)s[](https://github.com/kubernetes/kubernetes/pull/18215)t[o](https://github.com/kubernetes/kubernetes/pull/18215) [u](https://github.com/kubernetes/kubernetes/pull/18215)s[e](https://github.com/kubernetes/kubernetes/pull/18215) [t](https://github.com/kubernetes/kubernetes/pull/18215)h[e](https://github.com/kubernetes/kubernetes/pull/18215) [s](https://github.com/kubernetes/kubernetes/pull/18215)a[m](https://github.com/kubernetes/kubernetes/pull/18215)e[](https://github.com/kubernetes/kubernetes/pull/18215)A[P](https://github.com/kubernetes/kubernetes/pull/18215)I[](https://github.com/kubernetes/kubernetes/pull/18215)f[o](https://github.com/kubernetes/kubernetes/pull/18215)r[](https://github.com/kubernetes/kubernetes/pull/18215)t[h](https://github.com/kubernetes/kubernetes/pull/18215)e[](https://github.com/kubernetes/kubernetes/pull/18215)m[a](https://github.com/kubernetes/kubernetes/pull/18215)s[t](https://github.com/kubernetes/kubernetes/pull/18215)e[r](https://github.com/kubernetes/kubernetes/pull/18215) [c](https://github.com/kubernetes/kubernetes/pull/18215)l[u](https://github.com/kubernetes/kubernetes/pull/18215)s[te](https://github.com/kubernetes/kubernetes/pull/18215)r
- Quinton's Ubernetes Talk: &nbsp;https://youtu.be/L2ZK24JojB4
- Design for Ubernetes: https://github.com/kubernetes/kubernetes/pull/19313
- SIG Report - SIG-federation - progress on Ubernetes-Lite & Ubernetes design
- Goal is to be able to have a cluster manager, so you can federate clusters. They will automatically distribute the pods.
- Plan is to use the same API for the master cluster
- [Quinton's Kubernetes Talk](https://youtu.be/L2ZK24JojB4)
- [Design for Kubernetes:](https://github.com/kubernetes/kubernetes/pull/19313)
- Conformance testing Q+A [Isaac Hollander McCreery]
- Conformance testing Q+A Isaac Hollander McCreery
- status on conformance testing for release process
- expect to be forward compatible but not backwards
- expect to be forward compatible but not backwards
- is there interest for a sig-testing meeting
- testing needs to a higher priority for the project
- lots of focus on trying to make this a higher priority
To get involved in the Kubernetes community consider joining our [Slack channel](http://slack.k8s.io/), taking a look at the [Kubernetes project](https://github.com/kubernetes/) on GitHub, or join the [Kubernetes-dev Google group](https://groups.google.com/forum/#!forum/kubernetes-dev). If youre really excited, you can do all of the above and join us for the next community conversation -- January 27th, 2016. Please add yourself or a topic you want to know about to the [agenda](https://docs.google.com/document/d/1VQDIAB0OqiSjIHI8AWMvSdceWhnz56jNpZrLs6o7NJY/edit) and get a calendar invitation by joining [this group](https://groups.google.com/forum/#!forum/kubernetes-community-video-chat).
To get involved in the Kubernetes community consider joining our [Slack channel](http://slack.k8s.io/), taking a look at the [Kubernetes project](https://github.com/kubernetes/) on GitHub, or join the [Kubernetes-dev Google group](https://groups.google.com/forum/#!forum/kubernetes-dev). If youre really excited, you can do all of the above and join us for the next community conversation -- January 27th, 2016. Please add yourself or a topic you want to know about to [the agenda](https://docs.google.com/document/d/1VQDIAB0OqiSjIHI8AWMvSdceWhnz56jNpZrLs6o7NJY/edit) and get a calendar invitation by joining [this group](https://groups.google.com/forum/#!forum/kubernetes-community-video-chat).
Still want more Kubernetes? Check out the [recording](https://www.youtube.com/watch?v=izQLFx_6kwY&feature=youtu.be&list=PL69nYSiGNLP1pkHsbPjzAewvMgGUpkCnJ) of this meeting and the growing of the archive of [Kubernetes Community Meetings](https://www.youtube.com/playlist?list=PL69nYSiGNLP1pkHsbPjzAewvMgGUpkCnJ).
@@ -45,7 +45,7 @@ Support for [dynamic maximum volume count](https://github.com/kubernetes/feature
The StorageObjectInUseProtection feature is now stable and prevents the removal of both [Persistent Volumes](https://github.com/kubernetes/features/issues/499) that are bound to a Persistent Volume Claim, and [Persistent Volume Claims](https://github.com/kubernetes/features/issues/498) that are being used by a pod. This safeguard will help prevent issues from deleting a PV or a PVC that is currently tied to an active pod.
Each Special Interest Group (SIG) within the community continues to deliver the most-requested enhancements, fixes, and functionality for their respective specialty areas. For a complete list of inclusions by SIG, please visit the [release notes](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md#111-release-notes).
Each Special Interest Group (SIG) within the community continues to deliver the most-requested enhancements, fixes, and functionality for their respective specialty areas. For a complete list of inclusions by SIG, please visit the [release notes](https://github.com/kubernetes/kubernetes/blob/release-1.11/CHANGELOG-1.11.md#111-release-notes).
## Availability
@@ -88,7 +88,7 @@ Is Kubernetes helping your team? Share your story with the community.
* The CNCF recently expanded its certification offerings to include a Certified Kubernetes Application Developer exam. The CKAD exam certifies an individual's ability to design, build, configure, and expose cloud native applications for Kubernetes. More information can be found [here](https://www.cncf.io/blog/2018/03/16/cncf-announces-ckad-exam/).
* The CNCF recently added a new partner category, Kubernetes Training Partners (KTP). KTPs are a tier of vetted training providers who have deep experience in cloud native technology training. View partners and learn more [here](https://www.cncf.io/certification/training/).
* CNCF also offers [online training](https://www.cncf.io/certification/training/) that teaches the skills needed to create and configure a real-world Kubernetes cluster.
* Kubernetes documentation now features [user journeys](https://k8s.io/docs/home/): specific pathways for learning based on who readers are and what readers want to do. Learning Kubernetes is easier than ever for beginners, and more experienced users can find task journeys specific to cluster admins and application developers.
* Kubernetes documentation now features [user journeys](https://k8s.io/docs/home/): specific pathways for learning based on who readers are and what readers want to do. Learning Kubernetes is easier than ever for beginners, and more experienced users can find task journeys specific to cluster admins and application developers.
## KubeCon
@@ -12,7 +12,7 @@ Kubernetes is well-known for running scalable workloads. It scales your workload
## Guaranteed scheduling with controlled cost
[Kubernetes Cluster Autoscaler](https://kubernetes.io/docs/tasks/administer-cluster/cluster-management/#cluster-autoscaling) is an excellent tool in the ecosystem which adds more nodes to your cluster when your applications need them. However, cluster autoscaler has some limitations and may not work for all users:
[Kubernetes Cluster Autoscaler](https://github.com/kubernetes/autoscaler/) is an excellent tool in the ecosystem which adds more nodes to your cluster when your applications need them. However, cluster autoscaler has some limitations and may not work for all users:
- It does not work in physical clusters.
- Adding more nodes to the cluster costs more.
@@ -89,7 +89,7 @@ Volume cloning enables users to specify another PVC as a "DataSource" when provi
- ExecutionHook API [designed to trigger hook commands](https://github.com/kubernetes/enhancements/issues/962) in the containers for different use cases is now Alpha.
- Continued deprecation of extensions/v1beta1, apps/v1beta1, and apps/v1beta2 APIs; these extensions will be retired in 1.16!
Check the [release notes](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.15.md#kubernetes-v115-release-notes) for a complete list of notable features and fixes.
Check the [release notes](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.15.md#kubernetes-v115-release-notes) for a complete list of notable features and fixes.
**Availability**
@@ -153,7 +153,7 @@ And as sources are always important to mention, we will follow (partially) the h
```bash
# Download the latest version of KinD
curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/v0.7.0/kind-$(uname)-amd64
curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/v0.7.0/kind-linux-amd64
# Make the binary executable
chmod +x ./kind
# Move the binary to your executable path
@@ -61,7 +61,7 @@ mind.
## Avoiding permanent beta
For Kubernetes REST APIs, when a new feature's API reaches beta, that starts a countdown.
The beta-quality API now has **nine calendar months** to either:
The beta-quality API now has **three releases** (about nine calendar months) to either:
- reach GA, and deprecate the beta, or
- have a new beta version (_and deprecate the previous beta_).
@@ -69,9 +69,10 @@ To be clear, at this point **only REST APIs are affected**. For example, _APILis
a beta feature but isn't itself a REST API. Right now there are no plans to automatically
deprecate _APIListChunking_ nor any other features that aren't REST APIs.
If a REST API reaches the end of that 9 month countdown, then the next Kubernetes release
will deprecate that API version. There's no option for the REST API to stay at the same
beta version beyond the first Kubernetes release to come out after the 9 month window.
If a beta API has not graduated to GA after three Kubernetes releases, then the
next Kubernetes release will deprecate that API version. There's no option for
the REST API to stay at the same beta version beyond the first Kubernetes
release to come out after the release window.
### What this means for you
@@ -0,0 +1,127 @@
---
layout: blog
title: 'Kubernetes 1.19: Accentuate the Paw-sitive'
date: 2020-08-26
slug: kubernetes-release-1.19-accentuate-the-paw-sitive
---
**Authors:** [Kubernetes 1.19 Release Team](https://github.com/kubernetes/sig-release/blob/master/releases/release-1.19/release_team.md)
Finally, we have arrived with Kubernetes 1.19, the second release for 2020, and by far the longest release cycle lasting 20 weeks in total. It consists of 34 enhancements: 10 enhancements are moving to stable, 15 enhancements in beta, and 9 enhancements in alpha.
The 1.19 release was quite different from a regular release due to COVID-19, the George Floyd protests, and several other global events that we experienced as a release team. Due to these events, we made the decision to adjust our timeline and allow the SIGs, Working Groups, and contributors more time to get things done. The extra time also allowed for people to take time to focus on their lives outside of the Kubernetes project, and ensure their mental wellbeing was in a good place.
Contributors are the heart of Kubernetes, not the other way around. The Kubernetes code of conduct asks that people be excellent to one another and despite the unrest in our world, we saw nothing but greatness and humility from the community.
## Major Themes
### Increase Kubernetes support window to one year
A survey conducted in early 2019 by the [Long Term Support (LTS) working group](https://github.com/kubernetes/community/tree/master/wg-lts#readme) showed that a significant subset of Kubernetes end-users fail to upgrade within the current 9-month support period.
This, and other responses from the survey, suggest that 30% of users would be able to keep their deployments on supported versions if the patch support period were extended to 12-14 months. This appears to be true regardless of whether the users are on self build or commercially vendored distributions. An extension would thus lead to more than 80% of users being on supported versions, instead of the 50-60% we have now.
A yearly support period provides the cushion end-users appear to desire, and is more in harmony with familiar annual planning cycles.
From Kubernetes version 1.19 on, the support window will be extended to one year.
### Storage capacity tracking
Traditionally, the Kubernetes scheduler was based on the assumptions that additional persistent storage is available everywhere in the cluster and has infinite capacity. Topology constraints addressed the first point, but up to now pod scheduling was still done without considering that the remaining storage capacity may not be enough to start a new pod. [Storage capacity tracking](/docs/concepts/storage/storage-capacity/), a new alpha feature, addresses that by adding an API for a CSI driver to report storage capacity and uses that information in the Kubernetes scheduler when choosing a node for a pod. This feature serves as a stepping stone for supporting dynamic provisioning for local volumes and other volume types that are more capacity constrained.
#### Generic ephemeral volumes
Kubernetes provides volume plugins whose lifecycle is tied to a pod and can be used as scratch space (e.g. the builtin `emptydir` volume type) or to load some data in to a pod (e.g. the builtin `configmap` and `secret` volume types, or “CSI inline volumes”). The new [generic ephemeral volumes](/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes) alpha feature allows any existing storage driver that supports dynamic provisioning to be used as an ephemeral volume with the volumes lifecycle bound to the Pod.
It can be used to provide scratch storage that is different from the root disk, for example persistent memory, or a separate local disk on that node.
All StorageClass parameters for volume provisioning are supported.
All features supported with PersistentVolumeClaims are supported, such as storage capacity tracking, snapshots and restore, and volume resizing.
#### CSI Volume Health Monitoring
The alpha version of CSI health monitoring is being released with Kubernetes 1.19. This feature enables CSI Drivers to share abnormal volume conditions from the underlying storage systems with Kubernetes so that they can be reported as events on PVCs or Pods. This feature serves as a stepping stone towards programmatic detection and resolution of individual volume health issues by Kubernetes.
### Ingress graduates to General Availability
In terms of moving the Ingress API towards GA, the API itself has been available in beta for so long that it has attained de facto GA status through usage and adoption (both by users and by load balancer / ingress controller providers). Abandoning it without a full replacement is not a viable approach. It is clearly a useful API and captures a non-trivial set of use cases. At this point, it seems more prudent to declare the current API as something the community will support as a V1, codifying its status, while working on either a V2 Ingress API or an entirely different API with a superset of features.
### Structured logging
Before v1.19, logging in the Kubernetes control plane couldn't guarantee any uniform structure for log messages and references to Kubernetes objects in those logs. This makes parsing, processing, storing, querying and analyzing logs hard and forces administrators and developers to rely on ad-hoc solutions in most cases based on some regular expressions. Due to those problems any analytical solution based on those logs is hard to implement and maintain.
#### New klog methods
This Kubernetes release introduces new methods to the _klog_ library that provide a more structured interface for formatting log messages. Each existing formatted log method (`Infof`, `Errorf`) is now matched by a structured method (`InfoS`, `ErrorS`). The new logging methods accept log messages as a first argument and a list of key-values pairs as a variadic second argument. This approach allows incremental adoption of structured logging without converting **all** of Kubernetes to a new API at one time.
### Client TLS certificate rotation for kubelet
A kubelet authenticates the kubelet to the kube-apiserver using a private key and certificate. The certificate is supplied to the kubelet when it is first booted, via an out-of-cluster mechanism. Since Kubernetes v1.8, clusters have included a (beta) process for obtaining the initial cert/key pair and rotating it as expiration of the certificate approaches. In Kubernetes v1.19 this graduates to stable.
During the kubelet start-up sequence, the filesystem is scanned for an existing cert/key pair, which is managed by the certificate manager. In the case that a cert/key is available it will be loaded. If not, the kubelet checks its config file for an encoded certificate value or a file reference in the kubeconfig. If the certificate is a bootstrap certificate, this will be used to generate a key, create a certificate signing request and request a signed certificate from the API server.
When an expiration approaches the cert manager takes care of providing the correct certificate, generating new private keys and requesting new certificates. With the kubelet requesting certificates be signed as part of its boot sequence, and on an ongoing basis, certificate signing requests from the kubelet need to be auto approved to make cluster administration manageable.
## Other Updates
### Graduated to Stable
* [Seccomp](https://github.com/kubernetes/enhancements/issues/135)
* [Kubelet client TLS certificate rotation](https://github.com/kubernetes/enhancements/issues/266)
* [Limit node access to API](https://github.com/kubernetes/enhancements/issues/279)
* [Redesign Event API](https://github.com/kubernetes/enhancements/issues/383)
* [Graduate Ingress to V1](https://github.com/kubernetes/enhancements/issues/1453)
* [CertificateSigningRequest API](https://github.com/kubernetes/enhancements/issues/1513)
* [Building Kubelet without Docker](https://github.com/kubernetes/enhancements/issues/1547)
### Major Changes
* [Node Topology Manager](https://github.com/kubernetes/enhancements/issues/693)
* [New Endpoint API](https://github.com/kubernetes/enhancements/issues/752)
* [Increase Kubernetes support window to one year](https://github.com/kubernetes/enhancements/issues/1498)
### Other Notable Features
* [Run multiple Scheduling Profiles](https://github.com/kubernetes/enhancements/issues/1451)
* [CertificateSigningRequest API](https://github.com/kubernetes/enhancements/issues/1513)
* [Immutable Secrets and ConfigMaps](https://github.com/kubernetes/enhancements/issues/1412)
## Release Notes
Check out the full details of the Kubernetes 1.19 release in our [release notes](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.19.md).
## Availability
Kubernetes 1.19 is available for download on [GitHub](https://github.com/kubernetes/kubernetes/releases/tag/v1.19.0). To get started with Kubernetes, check out these [interactive tutorials](https://kubernetes.io/docs/tutorials/) or run local Kubernetes clusters using Docker container “nodes” with [KinD](https://kind.sigs.k8s.io/) (Kubernetes in Docker). You can also easily install 1.19 using [kubeadm](https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/).
## Release Team
This release is made possible through the efforts of hundreds of individuals who contributed both technical and non-technical content. Special thanks to the [release team](https://github.com/kubernetes/sig-release/blob/master/releases/release-1.19/release_team.md) led by Taylor Dolezal, Senior Developer Advocate at HashiCorp. The 34 release team members coordinated many aspects of the release, from documentation to testing, validation, and feature completeness.
As the Kubernetes community has grown, our release process represents an amazing demonstration of collaboration in open source software development. Kubernetes continues to gain new users at a rapid pace. This growth creates a positive feedback cycle where more contributors commit code creating a more vibrant ecosystem. Kubernetes has had over [49,000 individual contributors](https://k8s.devstats.cncf.io/d/24/overall-project-statistics?orgId=1) to date and an active community of more than 3,000 people.
## Release Logo
All of you inspired this Kubernetes 1.19 release logo! This release was a bit more of a marathon and a testament to when the world is a wild place, we can come together and do unbelievable things.
![Kubernetes 1.19 Release Logo](/images/blog/2020-08-26-kubernetes-1.19-release-announcement/accentuate.png)
"Accentuate the Paw-sitive" was chosen as the release theme because it captures the positive outlook that the release team had, despite the state of the world. The characters pictured in the 1.19 logo represent everyone's personalities on our release team, from emo to peppy, and beyond!
About the designer: Hannabeth Lagerlof is a Visual Designer based in Los Angeles, California, and she has an extensive background in Environments and Graphic Design. Hannabeth creates art and user experiences that inspire connection. You can find Hannabeth on Twitter as @emanate_design.
## The Long Run
The release was also different from the enhancements side of things. Traditionally, we have had 3-4 weeks between the call for enhancements and Enhancements Freeze, which ends the phase in which contributors can acknowledge whether a particular feature will be part of the cycle. This release cycle, being unique, we had five weeks for the same milestone. The extended duration gave the contributors more time to plan and decide about the graduation of their respective features.
The milestone until which contributors implement the features was extended from the usual five weeks to 7 weeks. Contributors were provided with 40% more time to work on their features, resulting in reduced fatigue and more to think through about the implementation. We also noticed a considerable reduction in last-minute hustles. There were also a lesser number of exception requests this cycle - 6 compared to 14 the previous release cycle.
## User Highlights
* The CNCF grants Zalando, Europes leading online platform for fashion and lifestyle, the [Top End User Award](https://www.cncf.io/announcement/2020/08/20/cloud-native-computing-foundation-grants-zalando-the-top-end-user-award/). Zalando leverages numerous CNCF projects and open sourced multiple of their own development.
## Ecosystem Updates
* The CNCF just concluded its very first Virtual KubeCon. All talks are [on-demand]( https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/) for anyone registered, it's not too late!
* The [Certified Kubernetes Security Specialist](https://www.cncf.io/blog/2020/07/15/certified-kubernetes-security-specialist-cks-coming-in-november/) (CKS) coming in November! CKS focuses on cluster & system hardening, minimizing microservice vulnerabilities and the security of the supply chain.
* CNCF published the second [State of Cloud Native Development](https://www.cncf.io/blog/2020/08/14/state-of-cloud-native-development/), showing the massively growing number of cloud native developer using container and serverless technology.
* [Kubernetes.dev](https://www.kubernetes.dev), a Kubernetes contributor focused website has been launched. It brings the contributor documentation, resources and project event information into one central location.
## Project Velocity
The [Kubernetes DevStats dashboard](https://k8s.devstats.cncf.io/d/12/dashboards?orgId=1) illustrates the breakdown of contributions from major company contributors, as well as an impressive set of preconfigured reports on everything from individual contributors to pull request lifecycle times. If you want to gather numbers, facts and figures from Kubernetes and the CNCF community it is the best place to start.
During this release cycle from April till August, 382 different companies and over 2,464 individuals contributed to Kubernetes. [Check out DevStats](https://k8s.devstats.cncf.io/d/11/companies-contributing-in-repository-groups?orgId=1&var-period=m&var-repogroup_name=All&from=1585692000000&to=1598392799000) to learn more about the overall velocity of the Kubernetes project and community.
## Upcoming release webinar
Join the members of the Kubernetes 1.19 release team on September 25th, 2020 to learn about the major features in this release including storage capacity tracking, structured logging, Ingress V1 GA, and many more. Register here: https://www.cncf.io/webinars/kubernetes-1-19/.
## Get Involved
The simplest way to get involved with Kubernetes is by joining one of the many [Special Interest Groups](https://github.com/kubernetes/community/blob/master/sig-list.md) (SIGs) that align with your interests. Have something youd like to broadcast to the Kubernetes community? Share your voice at our monthly [community meeting](https://github.com/kubernetes/community/tree/master/communication), and through the channels below. Thank you for your continued feedback and support.
* Find out more about contributing to Kubernetes at the new [Kubernetes Contributor website](https://www.kubernetes.dev/)
* Follow us on Twitter [@Kubernetesio](https://twitter.com/kubernetesio) for latest updates
* Join the community discussion on [Discuss](https://discuss.kubernetes.io/)
* Join the community on [Slack](http://slack.k8s.io/)
* Share your Kubernetes [story](https://docs.google.com/a/linuxfoundation.org/forms/d/e/1FAIpQLScuI7Ye3VQHQTwBASrgkjQDSS5TP0g3AXfFhwSM9YpHgxRKFA/viewform)
* Read more about whats happening with Kubernetes on the [blog](https://kubernetes.io/blog/)
* Learn more about the [Kubernetes Release Team](https://github.com/kubernetes/sig-release/tree/master/release-team)
@@ -0,0 +1,30 @@
---
layout: blog
title: 'Increasing the Kubernetes Support Window to One Year'
date: 2020-08-31
slug: kubernetes-1-19-feature-one-year-support
---
**Authors:** Tim Pepper (VMware), Nick Young (VMware)
Starting with Kubernetes 1.19, the support window for Kubernetes versions [will increase from 9 months to one year](https://github.com/kubernetes/enhancements/issues/1498). The longer support window is intended to allow organizations to perform major upgrades at a time of the year that works the best for them.
This is a big change. For many years, the Kubernetes project has delivered a new minor release (e.g.: 1.13 or 1.14) every 3 months. The project provides bugfix support via patch releases (e.g.: 1.13.Y) for three parallel branches of the codebase. Combined, this led to each minor release (e.g.: 1.13) having a patch release stream of support for approximately 9 months. In the end, a cluster operator had to upgrade at least every 9 months to remain supported.
A survey conducted in early 2019 by the WG LTS showed that a significant subset of Kubernetes end-users fail to upgrade within the 9-month support period.
![Versions in Production](/images/blog/2020-08-31-increase-kubernetes-support-one-year/versions-in-production-text-2.png)
This, and other responses from the survey, suggest that a considerable portion of our community would better be able to manage their deployments on supported versions if the patch support period were extended to 12-14 months. It appears to be true regardless of whether the users are on DIY builds or commercially vendored distributions. An extension in the patch support length of time would thus lead to a larger percentage of our user base running supported versions compared to what we have now.
A yearly support period provides the cushion end-users appear to desire, and is more aligned with familiar annual planning cycles.
There are many unknowns about changing the support windows for a project with as many moving parts as Kubernetes. Keeping the change relatively small (relatively being the important word), gives us the chance to find out what those unknowns are in detail and address them.
From Kubernetes version 1.19 on, the support window will be extended to one year. For Kubernetes versions 1.16, 1.17, and 1.18, the story is more complicated.
All of these versions still fall under the older “three releases support” model, and will drop out of support when 1.19, 1.20 and 1.21 are respectively released. However, because the 1.19 release has been delayed due to the events of 2020, they will end up with close to a year of support (depending on their exact release dates).
For example, 1.19 was released on the 26th of August 2020, which is 11 months since the release of 1.16. Since 1.16 is still under the old release policy, this means that it is now out of support.
![Support Timeline](/images/blog/2020-08-31-increase-kubernetes-support-one-year/support-timeline.png)
If youve got thoughts or feedback, wed love to hear them. Please contact us on [#wg-lts](https://kubernetes.slack.com/messages/wg-lts/) on the Kubernetes Slack, or to the [kubernetes-wg-lts mailing list](https://groups.google.com/g/kubernetes-wg-lts).
@@ -0,0 +1,394 @@
---
layout: blog
title: 'Ephemeral volumes with storage capacity tracking: EmptyDir on steroids'
date: 2020-09-01
slug: ephemeral-volumes-with-storage-capacity-tracking
---
**Author:** Patrick Ohly (Intel)
Some applications need additional storage but don't care whether that
data is stored persistently across restarts. For example, caching
services are often limited by memory size and can move infrequently
used data into storage that is slower than memory with little impact
on overall performance. Other applications expect some read-only input
data to be present in files, like configuration data or secret keys.
Kubernetes already supports several kinds of such [ephemeral
volumes](/docs/concepts/storage/ephemeral-volumes), but the
functionality of those is limited to what is implemented inside
Kubernetes.
[CSI ephemeral volumes](https://kubernetes.io/blog/2020/01/21/csi-ephemeral-inline-volumes/)
made it possible to extend Kubernetes with CSI
drivers that provide light-weight, local volumes. These [*inject
arbitrary states, such as configuration, secrets, identity, variables
or similar
information*](https://github.com/kubernetes/enhancements/blob/master/keps/sig-storage/20190122-csi-inline-volumes.md#motivation).
CSI drivers must be modified to support this Kubernetes feature,
i.e. normal, standard-compliant CSI drivers will not work, and
by design such volumes are supposed to be usable on whatever node
is chosen for a pod.
This is problematic for volumes which consume significant resources on
a node or for special storage that is only available on some nodes.
Therefore, Kubernetes 1.19 introduces two new alpha features for
volumes that are conceptually more like the `EmptyDir` volumes:
- [*generic* ephemeral volumes](/docs/concepts/storage/ephemeral-volumes#generic-ephemeral-volumes) and
- [CSI storage capacity tracking](/docs/concepts/storage/storage-capacity).
The advantages of the new approach are:
- Storage can be local or network-attached.
- Volumes can have a fixed size that applications are never able to exceed.
- Works with any CSI driver that supports provisioning of persistent
volumes and (for capacity tracking) implements the CSI `GetCapacity` call.
- Volumes may have some initial data, depending on the driver and
parameters.
- All of the typical volume operations (snapshotting,
resizing, the future storage capacity tracking, etc.)
are supported.
- The volumes are usable with any app controller that accepts
a Pod or volume specification.
- The Kubernetes scheduler itself picks suitable nodes, i.e. there is
no need anymore to implement and configure scheduler extenders and
mutating webhooks.
This makes generic ephemeral volumes a suitable solution for several
use cases:
# Use cases
## Persistent Memory as DRAM replacement for memcached
Recent releases of memcached added [support for using Persistent
Memory](https://memcached.org/blog/persistent-memory/) (PMEM) instead
of standard DRAM. When deploying memcached through one of the app
controllers, generic ephemeral volumes make it possible to request a PMEM volume
of a certain size from a CSI driver like
[PMEM-CSI](https://intel.github.io/pmem-csi/).
## Local LVM storage as scratch space
Applications working with data sets that exceed the RAM size can
request local storage with performance characteristics or size that is
not met by the normal Kubernetes `EmptyDir` volumes. For example,
[TopoLVM](https://github.com/cybozu-go/topolvm) was written for that
purpose.
## Read-only access to volumes with data
Provisioning a volume might result in a non-empty volume:
- [restore a snapshot](/docs/concepts/storage/persistent-volumes/#volume-snapshot-and-restore-volume-from-snapshot-support)
- [cloning a volume](/docs/concepts/storage/volume-pvc-datasource)
- [generic data populators](https://github.com/kubernetes/enhancements/blob/master/keps/sig-storage/20200120-generic-data-populators.md)
Such volumes can be mounted read-only.
# How it works
## Generic ephemeral volumes
The key idea behind generic ephemeral volumes is that a new volume
source, the so-called
[`EphemeralVolumeSource`](/docs/reference/generated/kubernetes-api/#ephemeralvolumesource-v1alpha1-core)
contains all fields that are needed to created a volume claim
(historically called persistent volume claim, PVC). A new controller
in the `kube-controller-manager` waits for Pods which embed such a
volume source and then creates a PVC for that pod. To a CSI driver
deployment, that PVC looks like any other, so no special support is
needed.
As long as these PVCs exist, they can be used like any other volume claim. In
particular, they can be referenced as data source in volume cloning or
snapshotting. The PVC object also holds the current status of the
volume.
Naming of the automatically created PVCs is deterministic: the name is
a combination of Pod name and volume name, with a hyphen (`-`) in the
middle. This deterministic naming makes it easier to
interact with the PVC because one does not have to search for it once
the Pod name and volume name are known. The downside is that the name might
be in use already. This is detected by Kubernetes and then blocks Pod
startup.
To ensure that the volume gets deleted together with the pod, the
controller makes the Pod the owner of the volume claim. When the Pod
gets deleted, the normal garbage-collection mechanism also removes the
claim and thus the volume.
Claims select the storage driver through the normal storage class
mechanism. Although storage classes with both immediate and late
binding (aka `WaitForFirstConsumer`) are supported, for ephemeral
volumes it makes more sense to use `WaitForFirstConsumer`: then Pod
scheduling can take into account both node utilization and
availability of storage when choosing a node. This is where the other
new feature comes in.
## Storage capacity tracking
Normally, the Kubernetes scheduler has no information about where a
CSI driver might be able to create a volume. It also has no way of
talking directly to a CSI driver to retrieve that information. It
therefore tries different nodes until it finds one where all volumes
can be made available (late binding) or leaves it entirely to the
driver to choose a location (immediate binding).
The new [`CSIStorageCapacity` alpha
API](/docs/reference/generated/kubernetes-api/v1.19/#csistoragecapacity-v1alpha1-storage-k8s-io)
allows storing the necessary information in etcd where it is available to the
scheduler. In contrast to support for generic ephemeral volumes,
storage capacity tracking must be [enabled when deploying a CSI
driver](https://github.com/kubernetes-csi/external-provisioner/blob/master/README.md#capacity-support):
the `external-provisioner` must be told to publish capacity
information that it then retrieves from the CSI driver through the normal
`GetCapacity` call.
<!-- TODO: update the link with a revision once https://github.com/kubernetes-csi/external-provisioner/pull/450 is merged -->
When the Kubernetes scheduler needs to choose a node for a Pod with an
unbound volume that uses late binding and the CSI driver deployment
has opted into the feature by setting the [`CSIDriver.storageCapacity`
flag](/docs/reference/generated/kubernetes-api/v1.19/#csidriver-v1beta1-storage-k8s-io)
flag, the scheduler automatically filters out nodes that do not have
access to enough storage capacity. This works for generic ephemeral
and persistent volumes but *not* for CSI ephemeral volumes because the
parameters of those are opaque for Kubernetes.
As usual, volumes with immediate binding get created before scheduling
pods, with their location chosen by the storage driver. Therefore, the
external-provisioner's default configuration skips storage
classes with immediate binding as the information wouldn't be used anyway.
Because the Kubernetes scheduler must act on potentially outdated
information, it cannot be ensured that the capacity is still available
when a volume is to be created. Still, the chances that it can be created
without retries should be higher.
# Security
## CSIStorageCapacity
CSIStorageCapacity objects are namespaced. When deploying each CSI
drivers in its own namespace and, as recommended, limiting the RBAC
permissions for CSIStorageCapacity to that namespace, it is
always obvious where the data came from. However, Kubernetes does
not check that and typically drivers get installed in the same
namespace anyway, so ultimately drivers are *expected to behave* and
not publish incorrect data.
## Generic ephemeral volumes
If users have permission to create a Pod (directly or indirectly),
then they can also create generic ephemeral volumes even when they do
not have permission to create a volume claim. That's because RBAC
permission checks are applied to the controller which creates the
PVC, not the original user. This is a fundamental change that must be
[taken into
account](/docs/concepts/storage/ephemeral-volumes#security) before
enabling the feature in clusters where untrusted users are not
supposed to have permission to create volumes.
# Example
A [special branch](https://github.com/intel/pmem-csi/commits/kubernetes-1-19-blog-post)
in PMEM-CSI contains all the necessary changes to bring up a
Kubernetes 1.19 cluster inside QEMU VMs with both alpha features
enabled. The PMEM-CSI driver code is used unchanged, only the
deployment was updated.
On a suitable machine (Linux, non-root user can use Docker - see the
[QEMU and
Kubernetes](https://intel.github.io/pmem-csi/0.7/docs/autotest.html#qemu-and-kubernetes)
section in the PMEM-CSI documentation), the following commands bring
up a cluster and install the PMEM-CSI driver:
```console
git clone --branch=kubernetes-1-19-blog-post https://github.com/intel/pmem-csi.git
cd pmem-csi
export TEST_KUBERNETES_VERSION=1.19 TEST_FEATURE_GATES=CSIStorageCapacity=true,GenericEphemeralVolume=true TEST_PMEM_REGISTRY=intel
make start && echo && test/setup-deployment.sh
```
If all goes well, the output contains the following usage
instructions:
```
The test cluster is ready. Log in with [...]/pmem-csi/_work/pmem-govm/ssh.0, run
kubectl once logged in. Alternatively, use kubectl directly with the
following env variable:
KUBECONFIG=[...]/pmem-csi/_work/pmem-govm/kube.config
secret/pmem-csi-registry-secrets created
secret/pmem-csi-node-secrets created
serviceaccount/pmem-csi-controller created
...
To try out the pmem-csi driver ephemeral volumes:
cat deploy/kubernetes-1.19/pmem-app-ephemeral.yaml |
[...]/pmem-csi/_work/pmem-govm/ssh.0 kubectl create -f -
```
The CSIStorageCapacity objects are not meant to be human-readable, so
some post-processing is needed. The following Golang template filters
all objects by the storage class that the example uses and prints the
name, topology and capacity:
```console
kubectl get \
-o go-template='{{range .items}}{{if eq .storageClassName "pmem-csi-sc-late-binding"}}{{.metadata.name}} {{.nodeTopology.matchLabels}} {{.capacity}}
{{end}}{{end}}' \
csistoragecapacities
```
```
csisc-2js6n map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker2] 30716Mi
csisc-sqdnt map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker1] 30716Mi
csisc-ws4bv map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker3] 30716Mi
```
One individual object has the following content:
```console
kubectl describe csistoragecapacities/csisc-6cw8j
```
```
Name: csisc-sqdnt
Namespace: default
Labels: <none>
Annotations: <none>
API Version: storage.k8s.io/v1alpha1
Capacity: 30716Mi
Kind: CSIStorageCapacity
Metadata:
Creation Timestamp: 2020-08-11T15:41:03Z
Generate Name: csisc-
Managed Fields:
...
Owner References:
API Version: apps/v1
Controller: true
Kind: StatefulSet
Name: pmem-csi-controller
UID: 590237f9-1eb4-4208-b37b-5f7eab4597d1
Resource Version: 2994
Self Link: /apis/storage.k8s.io/v1alpha1/namespaces/default/csistoragecapacities/csisc-sqdnt
UID: da36215b-3b9d-404a-a4c7-3f1c3502ab13
Node Topology:
Match Labels:
pmem-csi.intel.com/node: pmem-csi-pmem-govm-worker1
Storage Class Name: pmem-csi-sc-late-binding
Events: <none>
```
Now let's create the example app with one generic ephemeral
volume. The `pmem-app-ephemeral.yaml` file contains:
```yaml
# This example Pod definition demonstrates
# how to use generic ephemeral inline volumes
# with a PMEM-CSI storage class.
kind: Pod
apiVersion: v1
metadata:
name: my-csi-app-inline-volume
spec:
containers:
- name: my-frontend
image: intel/pmem-csi-driver-test:v0.7.14
command: [ "sleep", "100000" ]
volumeMounts:
- mountPath: "/data"
name: my-csi-volume
volumes:
- name: my-csi-volume
ephemeral:
volumeClaimTemplate:
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 4Gi
storageClassName: pmem-csi-sc-late-binding
```
After creating that as shown in the usage instructions above, we have one additional Pod and PVC:
```console
kubectl get pods/my-csi-app-inline-volume -o wide
```
```
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-csi-app-inline-volume 1/1 Running 0 6m58s 10.36.0.2 pmem-csi-pmem-govm-worker1 <none> <none>
```
```console
kubectl get pvc/my-csi-app-inline-volume-my-csi-volume
```
```
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
my-csi-app-inline-volume-my-csi-volume Bound pvc-c11eb7ab-a4fa-46fe-b515-b366be908823 4Gi RWO pmem-csi-sc-late-binding 9m21s
```
That PVC is owned by the Pod:
```console
kubectl get -o yaml pvc/my-csi-app-inline-volume-my-csi-volume
```
```
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
pv.kubernetes.io/bind-completed: "yes"
pv.kubernetes.io/bound-by-controller: "yes"
volume.beta.kubernetes.io/storage-provisioner: pmem-csi.intel.com
volume.kubernetes.io/selected-node: pmem-csi-pmem-govm-worker1
creationTimestamp: "2020-08-11T15:44:57Z"
finalizers:
- kubernetes.io/pvc-protection
managedFields:
...
name: my-csi-app-inline-volume-my-csi-volume
namespace: default
ownerReferences:
- apiVersion: v1
blockOwnerDeletion: true
controller: true
kind: Pod
name: my-csi-app-inline-volume
uid: 75c925bf-ca8e-441a-ac67-f190b7a2265f
...
```
Eventually, the storage capacity information for `pmem-csi-pmem-govm-worker1` also gets updated:
```
csisc-2js6n map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker2] 30716Mi
csisc-sqdnt map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker1] 26620Mi
csisc-ws4bv map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker3] 30716Mi
```
If another app needs more than 26620Mi, the Kubernetes
scheduler will not pick `pmem-csi-pmem-govm-worker1` anymore.
# Next steps
Both features are under development. Several open questions were
already raised during the alpha review process. The two enhancement
proposals document the work that will be needed for migration to beta and what
alternatives were already considered and rejected:
* [KEP-1698: generic ephemeral inline
volumes](https://github.com/kubernetes/enhancements/blob/9d7a75d/keps/sig-storage/1698-generic-ephemeral-volumes/README.md)
* [KEP-1472: Storage Capacity
Tracking](https://github.com/kubernetes/enhancements/tree/9d7a75d/keps/sig-storage/1472-storage-capacity-tracking)
Your feedback is crucial for driving that development. SIG-Storage
[meets
regularly](https://github.com/kubernetes/community/tree/master/sig-storage#meetings)
and can be reached via [Slack and a mailing
list](https://github.com/kubernetes/community/tree/master/sig-storage#contact).
@@ -0,0 +1,46 @@
---
layout: blog
title: 'Scaling Kubernetes Networking With EndpointSlices'
date: 2020-09-02
slug: scaling-kubernetes-networking-with-endpointslices
---
**Author:** Rob Scott (Google)
EndpointSlices are an exciting new API that provides a scalable and extensible alternative to the Endpoints API. EndpointSlices track IP addresses, ports, readiness, and topology information for Pods backing a Service.
In Kubernetes 1.19 this feature is enabled by default with kube-proxy reading from [EndpointSlices](/docs/concepts/services-networking/endpoint-slices/) instead of Endpoints. Although this will mostly be an invisible change, it should result in noticeable scalability improvements in large clusters. It also enables significant new features in future Kubernetes releases like [Topology Aware Routing](/docs/concepts/services-networking/service-topology/).
## Scalability Limitations of the Endpoints API
With the Endpoints API, there was only one Endpoints resource for a Service. That meant that it needed to be able to store IP addresses and ports (network endpoints) for every Pod that was backing the corresponding Service. This resulted in huge API resources. To compound this problem, kube-proxy was running on every node and watching for any updates to Endpoints resources. If even a single network endpoint changed in an Endpoints resource, the whole object would have to be sent to each of those instances of kube-proxy.
A further limitation of the Endpoints API is that it limits the number of network endpoints that can be tracked for a Service. The default size limit for an object stored in etcd is 1.5MB. In some cases that can limit an Endpoints resource to 5,000 Pod IPs. This is not an issue for most users, but it becomes a significant problem for users with Services approaching this size.
To show just how significant these issues become at scale it helps to have a simple example. Think about a Service which has 5,000 Pods, it might end up with a 1.5MB Endpoints resource. If even a single network endpoint in that list changes, the full Endpoints resource will need to be distributed to each Node in the cluster. This becomes quite an issue in a large cluster with 3,000 Nodes. Each update would involve sending 4.5GB of data (1.5MB Endpoints * 3,000 Nodes) across the cluster. That's nearly enough to fill up a DVD, and it would happen for each Endpoints change. Imagine a rolling update that results in all 5,000 Pods being replaced - that's more than 22TB (or 5,000 DVDs) worth of data transferred.
## Splitting endpoints up with the EndpointSlice API
The EndpointSlice API was designed to address this issue with an approach similar to sharding. Instead of tracking all Pod IPs for a Service with a single Endpoints resource, we split them into multiple smaller EndpointSlices.
Consider an example where a Service is backed by 15 pods. We'd end up with a single Endpoints resource that tracked all of them. If EndpointSlices were configured to store 5 endpoints each, we'd end up with 3 different EndpointSlices:
![EndpointSlices](/images/blog/2020-09-02-scaling-kubernetes-networking-endpointslices/endpoint-slices.png)
By default, EndpointSlices store as many as 100 endpoints each, though this can be configured with the `--max-endpoints-per-slice` flag on kube-controller-manager.
## EndpointSlices provide 10x scalability improvements
This API dramatically improves networking scalability. Now when a Pod is added or removed, only 1 small EndpointSlice needs to be updated. This difference becomes quite noticeable when hundreds or thousands of Pods are backing a single Service.
Potentially more significant, now that all Pod IPs for a Service don't need to be stored in a single resource, we don't have to worry about the size limit for objects stored in etcd. EndpointSlices have already been used to scale Services beyond 100,000 network endpoints.
All of this is brought together with some significant performance improvements that have been made in kube-proxy. When using EndpointSlices at scale, significantly less data will be transferred for endpoints updates and kube-proxy should be faster to update iptables or ipvs rules. Beyond that, Services can now scale to at least 10 times beyond any previous limitations.
## EndpointSlices enable new functionality
Introduced as an alpha feature in Kubernetes v1.16, EndpointSlices were built to enable some exciting new functionality in future Kubernetes releases. This could include dual-stack Services, topology aware routing, and endpoint subsetting.
Dual-Stack Services are an exciting new feature that has been in development alongside EndpointSlices. They will utilize both IPv4 and IPv6 addresses for Services and rely on the addressType field on EndpointSlices to track these addresses by IP family.
Topology aware routing will update kube-proxy to prefer routing requests within the same zone or region. This makes use of the topology fields stored for each endpoint in an EndpointSlice. As a further refinement of that, we're exploring the potential of endpoint subsetting. This would allow kube-proxy to only watch a subset of EndpointSlices. For example, this might be combined with topology aware routing so that kube-proxy would only need to watch EndpointSlices containing endpoints within the same zone. This would provide another very significant scalability improvement.
## What does this mean for the Endpoints API?
Although the EndpointSlice API is providing a newer and more scalable alternative to the Endpoints API, the Endpoints API will continue to be considered generally available and stable. The most significant change planned for the Endpoints API will involve beginning to truncate Endpoints that would otherwise run into scalability issues.
The Endpoints API is not going away, but many new features will rely on the EndpointSlice API. To take advantage of the new scalability and functionality that EndpointSlices provide, applications that currently consume Endpoints will likely want to consider supporting EndpointSlices in the future.
@@ -0,0 +1,333 @@
---
layout: blog
title: "Warning: Helpful Warnings Ahead"
date: 2020-09-03
slug: warnings
---
**Author**: Jordan Liggitt (Google)
As Kubernetes maintainers, we're always looking for ways to improve usability while preserving compatibility.
As we develop features, triage bugs, and answer support questions, we accumulate information that would be helpful for Kubernetes users to know.
In the past, sharing that information was limited to out-of-band methods like release notes, announcement emails, documentation, and blog posts.
Unless someone knew to seek out that information and managed to find it, they would not benefit from it.
In Kubernetes v1.19, we added a feature that allows the Kubernetes API server to
[send warnings to API clients](https://github.com/kubernetes/enhancements/tree/master/keps/sig-api-machinery/1693-warnings).
The warning is sent using a [standard `Warning` response header](https://tools.ietf.org/html/rfc7234#section-5.5),
so it does not change the status code or response body in any way.
This allows the server to send warnings easily readable by any API client, while remaining compatible with previous client versions.
Warnings are surfaced by `kubectl` v1.19+ in `stderr` output, and by the `k8s.io/client-go` client library v0.19.0+ in log output.
The `k8s.io/client-go` behavior can be [overridden per-process or per-client](#customize-client-handling).
## Deprecation Warnings
The first way we are using this new capability is to send warnings for use of deprecated APIs.
Kubernetes is a [big, fast-moving project](https://www.cncf.io/cncf-kubernetes-project-journey/#development-velocity).
Keeping up with the [changes](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.19.md#changelog-since-v1180)
in each release can be daunting, even for people who work on the project full-time. One important type of change is API deprecations.
As APIs in Kubernetes graduate to GA versions, pre-release API versions are deprecated and eventually removed.
Even though there is an [extended deprecation period](/docs/reference/using-api/deprecation-policy/),
and deprecations are [included in release notes](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.19.md#deprecation),
they can still be hard to track. During the deprecation period, the pre-release API remains functional,
allowing several releases to transition to the stable API version. However, we have found that users often don't even realize
they are depending on a deprecated API version until they upgrade to the release that stops serving it.
Starting in v1.19, whenever a request is made to a deprecated REST API, a warning is returned along with the API response.
This warning includes details about the release in which the API will no longer be available, and the replacement API version.
Because the warning originates at the server, and is intercepted at the client level, it works for all kubectl commands,
including high-level commands like `kubectl apply`, and low-level commands like `kubectl get --raw`:
<img alt="kubectl applying a manifest file, then displaying a warning message 'networking.k8s.io/v1beta1 Ingress is deprecated in v1.19+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress'."
src="kubectl-warnings.png"
style="width:637px;max-width:100%;">
This helps people affected by the deprecation to know the request they are making is deprecated,
how long they have to address the issue, and what API they should use instead.
This is especially helpful when the user is applying a manifest they didn't create,
so they have time to reach out to the authors to ask for an updated version.
We also realized that the person *using* a deprecated API is often not the same person responsible for upgrading the cluster,
so we added two administrator-facing tools to help track use of deprecated APIs and determine when upgrades are safe.
### Metrics
Starting in Kubernetes v1.19, when a request is made to a deprecated REST API endpoint,
an `apiserver_requested_deprecated_apis` gauge metric is set to `1` in the kube-apiserver process.
This metric has labels for the API `group`, `version`, `resource`, and `subresource`,
and a `removed_version` label that indicates the Kubernetes release in which the API will no longer be served.
This is an example query using `kubectl`, [prom2json](https://github.com/prometheus/prom2json),
and [jq](https://stedolan.github.io/jq/) to determine which deprecated APIs have been requested
from the current instance of the API server:
```sh
kubectl get --raw /metrics | prom2json | jq '
.[] | select(.name=="apiserver_requested_deprecated_apis").metrics[].labels
'
```
Output:
```json
{
"group": "extensions",
"removed_release": "1.22",
"resource": "ingresses",
"subresource": "",
"version": "v1beta1"
}
{
"group": "rbac.authorization.k8s.io",
"removed_release": "1.22",
"resource": "clusterroles",
"subresource": "",
"version": "v1beta1"
}
```
This shows the deprecated `extensions/v1beta1` Ingress and `rbac.authorization.k8s.io/v1beta1` ClusterRole APIs
have been requested on this server, and will be removed in v1.22.
We can join that information with the `apiserver_request_total` metrics to get more details about the requests being made to these APIs:
```sh
kubectl get --raw /metrics | prom2json | jq '
# set $deprecated to a list of deprecated APIs
[
.[] |
select(.name=="apiserver_requested_deprecated_apis").metrics[].labels |
{group,version,resource}
] as $deprecated
|
# select apiserver_request_total metrics which are deprecated
.[] | select(.name=="apiserver_request_total").metrics[] |
select(.labels | {group,version,resource} as $key | $deprecated | index($key))
'
```
Output:
```json
{
"labels": {
"code": "0",
"component": "apiserver",
"contentType": "application/vnd.kubernetes.protobuf;stream=watch",
"dry_run": "",
"group": "extensions",
"resource": "ingresses",
"scope": "cluster",
"subresource": "",
"verb": "WATCH",
"version": "v1beta1"
},
"value": "21"
}
{
"labels": {
"code": "200",
"component": "apiserver",
"contentType": "application/vnd.kubernetes.protobuf",
"dry_run": "",
"group": "extensions",
"resource": "ingresses",
"scope": "cluster",
"subresource": "",
"verb": "LIST",
"version": "v1beta1"
},
"value": "1"
}
{
"labels": {
"code": "200",
"component": "apiserver",
"contentType": "application/json",
"dry_run": "",
"group": "rbac.authorization.k8s.io",
"resource": "clusterroles",
"scope": "cluster",
"subresource": "",
"verb": "LIST",
"version": "v1beta1"
},
"value": "1"
}
```
The output shows that only read requests are being made to these APIs, and the most requests have been made to watch the deprecated Ingress API.
You can also find that information through the following Prometheus query,
which returns information about requests made to deprecated APIs which will be removed in v1.22:
```promql
apiserver_requested_deprecated_apis{removed_version="1.22"} * on(group,version,resource,subresource)
group_right() apiserver_request_total
```
### Audit Annotations
Metrics are a fast way to check whether deprecated APIs are being used, and at what rate,
but they don't include enough information to identify particular clients or API objects.
Starting in Kubernetes v1.19, [audit events](/docs/tasks/debug-application-cluster/audit/)
for requests to deprecated APIs include an audit annotation of `"k8s.io/deprecated":"true"`.
Administrators can use those audit events to identify specific clients or objects that need to be updated.
## Custom Resource Definitions
Along with the API server ability to warn about deprecated API use, starting in v1.19, a CustomResourceDefinition can indicate a
[particular version of the resource it defines is deprecated](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definition-versioning/#version-deprecation).
When API requests to a deprecated version of a custom resource are made, a warning message is returned, matching the behavior of built-in APIs.
The author of the CustomResourceDefinition can also customize the warning for each version if they want to.
This allows them to give a pointer to a migration guide or other information if needed.
```yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
name: crontabs.example.com
spec:
versions:
- name: v1alpha1
# This indicates the v1alpha1 version of the custom resource is deprecated.
# API requests to this version receive a warning in the server response.
deprecated: true
# This overrides the default warning returned to clients making v1alpha1 API requests.
deprecationWarning: "example.com/v1alpha1 CronTab is deprecated; use example.com/v1 CronTab (see http://example.com/v1alpha1-v1)"
...
- name: v1beta1
# This indicates the v1beta1 version of the custom resource is deprecated.
# API requests to this version receive a warning in the server response.
# A default warning message is returned for this version.
deprecated: true
...
- name: v1
...
```
## Admission Webhooks
[Admission webhooks](/docs/reference/access-authn-authz/extensible-admission-controllers)
are the primary way to integrate custom policies or validation with Kubernetes.
Starting in v1.19, admission webhooks can [return warning messages](/docs/reference/access-authn-authz/extensible-admission-controllers/#response)
that are passed along to the requesting API client. Warnings can be returned with allowed or rejected admission responses.
As an example, to allow a request but warn about a configuration known not to work well, an admission webhook could send this response:
```json
{
"apiVersion": "admission.k8s.io/v1",
"kind": "AdmissionReview",
"response": {
"uid": "<value from request.uid>",
"allowed": true,
"warnings": [
".spec.memory: requests >1GB do not work on Fridays"
]
}
}
```
If you are implementing a webhook that returns a warning message, here are some tips:
* Don't include a "Warning:" prefix in the message (that is added by clients on output)
* Use warning messages to describe problems the client making the API request should correct or be aware of
* Be brief; limit warnings to 120 characters if possible
There are many ways admission webhooks could use this new feature, and I'm looking forward to seeing what people come up with.
Here are a couple ideas to get you started:
* webhook implementations adding a "complain" mode, where they return warnings instead of rejections,
to allow trying out a policy to verify it is working as expected before starting to enforce it
* "lint" or "vet"-style webhooks, inspecting objects and surfacing warnings when best practices are not followed
## Customize Client Handling
Applications that use the `k8s.io/client-go` library to make API requests can customize
how warnings returned from the server are handled. By default, warnings are logged to
stderr as they are received, but this behavior can be customized
[per-process](https://godoc.org/k8s.io/client-go/rest#SetDefaultWarningHandler)
or [per-client](https://godoc.org/k8s.io/client-go/rest#Config).
This example shows how to make your application behave like `kubectl`,
overriding message handling process-wide to deduplicate warnings
and highlighting messages using colored output where supported:
```go
import (
"os"
"k8s.io/client-go/rest"
"k8s.io/kubectl/pkg/util/term"
...
)
func main() {
rest.SetDefaultWarningHandler(
rest.NewWarningWriter(os.Stderr, rest.WarningWriterOptions{
// only print a given warning the first time we receive it
Deduplicate: true,
// highlight the output with color when the output supports it
Color: term.AllowsColorOutput(os.Stderr),
},
),
)
...
```
The next example shows how to construct a client that ignores warnings.
This is useful for clients that operate on metadata for all resource types
(found dynamically at runtime using the discovery API)
and do not benefit from warnings about a particular resource being deprecated.
Suppressing deprecation warnings is not recommended for clients that require use of particular APIs.
```go
import (
"k8s.io/client-go/rest"
"k8s.io/client-go/kubernetes"
)
func getClientWithoutWarnings(config *rest.Config) (kubernetes.Interface, error) {
// copy to avoid mutating the passed-in config
config = rest.CopyConfig(config)
// set the warning handler for this client to ignore warnings
config.WarningHandler = rest.NoWarnings{}
// construct and return the client
return kubernetes.NewForConfig(config)
}
```
## Kubectl Strict Mode
If you want to be sure you notice deprecations as soon as possible and get a jump start on addressing them,
`kubectl` added a `--warnings-as-errors` option in v1.19. When invoked with this option,
`kubectl` treats any warnings it receives from the server as errors and exits with a non-zero exit code:
<img alt="kubectl applying a manifest file with a --warnings-as-errors flag, displaying a warning message and exiting with a non-zero exit code."
src="kubectl-warnings-as-errors.png"
style="width:637px;max-width:100%;">
This could be used in a CI job to apply manifests to a current server,
and required to pass with a zero exit code in order for the CI job to succeed.
## Future Possibilities
Now that we have a way to communicate helpful information to users in context,
we're already considering other ways we can use this to improve people's experience with Kubernetes.
A couple areas we're looking at next are warning about [known problematic values](http://issue.k8s.io/64841#issuecomment-395141013)
we cannot reject outright for compatibility reasons, and warning about use of deprecated fields or field values
(like selectors using beta os/arch node labels, [deprecated in v1.14](/docs/reference/kubernetes-api/labels-annotations-taints/#beta-kubernetes-io-arch-deprecated)).
I'm excited to see progress in this area, continuing to make it easier to use Kubernetes.
---
_[Jordan Liggitt](https://twitter.com/liggitt) is a software engineer at Google, and helps lead Kubernetes authentication, authorization, and API efforts._
Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB

@@ -0,0 +1,56 @@
---
layout: blog
title: 'Introducing Structured Logs'
date: 2020-09-04
slug: kubernetes-1-19-Introducing-Structured-Logs
---
**Authors:** Marek Siarkowicz (Google), Nathan Beach (Google)
Logs are an essential aspect of observability and a critical tool for debugging. But Kubernetes logs have traditionally been unstructured strings, making any automated parsing difficult and any downstream processing, analysis, or querying challenging to do reliably.
In Kubernetes 1.19, we are adding support for structured logs, which natively support (key, value) pairs and object references. We have also updated many logging calls such that over 99% of logging volume in a typical deployment are now migrated to the structured format.
To maintain backwards compatibility, structured logs will still be outputted as a string where the string contains representations of those "key"="value" pairs. Starting in alpha in 1.19, logs can also be outputted in JSON format using the `--logging-format=json` flag.
## Using Structured Logs
We've added two new methods to the klog library: InfoS and ErrorS. For example, this invocation of InfoS:
```golang
klog.InfoS("Pod status updated", "pod", klog.KObj(pod), "status", status)
```
will result in this log:
```
I1025 00:15:15.525108 1 controller_utils.go:116] "Pod status updated" pod="kube-system/kubedns" status="ready"
```
Or, if the --logging-format=json flag is set, it will result in this output:
```json
{
"ts": 1580306777.04728,
"msg": "Pod status updated",
"pod": {
"name": "coredns",
"namespace": "kube-system"
},
"status": "ready"
}
```
This means downstream logging tools can easily ingest structured logging data and instead of using regular expressions to parse unstructured strings. This also makes processing logs easier, querying logs more robust, and analyzing logs much faster.
With structured logs, all references to Kubernetes objects are structured the same way, so you can filter the output and only log entries referencing the particular pod. You can also find logs indicating how the scheduler was scheduling the pod, how the pod was created, the health probes of the pod, and all other changes in the lifecycle of the pod.
Suppose you are debugging an issue with a pod. With structured logs, you can filter to only those log entries referencing the pod of interest, rather than needing to scan through potentially thousands of log lines to find the relevant ones.
Not only are structured logs more useful when manual debugging of issues, they also enable richer features like automated pattern recognition within logs or tighter correlation of log and trace data.
Finally, structured logs can help reduce storage costs for logs because most storage systems are more efficiently able to compress structured key=value data than unstructured strings.
## Get Involved
While we have updated over 99% of the log entries by log volume in a typical deployment, there are still thousands of logs to be updated. Pick a file or directory that you would like to improve and [migrate existing log calls to use structured logs](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-instrumentation/migration-to-structured-logging.md). It's a great and easy way to make your first contribution to Kubernetes!
@@ -0,0 +1,118 @@
---
layout: blog
title: "GSoC 2020 - Building operators for cluster addons"
date: 2020-09-16
slug: gsoc20-building-operators-for-cluster-addons
---
**Author**: Somtochi Onyekwere
# Introduction
[Google Summer of Code](https://summerofcode.withgoogle.com/) is a global program that is geared towards introducing students to open source. Students are matched with open-source organizations to work with them for three months during the summer.
My name is Somtochi Onyekwere from the Federal University of Technology, Owerri (Nigeria) and this year, I was given the opportunity to work with Kubernetes (under the CNCF organization) and this led to an amazing summer spent learning, contributing and interacting with the community.
Specifically, I worked on the _Cluster Addons: Package all the things!_ project. The project focused on building operators for better management of various cluster addons, extending the tooling for building these operators and making the creation of these operators a smooth process.
# Background
Kubernetes has progressed greatly in the past few years with a flourishing community and a large number of contributors. The codebase is gradually moving away from the monolith structure where all the code resides in the [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes) repository to being split into multiple sub-projects. Part of the focus of cluster-addons is to make some of these sub-projects work together in an easy to assemble, self-monitoring, self-healing and Kubernetes-native way. It enables them to work seamlessly without human intervention.
The community is exploring the use of operators as a mechanism to monitor various resources in the cluster and properly manage these resources. In addition to this, it provides self-healing and it is a kubernetes-native pattern that can encode how best these addons work and manage them properly.
What are cluster addons? Cluster addons are a collection of resources (like Services and deployment) that are used to give a Kubernetes cluster additional functionalities. They range from things as simple as the Kubernetes dashboards (for visualization) to more complex ones like Calico (for networking). These addons are essential to different applications running in the cluster and the cluster itself. The addon operator provides a nicer way of managing these addons and understanding the health and status of the various resources that comprise the addon. You can get a deeper overview in this [article](https://kubernetes.io/docs/concepts/overview/components/#addons).
Operators are custom controllers with custom resource definitions that encode application-specific knowledge and are used for managing complex stateful applications. It is a widely accepted pattern. Managing addons via operators, with these operators encoding knowledge of how best the addons work, introduces a lot of advantages while setting standards that will be easy to follow and scale. This [article](https://kubernetes.io/docs/concepts/extend-kubernetes/operator) does a good job of explaining operators.
The addon operators can solve a lot of problems, but they have their challenges. Those under the [cluster-addons project](https://github.com/kubernetes-sigs/cluster-addons) had missing pieces and were still a proof of concept. Generating the RBAC configuration for the operators was a pain and sometimes the operators were given too much privilege. The operators werent very extensible as it only pulled manifests from local filesystems or HTTP(s) servers and a lot of simple addons were generating the same code.
I spent the summer working on these issues, looking at them with fresh eyes and coming up with solutions for both the known and unknown issues.
# Various additions to kubebuilder-declarative-pattern
The [kubebuilder-declarative-pattern](https://github.com/kubernetes-sigs/kubebuilder-declarative-pattern) (from here on referred to as KDP) repo is an extra layer of addon specific tooling on top of the [kubebuilder](https://github.com/kubernetes-sigs/kubebuilder) SDK that is enabled by passing the experimental `--pattern=addon` flag to `kubebuilder create` command. Together, they create the base code for the addon operator. During the internship, I worked on a couple of features in KDP and cluster-addons.
## Operator version checking
Enabling version checks for operators helped in making upgrades/downgrades safer to different versions of the addon, even though the operator had complex logic. It is a way of matching the version of an addon to the version of the operator that knows how to manage it well. Most addons have different versions and these versions might need to be managed differently. This feature checks the custom resource for the `addons.k8s.io/min-operator-version` annotation which states the minimum operator version that is needed to manage the version against the version of the operator. If the operator version is below the minimum version required, the operator pauses with an error telling the user that the version of the operator is too low. This helps to ensure that the correct operator is being used for the addon.
## Git repository for storing the manifests
Previously, there was support for only local file directories and HTTPS repositories for storing manifests. Giving creators of addon operators the ability to store manifest in GitHub repository enables faster development and version control. When starting the controller, you can pass a flag to specify the location of your channels directory. The channels directory contains the manifests for different versions, the controller pulls the manifest from this directory and applies it to the cluster. During the internship period, I extended it to include Git repositories.
## Annotations to temporarily disable reconciliation
The reconciliation loop that ensures that the desired state matches the actual state prevents modification of objects in the cluster. This makes it hard to experiment or investigate what might be wrong in the cluster as any changes made are promptly reverted. I resolved this by allowing users to place an `addons.k8s.io/ignore` annotation on the resource that they dont want the controller to reconcile. The controller checks for this annotation and doesnt reconcile that object. To resume reconciliation, the annotation can be removed from the resource.
## Unstructured support in kubebuilder-declarative-pattern
One of the operators that I worked on is a generic controller that could manage more than one cluster addon that did not require extra configuration. To do this, the operator couldnt use a particular type and needed the kubebuilder-declarative-repo to support using the [unstructured.Unstructured](https://godoc.org/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured#Unstructured) type. There were various functions in the kubebuilder-declarative-pattern that couldnt handle this type and returned an error if the object passed in was not of type `addonsv1alpha1.CommonObject`. The functions were modified to handle both `unstructured.Unstructured` and `addonsv1alpha.CommonObject`.
# Tools and CLI programs
There were also some command-line programs I wrote that could be used to make working with addon operators easier. Most of them have uses outside the addon operators as they try to solve a specific problem that could surface anywhere while working with Kubernetes. I encourage you to [check them out](https://github.com/kubernetes-sigs/cluster-addons/tree/master/tools) when you have the chance!
## RBAC Generator
One of the biggest concerns with the operator was RBAC. You had to manually look through the manifest and add the RBAC rule for each resource as it needs to have RBAC permissions to create, get, update and delete the resources in the manifest when running in-cluster. Building the [RBAC generator](https://github.com/kubernetes-sigs/cluster-addons/blob/master/tools/rbac-gen) automated the process of writing the RBAC roles and role bindings. The function of the RBAC generator is simple. It accepts the file name of the manifest as a flag. Then, it parses the manifest and gets the API group and resource name of the resources and adds it to a role. It outputs the role and role binding to stdout or a file if the `--out` flag is parsed.
Additionally, the tool enables you to split the RBAC by separating the cluster roles in the manifest. This lessened the security concern of an operator being over-privileged as it needed to have all the permissions that the clusterrole has. If you want to apply the clusterrole yourself and not give the operator these permissions, you can pass in a `--supervisory` boolean flag so that the generator does not add these permissions to the role. The CLI program resides [here](https://github.com/kubernetes-sigs/cluster-addons/blob/master/tools/rbac-gen).
## Kubectl Ownerref
It is hard to find out at a glance which objects were created by an addon custom resource. This kubectl plugin alleviates that pain by displaying all the objects in the cluster that a resource has ownerrefs on. You simply pass the kind and the name of the resource as arguments to the program and it checks the cluster for the objects and gives the kind, name, the namespace of such an object. It could be useful to get a general overview of all the objects that the controller is reconciling by passing in the name and kind of custom resource. The CLI program resides [here](https://github.com/kubernetes-sigs/cluster-addons/tree/master/tools/kubectl-ownerref).
# Addon Operators
To fully understand addons operators and make changes to how they are being created, you have to try creating and using them. Part of the summer was spent building operators for some popular addons like the Kubernetes dashboard, flannel, NodeLocalDNS and so on. Please check the [cluster-addons](https://github.com/kubernetes-sigs/cluster-addons) repository for the different addon operators. In this section, I will just highlight one that is a little different from the others.
## Generic Controller
The generic controller can be shared between addons that dont require much configuration. This minimizes resource consumption on the cluster as it reduces the number of controllers that need to be run. Also instead of building your own operator, you can just use the generic controller and whenever you feel that your needs have grown and you need a more complex operator, you can always scaffold the code with kubebuilder and continue from where the generic operator stopped. To use the generic controller, you can generate the CustomResourceDefinition(CRD) using this tool ([generic-addon](https://github.com/kubernetes-sigs/cluster-addons/blob/master/tools/generic-addon/README.md)). You pass in the kind, group, and the location of your channels directory (it could be a Git repository too!). The tool generates the - CRD, RBAC manifest and two custom resources for you.
The process is as follows:
- Create the Generic CRD
- Generate all the manifests needed with the [`generic-addon tool`](https://github.com/kubernetes-sigs/cluster-addons/blob/master/tools/generic-addon/README.md).
This tool creates:
1. The CRD for your addon
2. The RBAC rules for the CustomResourceDefinitions
3. The RBAC rules for applying the manifests
4. The custom resource for your addon
5. A Generic custom resource
The Generic custom resource looks like this:
```yaml
apiVersion: addons.x-k8s.io/v1alpha1
kind: Generic
metadata:
name: generic-sample
spec:
objectKind:
kind: NodeLocalDNS
version: "v1alpha1"
group: addons.x-k8s.io
channel: "../nodelocaldns/channels"
```
Apply these manifests but ensure to apply the CRD before the CR.
Then, run the Generic controller, either on your machine or in-cluster.
If you are interested in building an operator, Please check out [this guide](https://github.com/kubernetes-sigs/cluster-addons/blob/master/dashboard/README.md).
# Relevant Links
- [Detailed breakdown of work done during the internship](https://github.com/SomtochiAma/gsoc-2020-meta-k8s)
- [Addon Operator (KEP)](https://github.com/kubernetes/enhancements/blob/master/keps/sig-cluster-lifecycle/addons/0035-20190128-addons-via-operators.md)
- [Original GSoC Issue](https://github.com/kubernetes-sigs/cluster-addons/issues/39)
- [Proposal Submitted for GSoC](https://github.com/SomtochiAma/gsoc-2020-meta-k8s/blob/master/GSoC%202020%20PROPOSAL%20-%20PACKAGE%20ALL%20THINGS.pdf)
- [All commits to kubernetes-sigs/cluster-addons](https://github.com/kubernetes-sigs/cluster-addons/commits?author=SomtochiAma)
- [All commits to kubernetes-sigs/kubebuidler-declarative-pattern](https://github.com/kubernetes-sigs/kubebuilder-declarative-pattern/commits?author=SomtochiAma)
# Further Work
A lot of work was definitely done on the cluster addons during the GSoC period. But we need more people building operators and using them in the cluster. We need wider adoption in the community. Build operators for your favourite addons and tell us how it went and if you had any issues. Check out this [README.md](https://github.com/kubernetes-sigs/cluster-addons/blob/master/dashboard/README.md) to get started.
# Appreciation
I really want to appreciate my mentors [Justin Santa Barbara](https://github.com/justinsb) (Google) and [Leigh Capili](https://github.com/stealthybox) (Weaveworks). My internship was awesome because they were awesome. They set a golden standard for what mentorship should be. They were accessible and always available to clear any confusion. I think what I liked best was that they didnt just dish out tasks, instead, we had open discussions about what was wrong and what could be improved. They are really the best and I hope I get to work with them again!
Also, I want to say a huge thanks to [Lubomir I. Ivanov](https://github.com/neolit123) for reviewing this blog post!
# Conclusion
So far I have learnt a lot about Go, the internals of Kubernetes, and operators. I want to conclude by encouraging people to contribute to open-source (especially Kubernetes :)) regardless of your level of experience. It has been a well-rounded experience for me and I have come to love the community. It is a great initiative and it is a great way to learn and meet awesome people. Special shoutout to Google for organizing this program.
If you are interested in cluster addons and finding out more on addon operators, you are welcome to join our slack channel on the Kubernetes [#cluster-addons](https://kubernetes.slack.com/messages/cluster-addons).
---
_[Somtochi Onyekwere](https://twitter.com/SomtochiAma) is a software engineer that loves contributing to open-source and exploring cloud native solutions._
@@ -0,0 +1,107 @@
---
title: "Contributing to the Development Guide"
linkTitle: "Contributing to the Development Guide"
Author: Erik L. Arneson
Description: "A new contributor describes the experience of writing and submitting changes to the Kubernetes Development Guide."
date: 2020-10-01
canonicalUrl: https://www.kubernetes.dev/blog/2020/09/28/contributing-to-the-development-guide/
resources:
- src: "jorge-castro-code-of-conduct.jpg"
title: "Jorge Castro announcing the Kubernetes Code of Conduct during a weekly SIG ContribEx meeting."
---
When most people think of contributing to an open source project, I suspect they probably think of
contributing code changes, new features, and bug fixes. As a software engineer and a long-time open
source user and contributor, that's certainly what I thought. Although I have written a good quantity
of documentation in different workflows, the massive size of the Kubernetes community was a new kind
of "client." I just didn't know what to expect when Google asked my compatriots and me at
[Lion's Way](https://lionswaycontent.com/) to make much-needed updates to the Kubernetes Development Guide.
*This article originally appeared on the [Kubernetes Contributor Community blog](https://www.kubernetes.dev/blog/2020/09/28/contributing-to-the-development-guide/).*
## The Delights of Working With a Community
As professional writers, we are used to being hired to write very specific pieces. We specialize in
marketing, training, and documentation for technical services and products, which can range anywhere from relatively fluffy marketing emails to deeply technical white papers targeted at IT and developers. With
this kind of professional service, every deliverable tends to have a measurable return on investment.
I knew this metric wouldn't be present when working on open source documentation, but I couldn't
predict how it would change my relationship with the project.
One of the primary traits of the relationship between our writing and our traditional clients is that we
always have one or two primary points of contact inside a company. These contacts are responsible
for reviewing our writing and making sure it matches the voice of the company and targets the
audience they're looking for. It can be stressful -- which is why I'm so glad that my writing
partner, eagle-eyed reviewer, and bloodthirsty editor [Joel](https://twitter.com/JoelByronBarker)
handles most of the client contact.
I was surprised and delighted that all of the stress of client contact went out the window when
working with the Kubernetes community.
"How delicate do I have to be? What if I screw up? What if I make a developer angry? What if I make
enemies?" These were all questions that raced through my mind and made me feel like I was
approaching a field of eggshells when I first joined the `#sig-contribex` channel on the Kubernetes
Slack and announced that I would be working on the
[Development Guide](https://github.com/kubernetes/community/blob/master/contributors/devel/development.md).
{{< imgproc jorge-castro-code-of-conduct Fit "800x450" >}}
"The Kubernetes Code of Conduct is in effect, so please be excellent to each other." &mdash; Jorge
Castro, SIG ContribEx co-chair
{{< /imgproc >}}
My fears were unfounded. Immediately, I felt welcome. I like to think this isn't just because I was
working on a much needed task, but rather because the Kubernetes community is filled
with friendly, welcoming people. During the weekly SIG ContribEx meetings, our reports on progress
with the Development Guide were included immediately. In addition, the leader of the meeting would
always stress that the [Kubernetes Code of Conduct](https://www.kubernetes.dev/resources/code-of-conduct/) was in
effect, and that we should, like Bill and Ted, be excellent to each other.
## This Doesn't Mean It's All Easy
The Development Guide needed a pretty serious overhaul. When we got our hands on it, it was already
packed with information and lots of steps for new developers to go through, but it was getting dusty
with age and neglect. Documentation can really require a global look, not just point fixes.
As a result, I ended up submitting a gargantuan pull request to the
[Community repo](https://github.com/kubernetes/community): 267 additions and 88 deletions.
The life cycle of a pull request requires a certain number of Kubernetes organization members to review and approve changes
before they can be merged. This is a great practice, as it keeps both documentation and code in
pretty good shape, but it can be tough to cajole the right people into taking the time for such a hefty
review. As a result, that massive PR took 26 days from my first submission to final merge. But in
the end, [it was successful](https://github.com/kubernetes/community/pull/5003).
Since Kubernetes is a pretty fast-moving project, and since developers typically aren't really
excited about writing documentation, I also ran into the problem that sometimes, the secret jewels
that describe the workings of a Kubernetes subsystem are buried deep within the [labyrinthine mind of
a brilliant engineer](https://github.com/amwat), and not in plain English in a Markdown file. I ran headlong into this issue
when it came time to update the getting started documentation for end-to-end (e2e) testing.
This portion of my journey took me out of documentation-writing territory and into the role of a
brand new user of some unfinished software. I ended up working with one of the developers of the new
[`kubetest2` framework](https://github.com/kubernetes-sigs/kubetest2) to document the latest process of
getting up-and-running for e2e testing, but it required a lot of head scratching on my part. You can
judge the results for yourself by checking out my
[completed pull request](https://github.com/kubernetes/community/pull/5045).
## Nobody Is the Boss, and Everybody Gives Feedback
But while I secretly expected chaos, the process of contributing to the Kubernetes Development Guide
and interacting with the amazing Kubernetes community went incredibly smoothly. There was no
contention. I made no enemies. Everybody was incredibly friendly and welcoming. It was *enjoyable*.
With an open source project, there is no one boss. The Kubernetes project, which approaches being
gargantuan, is split into many different special interest groups (SIGs), working groups, and
communities. Each has its own regularly scheduled meetings, assigned duties, and elected
chairpersons. My work intersected with the efforts of both SIG ContribEx (who watch over and seek to
improve the contributor experience) and SIG Testing (who are in charge of testing). Both of these
SIGs proved easy to work with, eager for contributions, and populated with incredibly friendly and
welcoming people.
In an active, living project like Kubernetes, documentation continues to need maintenance, revision,
and testing alongside the code base. The Development Guide will continue to be crucial to onboarding
new contributors to the Kubernetes code base, and as our efforts have shown, it is important that
this guide keeps pace with the evolution of the Kubernetes project.
Joel and I really enjoy interacting with the Kubernetes community and contributing to
the Development Guide. I really look forward to continuing to not only contributing more, but to
continuing to build the new friendships I've made in this vast open source community over the past
few months.
Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

@@ -0,0 +1,43 @@
---
layout: blog
title: "Announcing the 2020 Steering Committee Election Results"
date: 2020-10-12
slug: steering-committee-results-2020
---
**Author**: Kaslin Fields
The [2020 Steering Committee Election](https://github.com/kubernetes/community/tree/master/events/elections/2020) is now complete. In 2019, the committee arrived at its final allocation of 7 seats, 3 of which were up for election in 2020. Incoming committee members serve a term of 2 years, and all members are elected by the Kubernetes Community.
This community body is significant since it oversees the governance of the entire Kubernetes project. With that great power comes great responsibility. You can learn more about the steering committees role in their [charter](https://github.com/kubernetes/steering/blob/master/charter.md).
## Results
Congratulations to the elected committee members whose two year terms begin immediately (listed in alphabetical order by GitHub handle):
* **Davanum Srinivas ([@dims](https://github.com/dims)), VMware**
* **Jordan Liggitt ([@liggitt](https://github.com/liggitt)), Google**
* **Bob Killen ([@mrbobbytables](https://github.com/mrbobbytables)), Google**
They join continuing members Christoph Blecker ([@cblecker](https://github.com/cblecker)), Red Hat; Derek Carr ([@derekwaynecarr](https://github.com/derekwaynecarr)), Red Hat; Nikhita Raghunath ([@nikhita](https://github.com/nikhita)), VMware; and Paris Pittman ([@parispittman](https://github.com/parispittman)), Apple. Davanum Srinivas is returning for his second term on the committee.
## Big Thanks!
* Thank you and congratulations on a successful election to this rounds election officers:
* Jaice Singer DuMars ([@jdumars](https://github.com/jdumars)), Apple
* Ihor Dvoretskyi ([@idvoretskyi](https://github.com/idvoretskyi)), CNCF
* Josh Berkus ([@jberkus](https://github.com/jberkus)), Red Hat
* Thanks to the Emeritus Steering Committee Members. Your prior service is appreciated by the community:
* Aaron Crickenberger ([@spiffxp](https://github.com/spiffxp)), Google
* and Lachlan Evenson([@lachie8e)](https://github.com/lachie8e)), Microsoft
* And thank you to all the candidates who came forward to run for election. As [Jorge Castro put it](https://twitter.com/castrojo/status/1315718627639820288?s=20): we are spoiled with capable, kind, and selfless volunteers who put the needs of the project first.
## Get Involved with the Steering Committee
This governing body, like all of Kubernetes, is open to all. You can follow along with Steering Committee [backlog items](https://github.com/kubernetes/steering/projects/1) and weigh in by filing an issue or creating a PR against their [repo](https://github.com/kubernetes/steering). They have an open meeting on [the first Monday of the month at 6pm UTC](https://github.com/kubernetes/steering) and regularly attend Meet Our Contributors. They can also be contacted at their public mailing list steering@kubernetes.io.
You can see what the Steering Committee meetings are all about by watching past meetings on the [YouTube Playlist](https://www.youtube.com/playlist?list=PL69nYSiGNLP1yP1B_nd9-drjoxp0Q14qM).
----
_This post was written by the [Upstream Marketing Working Group](https://github.com/kubernetes/community/tree/master/communication/marketing-team#contributor-marketing). If you want to write stories about the Kubernetes community, learn more about us._
@@ -0,0 +1,16 @@
---
layout: blog
title: "Remembering Dan Kohn"
date: 2020-11-02
slug: remembering-dan-kohn
---
**Author**: The Kubernetes Steering Committee
Dan Kohn was instrumental in getting Kubernetes and CNCF community to where it is today. He shared our values, motivations, enthusiasm, community spirit, and helped the Kubernetes community to become the best that it could be. Dan loved getting people together to solve problems big and small. He enabled people to grow their individual scope in the community which often helped launch their career in open source software.
Dan built a coalition around the nascent Kubernetes project and turned that into a cornerstone to build the larger cloud native space. He loved challenges, especially ones where the payoff was great like building worldwide communities, spreading the love of open source, and helping diverse, underprivileged communities and students to get a head start in technology.
Our heart goes out to his family. Thank you, Dan, for bringing your boys to events in India and elsewhere as we got to know how great you were as a father. Dan, your thoughts and ideas will help us make progress in our journey as a community. Thank you for your life's work!
If Dan has made an impact on you in some way, please consider adding a memory of him in his [CNCF memorial](https://github.com/cncf/memorials/blob/master/dan-kohn.md).
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 66 KiB

@@ -0,0 +1,57 @@
---
layout: blog
title: "Cloud native security for your clusters"
date: 2020-11-18
slug: cloud-native-security-for-your-clusters
---
**Author**: [Pushkar Joglekar](https://twitter.com/pudijoglekar)
Over the last few years a small, security focused community has been working diligently to deepen our understanding of security, given the evolving cloud native infrastructure and corresponding iterative deployment practices. To enable sharing of this knowledge with the rest of the community, members of [CNCF SIG Security](https://github.com/cncf/sig-security) (a group which reports into [CNCF TOC](https://github.com/cncf/toc#sigs) and who are friends with [Kubernetes SIG Security](https://github.com/kubernetes/community/tree/master/sig-security)) led by Emily Fox, collaborated on a whitepaper outlining holistic cloud native security concerns and best practices. After over 1200 comments, changes, and discussions from 35 members across the world, we are proud to share [cloud native security whitepaper v1.0](https://www.cncf.io/blog/2020/11/18/announcing-the-cloud-native-security-white-paper) that serves as essential reading for security leadership in enterprises, financial and healthcare industries, academia, government, and non-profit organizations.
The paper attempts to _not_ focus on any specific [cloud native project](https://www.cncf.io/projects/). Instead, the intent is to model and inject security into four logical phases of cloud native application lifecycle: _Develop, Distribute, Deploy, and Runtime_.
<img alt="Cloud native application lifecycle phases"
src="cloud-native-app-lifecycle-phases.svg"
style="width:60em;max-width:100%;">
## Kubernetes native security controls
When using Kubernetes as a workload orchestrator, some of the security controls this version of the whitepaper recommends are:
* [Pod Security Policies](/docs/concepts/policy/pod-security-policy/): Implement a single source of truth for “least privilege” workloads across the entire cluster
* [Resource requests and limits](/docs/concepts/configuration/manage-resources-containers/#requests-and-limits): Apply requests (soft constraint) and limits (hard constraint) for shared resources such as memory and CPU
* [Audit log analysis](/docs/tasks/debug-application-cluster/audit/): Enable Kubernetes API auditing and filtering for security relevant events
* [Control plane authentication and certificate root of trust](/docs/concepts/architecture/control-plane-node-communication/): Enable mutual TLS authentication with a trusted CA for communication within the cluster
* [Secrets management](/docs/concepts/configuration/secret/): Integrate with a built-in or external secrets store
## Cloud native complementary security controls
Kubernetes has direct involvement in the _deploy_ phase and to a lesser extent in the _runtime_ phase. Ensuring the artifacts are securely _developed_ and _distributed_ is necessary for, enabling workloads in Kubernetes to run “secure by default”. Throughout all phases of the Cloud native application life cycle, several complementary security controls exist for Kubernetes orchestrated workloads, which includes but are not limited to:
* Develop:
- Image signing and verification
- Image vulnerability scanners
* Distribute:
- Pre-deployment checks for detecting excessive privileges
- Enabling observability and logging
* Deploy:
- Using a service mesh for workload authentication and authorization
- Enforcing “default deny” network policies for inter-workload communication via [network plugins](/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/)
* Runtime:
- Deploying security monitoring agents for workloads
- Isolating applications that run on the same node using SELinux, AppArmor, etc.
- Scanning configuration against recognized secure baselines for node, workload and orchestrator
## Understand first, secure next
The cloud native way, including containers, provides great security benefits for its users: immutability, modularity, faster upgrades and consistent state across the environment. Realizing this fundamental change in “the way things are done”, motivates us to look at security with a cloud native lens. One of the things that was evident for all the authors of the paper was the fact that its tough to make smarter decisions on how and what to secure in a cloud native ecosystem if you do not understand the tools, patterns, and frameworks at hand (in addition to knowing your own critical assets). Hence, for all the security practitioners out there who want to be partners rather than a gatekeeper for your friends in Operations, Product Development, and Compliance, lets make an attempt to _learn more so we can secure better_.
We recommend following this **7 step R.U.N.T.I.M.E. path** to get started on cloud native security:
1. <b>R</b>ead the paper and any linked material in it
2. <b>U</b>nderstand challenges and constraints for your environment
3. <b>N</b>ote the content and controls that apply to your environment
4. <b>T</b>alk about your observations with your peers
5. <b>I</b>nvolve your leadership and ask for help
6. <b>M</b>ake a risk profile based on existing and missing security controls
7. <b>E</b>xpend time, money, and resources that improve security posture and reduce risk where appropriate.
## Acknowledgements
Huge shout out to _Emily Fox, Tim Bannister (The Scale Factory), Chase Pettet (Mirantis), and Wayne Haber (GitLab)_ for contributing with their wonderful suggestions for this blog post.
@@ -0,0 +1,180 @@
---
layout: blog
title: "Dockershim Deprecation FAQ"
date: 2020-12-02
slug: dockershim-faq
aliases: [ '/dockershim' ]
---
This document goes over some frequently asked questions regarding the Dockershim
deprecation announced as a part of the Kubernetes v1.20 release. For more detail
on the deprecation of Docker as a container runtime for Kubernetes kubelets, and
what that means, check out the blog post
[Don't Panic: Kubernetes and Docker](/blog/2020/12/02/dont-panic-kubernetes-and-docker/).
### Why is dockershim being deprecated?
Maintaining dockershim has become a heavy burden on the Kubernetes maintainers.
The CRI standard was created to reduce this burden and allow smooth interoperability
of different container runtimes. Docker itself doesn't currently implement CRI,
thus the problem.
Dockershim was always intended to be a temporary solution (hence the name: shim).
You can read more about the community discussion and planning in the
[Dockershim Removal Kubernetes Enhancement Proposal][drkep].
Additionally, features that were largely incompatible with the dockershim, such
as cgroups v2 and user namespaces are being implemented in these newer CRI
runtimes. Removing support for the dockershim will allow further development in
those areas.
[drkep]: https://github.com/kubernetes/enhancements/tree/master/keps/sig-node/1985-remove-dockershim
### Can I still use Docker in Kubernetes 1.20?
Yes, the only thing changing in 1.20 is a single warning log printed at [kubelet]
startup if using Docker as the runtime.
[kubelet]: /docs/reference/command-line-tools-reference/kubelet/
### When will dockershim be removed?
Given the impact of this change, we are using an extended deprecation timeline.
It will not be removed before Kubernetes 1.22, meaning the earliest release without
dockershim would be 1.23 in late 2021. We will be working closely with vendors
and other ecosystem groups to ensure a smooth transition and will evaluate things
as the situation evolves.
### Will my existing Docker images still work?
Yes, the images produced from `docker build` will work with all CRI implementations.
All your existing images will still work exactly the same.
### What about private images?
Also yes. All CRI runtimes support the same pull secrets configuration used in
Kubernetes, either via the PodSpec or ServiceAccount.
### Are Docker and containers the same thing?
Docker popularized the Linux containers pattern and has been instrumental in
developing the underlying technology, however containers in Linux have existed
for a long time. The container ecosystem has grown to be much broader than just
Docker. Standards like OCI and CRI have helped many tools grow and thrive in our
ecosystem, some replacing aspects of Docker while others enhance existing
functionality.
### Are there examples of folks using other runtimes in production today?
All Kubernetes project produced artifacts (Kubernetes binaries) are validated
with each release.
Additionally, the [kind] project has been using containerd for some time and has
seen an improvement in stability for its use case. Kind and containerd are leveraged
multiple times every day to validate any changes to the Kubernetes codebase. Other
related projects follow a similar pattern as well, demonstrating the stability and
usability of other container runtimes. As an example, OpenShift 4.x has been
using the [CRI-O] runtime in production since June 2019.
For other examples and references you can look at the adopters of containerd and
cri-o, two container runtimes under the Cloud Native Computing Foundation ([CNCF]).
- [containerd](https://github.com/containerd/containerd/blob/master/ADOPTERS.md)
- [CRI-O](https://github.com/cri-o/cri-o/blob/master/ADOPTERS.md)
[CRI-O]: https://cri-o.io/
[kind]: https://kind.sigs.k8s.io/
[CNCF]: https://cncf.io
### People keep referencing OCI, what is that?
OCI stands for the [Open Container Initiative], which standardized many of the
interfaces between container tools and technologies. They maintain a standard
specification for packaging container images (OCI image-spec) and running containers
(OCI runtime-spec). They also maintain an actual implementation of the runtime-spec
in the form of [runc], which is the underlying default runtime for both
[containerd] and [CRI-O]. The CRI builds on these low-level specifications to
provide an end-to-end standard for managing containers.
[Open Container Initiative]: https://opencontainers.org/about/overview/
[runc]: https://github.com/opencontainers/runc
[containerd]: https://containerd.io/
### Which CRI implementation should I use?
Thats a complex question and it depends on a lot of factors. If Docker is
working for you, moving to containerd should be a relatively easy swap and
has have strictly better performance and less overhead. However we encourage you
to explore all the options from the [CNCF landscape] in case another would be an
even better fit for your environment.
[CNCF landscape]: https://landscape.cncf.io/category=container-runtime&format=card-mode&grouping=category
### What should I look out for when changing CRI implementations?
While the underlying containerization code is the same between Docker and most
CRIs (including containerd), there are a few differences around the edges. Some
common things to consider when migrating are:
- Logging configuration
- Runtime resource limitations
- Node provisioning scripts that call docker or use docker via it's control socket
- Kubectl plugins that require docker CLI or the control socket
- Kubernetes tools that require direct access to Docker (e.g. kube-imagepuller)
- Configuration of functionality like `registry-mirrors` and insecure registries
- Other support scripts or daemons that expect docker to be available and are run
outside of Kubernetes (e.g. monitoring or security agents)
- GPUs or special hardware and how they integrate with your runtime and Kubernetes
If you use Kubernetes resource requests/limits or file-based log collection
DaemonSets then they will continue to work the same, but if youve customized
your dockerd configuration, youll need to adapt that for your new container
runtime where possible.
Another thing to look out for is anything expecting to run for system maintenance
or nested inside a container when building images will no longer work. For the
former, you can use the [`crictl`][cr] tool as a drop-in replacement and for the
latter you can use newer container build options like [img], [buildah], or
[kaniko] that dont require Docker.
[cr]: https://github.com/kubernetes-sigs/cri-tools
[img]: https://github.com/genuinetools/img
[buildah]: https://github.com/containers/buildah
[kaniko]: https://github.com/GoogleContainerTools/kaniko
For containerd, you can start with their [documentation] to see what configuration
options are available as you migrate things over.
[documentation]: https://github.com/containerd/cri/blob/master/docs/registry.md
For instructions on how to use containerd and CRI-O with Kubernetes, see the
Kubernetes documentation on [Container Runtimes]
[Container Runtimes]: /docs/setup/production-environment/container-runtimes
### What if I have more questions?
If you use a vendor-supported Kubernetes distribution, you can ask them about
upgrade plans for their products. For end-user questions, please post them
to our end user community forum: https://discuss.kubernetes.io/.
You can also check out the excellent blog post
[Wait, Docker is deprecated in Kubernetes now?][dep] a more in-depth technical
discussion of the changes.
[dep]: https://dev.to/inductor/wait-docker-is-deprecated-in-kubernetes-now-what-do-i-do-e4m
### Can I have a hug?
Always and whenever you want! 🤗🤗
@@ -0,0 +1,104 @@
---
layout: blog
title: "Don't Panic: Kubernetes and Docker"
date: 2020-12-02
slug: dont-panic-kubernetes-and-docker
---
**Authors:** Jorge Castro, Duffie Cooley, Kat Cosgrove, Justin Garrison, Noah Kantrowitz, Bob Killen, Rey Lejano, Dan “POP” Papandrea, Jeffrey Sica, Davanum “Dims” Srinivas
Kubernetes is [deprecating
Docker](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md#deprecation)
as a container runtime after v1.20.
**You do not need to panic. Its not as dramatic as it sounds.**
tl;dr Docker as an underlying runtime is being deprecated in favor of runtimes
that use the [Container Runtime Interface(CRI)](https://kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-kubernetes/)
created for Kubernetes. Docker-produced images will continue to work in your
cluster with all runtimes, as they always have.
If youre an end-user of Kubernetes, not a whole lot will be changing for you.
This doesnt mean the death of Docker, and it doesnt mean you cant, or
shouldnt, use Docker as a development tool anymore. Docker is still a useful
tool for building containers, and the images that result from running `docker
build` can still run in your Kubernetes cluster.
If youre using a managed Kubernetes service like GKE, EKS, or AKS (which [defaults to containerd](https://github.com/Azure/AKS/releases/tag/2020-11-16)) you will need to
make sure your worker nodes are using a supported container runtime before
Docker support is removed in a future version of Kubernetes. If you have node
customizations you may need to update them based on your environment and runtime
requirements. Please work with your service provider to ensure proper upgrade
testing and planning.
If youre rolling your own clusters, you will also need to make changes to avoid
your clusters breaking. At v1.20, you will get a deprecation warning for Docker.
When Docker runtime support is removed in a future release (currently planned
for the 1.22 release in late 2021) of Kubernetes it will no longer be supported
and you will need to switch to one of the other compliant container runtimes,
like containerd or CRI-O. Just make sure that the runtime you choose supports
the docker daemon configurations you currently use (e.g. logging).
## So why the confusion and what is everyone freaking out about?
Were talking about two different environments here, and thats creating
confusion. Inside of your Kubernetes cluster, theres a thing called a container
runtime thats responsible for pulling and running your container images. Docker
is a popular choice for that runtime (other common options include containerd
and CRI-O), but Docker was not designed to be embedded inside Kubernetes, and
that causes a problem.
You see, the thing we call “Docker” isnt actually one thing -- its an entire
tech stack, and one part of it is a thing called “containerd,” which is a
high-level container runtime by itself. Docker is cool and useful because it has
a lot of UX enhancements that make it really easy for humans to interact with
while were doing development work, but those UX enhancements arent necessary
for Kubernetes, because it isnt a human.
As a result of this human-friendly abstraction layer, your Kubernetes cluster
has to use another tool called Dockershim to get at what it really needs, which
is containerd. Thats not great, because it gives us another thing that has to
be maintained and can possibly break. Whats actually happening here is that
Dockershim is being removed from Kubelet as early as v1.23 release, which
removes support for Docker as a container runtime as a result. You might be
thinking to yourself, but if containerd is included in the Docker stack, why
does Kubernetes need the Dockershim?
Docker isnt compliant with CRI, the [Container Runtime Interface](https://kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-kubernetes/).
If it were, we wouldnt need the shim, and this wouldnt be a thing. But its
not the end of the world, and you dont need to panic -- you just need to change
your container runtime from Docker to another supported container runtime.
One thing to note: If you are relying on the underlying docker socket
(/var/run/docker.sock) as part of a workflow within your cluster today, moving
to a different runtime will break your ability to use it. This pattern is often
called Docker in Docker. There are lots of options out there for this specific
use case including things like
[kaniko](https://github.com/GoogleContainerTools/kaniko),
[img](https://github.com/genuinetools/img), and
[buildah](https://github.com/containers/buildah).
## What does this change mean for developers, though? Do we still write Dockerfiles? Do we still build things with Docker?
This change addresses a different environment than most folks use to interact
with Docker. The Docker installation youre using in development is unrelated to
the Docker runtime inside your Kubernetes cluster. Its confusing, I know. As a
developer, Docker is still useful to you in all the ways it was before this
change was announced. The image that Docker produces isnt really a
Docker-specific image -- its an OCI ([Open Container Initiative](https://opencontainers.org/)) image.
Any OCI-compliant image, regardless of the tool you use to build it, will look
the same to Kubernetes. Both [containerd](https://containerd.io/) and
[CRI-O](https://cri-o.io/) know how to pull those images and run them. This is
why we have a standard for what containers should look like.
So, this change is coming. Its going to cause issues for some, but it isnt
catastrophic, and generally its a good thing. Depending on how you interact
with Kubernetes, this could mean nothing to you, or it could mean a bit of work.
In the long run, its going to make things easier. If this is still confusing
for you, thats okay -- theres a lot going on here, Kubernetes has a lot of
moving parts, and nobody is an expert in 100% of it. We encourage any and all
questions regardless of experience level or complexity! Our goal is to make sure
everyone is educated as much as possible on the upcoming changes. `<3` We hope
this has answered most of your questions and soothed some anxieties!
Looking for more answers? Check out our accompanying [Dockershim Deprecation FAQ](/blog/2020/12/02/dockershim-faq/).
@@ -0,0 +1,92 @@
---
layout: blog
title: "GSoD 2020: Improving the API Reference Experience"
date: 2020-12-04
slug: gsod-2020-improving-api-reference-experience
---
**Author**: [Philippe Martin](https://github.com/feloy)
_Editor's note: Better API references have been my goal since I joined Kubernetes docs three and a half years ago. Philippe has succeeded fantastically. More than a better API reference, though, Philippe embodied the best of the Kubernetes community in this project: excellence through collaboration, and a process that made the community itself better. Thanks, Google Season of Docs, for making Philippe's work possible. —Zach Corleissen_
## Introduction
The [Google Season of Docs](https://developers.google.com/season-of-docs) project brings open source organizations and technical writers together to work closely on a specific documentation project.
I was selected by the CNCF to work on Kubernetes documentation, specifically to make the API Reference documentation more accessible.
I'm a software developer with a great interest in documentation systems. In the late 90's I started translating Linux-HOWTO documents into French. From one thing to another, I learned about documentation systems. Eventually, I wrote a Linux-HOWTO to help documentarians learn the language used at that time for writing documents, LinuxDoc/SGML.
Shortly afterward, Linux documentation adopted the DocBook language. I helped some writers rewrite their documents in this format; for example, the Advanced Bash-Scripting Guide. I also worked on the GNU `makeinfo` program to add DocBook output, making it possible to transform *GNU Info* documentation into Docbook format.
## Background
The [Kubernetes website](https://kubernetes.io/docs/home/) is built with Hugo from documentation written in Markdown format in the [website repository](https://github.com/kubernetes/website), using the [Docsy Hugo theme](https://www.docsy.dev/about/).
The existing API reference documentation is a large HTML file generated from the Kubernetes OpenAPI specification.
On my side, I wanted for some time to make the API Reference more accessible, by:
- building individual and autonomous pages for each Kubernetes resource
- adapting the format to mobile reading
- reusing the website's assets and theme to build, integrate, and display the reference pages
- allowing the search engines to reference the content of the pages
Around one year ago, I started to work on the generator building the current unique HTML page, to add a DocBook output, so the API Reference could be generated first in DocBook format, and after that in PDF or other formats supported by DocBook processors. The first result has been some [Ebook files for the API Reference](https://github.com/feloy/kubernetes-resources-reference/releases) and an auto-edited paper book.
I decided later to add another output to this generator, to generate Markdown files and create [a website with the API Reference](https://web.archive.org/web/20201022201911/https://www.k8sref.io/docs/workloads/).
When the CNCF proposed a project for the Google Season of Docs to work on the API Reference, I applied, and the match occurred.
## The Project
### swagger-ui
The first idea of the CNCF members that proposed this project was to test the [`swagger-ui` tool](https://swagger.io/tools/swagger-ui/), to try and document the Kubernetes API Reference with this standard tool.
Because the Kubernetes API is much larger than many other APIs, it has been necessary to write a tool to split the complete API Reference by API Groups, and insert in the Documentation website several `swagger-ui` components, one for each API Group.
Generally, APIs are used by developers by calling endpoints with a specific HTTP verb, with specific parameters and waiting for a response. The `swagger-ui` interface is built for this usage: the interface displays a list of endpoints and their associated verbs, and for each the parameters and responses formats.
The Kubernetes API is most of the time used differently: users create manifest files containing resources definitions in YAML format, and use the `kubectl` CLI to *apply* these manifests to the cluster. In this case, the most important information is the description of the structures used as parameters and responses (the Kubernetes Resources).
Because of this specificity, we realized that it would be difficult to adapt the `swagger-ui` interface to satisfy the users of the Kubernetes API and this direction has been abandoned.
### Markdown pages
The second stage of the project has been to adapt the work I had done to create the k8sref.io website, to include it in the official documentation website.
The main changes have been to:
- use go-templates to represent the output pages, so non-developers can adapt the generated pages without having to edit the generator code
- create a new custom [shortcode](https://gohugo.io/content-management/shortcodes/), to easily create links from inside the website to specific pages of the API reference
- improve the navigation between the sections of the API reference
- add the code of the generator to the Kubernetes GitHub repository containing the different reference generators
All the discussions and work done can be found in website [pull request #23294](https://github.com/kubernetes/website/pull/23294).
Adding the generator code to the Kubernetes project happened in [kubernetes-sigs/reference-docs#179](https://github.com/kubernetes-sigs/reference-docs/pull/179).
Here are the features of the new API Reference to be included in the official documentation website:
- the resources are categorized, in the categories Workloads, Services, Config & Storage, Authentication, Authorization, Policies, Extend, Cluster. This structure is configurable with a simple [`toc.yaml` file](https://github.com/kubernetes-sigs/reference-docs/blob/master/gen-resourcesdocs/config/v1.20/toc.yaml)
- each page displays associated resources at the first level ; for example: Pod, PodSpec, PodStatus, PodList
- most resource pages inline relevant definitions ; the exceptions are when those definitions are common to several resources, or are too complex to be displayed inline. With the old approach, you had to follow a hyperlink to read each extra detail.
- some widely used definitions, such as `ObjectMeta`, are documented in a specific page
- required fields are indicated, and placed first
- fields of a resource can be categorized and ordered, with the help of a [`fields.yaml` file](https://github.com/kubernetes-sigs/reference-docs/blob/master/gen-resourcesdocs/config/v1.20/fields.yaml)
- `map` fields are indicated. For example the `.spec.nodeSelector` for a `Pod` is `map[string]string`, instead of `object`, using the value of `x-kubernetes-list-type`
- patch strategies are indicated
- `apiVersion` and `kind` display the value, not the `string` type
- At the top of a reference page, the page displays the Go import necessary to use these resources from a Go program.
The work is currently on hold pending the 1.20 release. When the release finishes and the work is integrated, the API reference will be available at https://kubernetes.io/docs/reference/.
### Future Work
There are points to improve, particularly:
- Some Kubernetes resources are deeply nested. Inlining the definition of these resources makes them difficult to understand.
- The created `shortcode` uses the URL of the page to reference a Resource page. It would be easier for documentarians if they could reference a Resource by its group and name.
## Appreciation
I would like to thank my mentor [Zach Corleissen](https://github.com/zacharysarah) and the lead writers [Karen Bradshaw](https://github.com/kbhawkey), [Celeste Horgan](https://github.com/celestehorgan), [Tim Bannister](https://github.com/sftim) and [Qiming Teng](https://github.com/tengqm) who supervised me during all the season. They all have been very encouraging and gave me tons of great advice.
+49 -81
View File
@@ -3,116 +3,84 @@ title: Adform Case Study
linkTitle: Adform
case_study_styles: true
cid: caseStudies
css: /css/style_case_studies.css
logo: adform_featured_logo.png
draft: false
featured: true
weight: 47
quote: >
Kubernetes enabled the self-healing and immutable infrastructure. We can do faster releases, so our developers are really happy. They can ship our features faster than before, and that makes our clients happier.
new_case_study_styles: true
heading_background: /images/case-studies/adform/banner1.jpg
heading_title_logo: /images/adform_logo.png
subheading: >
Improving Performance and Morale with Cloud Native
case_study_details:
- Company: AdForm
- Location: Copenhagen, Denmark
- Industry: Adtech
---
<div class="banner1 desktop" style="background-image: url('/images/case-studies/adform/banner1.jpg')">
<h1> CASE STUDY:<img src="/images/adform_logo.png" style="width:15%;margin-bottom:0%" class="header_logo"><br> <div class="subhead">Improving Performance and Morale with Cloud Native
<h2>Challenge</h2>
</div></h1>
<p><a href="https://site.adform.com/">Adform's</a> mission is to provide a secure and transparent full stack of advertising technology to enable digital ads across devices. The company has a large infrastructure: <a href="https://www.openstack.org/">OpenStack</a>-based private clouds running on 1,100 physical servers in 7 data centers around the world, 3 of which were opened in the past year. With the company's growth, the infrastructure team felt that "our private cloud was not really flexible enough," says IT System Engineer Edgaras Apšega. "The biggest pain point is that our developers need to maintain their virtual machines, so rolling out technology and new software takes time. We were really struggling with our releases, and we didn't have self-healing infrastructure."</p>
</div>
<h2>Solution</h2>
<div class="details">
Company &nbsp;<b>AdForm</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Copenhagen, Denmark</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Adtech</b>
</div>
<hr>
<section class="section1">
<div class="cols">
<div class="col1">
<h2>Challenge</h2>
<a href="https://site.adform.com/">Adforms</a> mission is to provide a secure and transparent full stack of advertising technology to enable digital ads across devices. The company has a large infrastructure: <a href="https://www.openstack.org/">OpenStack</a>-based private clouds running on 1,100 physical servers in 7 data centers around the world, 3 of which were opened in the past year. With the companys growth, the infrastructure team felt that "our private cloud was not really flexible enough," says IT System Engineer Edgaras Apšega. "The biggest pain point is that our developers need to maintain their virtual machines, so rolling out technology and new software takes time. We were really struggling with our releases, and we didnt have self-healing infrastructure."
<br>
<h2>Solution</h2>
The team, which had already been using <a href="https://prometheus.io/">Prometheus</a> for monitoring, embraced <a href="https://kubernetes.io/">Kubernetes</a> and cloud native practices in 2017. "To start our Kubernetes journey, we had to adapt all our software, so we had to choose newer frameworks," says Apšega. "We also adopted the microservices way, so observability is much better because you can inspect the bug or the services separately."
</div>
<div class="col2">
<p>The team, which had already been using <a href="https://prometheus.io/">Prometheus</a> for monitoring, embraced <a href="https://kubernetes.io/">Kubernetes</a> and cloud native practices in 2017. "To start our Kubernetes journey, we had to adapt all our software, so we had to choose newer frameworks," says Apšega. "We also adopted the microservices way, so observability is much better because you can inspect the bug or the services separately."</p>
<h2>Impact</h2>
"Kubernetes helps our business a lot because our features are coming to market faster," says Apšega. The release process went from several hours to several minutes. Autoscaling has been at least 6 times faster than the semi-manual VM bootstrapping and application deployment required before. The team estimates that the company has experienced cost savings of 4-5x due to less hardware and fewer man hours needed to set up the hardware and virtual machines, metrics, and logging. Utilization of the hardware resources has been reduced as well, with containers notching 2-3 times more efficiency over virtual machines. "The deployments are very easy because developers just push the code and it automatically appears on Kubernetes," says Apšega. Prometheus has also had a positive impact: "It provides high availability for metrics and alerting. We monitor everything starting from hardware to applications. Having all the metrics in <a href="https://grafana.com/">Grafana</a> dashboards provides great insight on your systems."
<p>"Kubernetes helps our business a lot because our features are coming to market faster," says Apšega. The release process went from several hours to several minutes. Autoscaling has been at least 6 times faster than the semi-manual VM bootstrapping and application deployment required before. The team estimates that the company has experienced cost savings of 4-5x due to less hardware and fewer man hours needed to set up the hardware and virtual machines, metrics, and logging. Utilization of the hardware resources has been reduced as well, with containers notching 2-3 times more efficiency over virtual machines. "The deployments are very easy because developers just push the code and it automatically appears on Kubernetes," says Apšega. Prometheus has also had a positive impact: "It provides high availability for metrics and alerting. We monitor everything starting from hardware to applications. Having all the metrics in <a href="https://grafana.com/">Grafana</a> dashboards provides great insight on your systems."</p>
</div>
{{< case-studies/quote author="Edgaras Apšega, IT Systems Engineer, Adform" >}}
"Kubernetes enabled the self-healing and immutable infrastructure. We can do faster releases, so our developers are really happy. They can ship our features faster than before, and that makes our clients happier."
{{< /case-studies/quote >}}
</div>
</section>
<div class="banner2">
<div class="banner2text">
"Kubernetes enabled the self-healing and immutable infrastructure. We can do faster releases, so our developers are really happy. They can ship our features faster than before, and that makes our clients happier."<span style="font-size:14px;letter-spacing:0.12em;padding-top:20px;text-transform:uppercase;line-height:14px"><br><br>— Edgaras Apšega, IT Systems Engineer, Adform</span>
{{< case-studies/lead >}}
Adform made <a href="https://www.wsj.com/articles/fake-ad-operation-used-to-steal-from-publishers-is-uncovered-1511290981">headlines</a> last year when it detected the HyphBot ad fraud network that was costing some businesses hundreds of thousands of dollars a day.
{{< /case-studies/lead >}}
</div>
</div>
<p>With its mission to provide a secure and transparent full stack of advertising technology to enable an open internet, Adform published a <a href="https://site.adform.com/media/85132/hyphbot_whitepaper_.pdf">white paper</a> revealing what it did—and others could too—to limit customers' exposure to the scam.</p>
<p>In that same spirit, Adform is sharing its cloud native journey. "When you see that everyone shares their best practices, it inspires you to contribute back to the project," says IT Systems Engineer Edgaras Apšega.</p>
<section class="section2">
<div class="fullcol">
<h2>Adform made <a href="https://www.wsj.com/articles/fake-ad-operation-used-to-steal-from-publishers-is-uncovered-1511290981">headlines</a> last year when it detected the HyphBot ad fraud network that was costing some businesses hundreds of thousands of dollars a day.</h2>With its mission to provide a secure and transparent full stack of advertising technology to enable an open internet, Adform published a <a href="https://site.adform.com/media/85132/hyphbot_whitepaper_.pdf">white paper</a> revealing what it did—and others could too—to limit customers exposure to the scam. <br><br>
In that same spirit, Adform is sharing its cloud native journey. "When you see that everyone shares their best practices, it inspires you to contribute back to the project," says IT Systems Engineer Edgaras Apšega.<br><br>
The company has a large infrastructure: <a href="https://www.openstack.org/">OpenStack</a>-based private clouds running on 1,100 physical servers in their own seven data centers around the world, three of which were opened in the past year. With the companys growth, the infrastructure team felt that "our private cloud was not really flexible enough," says Apšega. "The biggest pain point is that our developers need to maintain their virtual machines, so rolling out technology and new software really takes time. We were really struggling with our releases, and we didnt have self-healing infrastructure."
<p>The company has a large infrastructure: <a href="https://www.openstack.org/">OpenStack</a>-based private clouds running on 1,100 physical servers in their own seven data centers around the world, three of which were opened in the past year. With the company's growth, the infrastructure team felt that "our private cloud was not really flexible enough," says Apšega. "The biggest pain point is that our developers need to maintain their virtual machines, so rolling out technology and new software really takes time. We were really struggling with our releases, and we didn't have self-healing infrastructure."</p>
{{< case-studies/quote
image="/images/case-studies/adform/banner3.jpg"
author="Edgaras Apšega, IT Systems Engineer, Adform"
>}}
"The fact that Cloud Native Computing Foundation incubated Kubernetes was a really big point for us because it was vendor neutral. And we can see that a community really gathers around it. Everyone shares their experiences, their knowledge, and the fact that it's open source, you can contribute."
{{< /case-studies/quote >}}
</div>
</section>
<div class="banner3" style="background-image: url('/images/case-studies/adform/banner3.jpg')">
<div class="banner3text">
"The fact that Cloud Native Computing Foundation incubated Kubernetes was a really big point for us because it was vendor neutral. And we can see that a community really gathers around it. Everyone shares their experiences, their knowledge, and the fact that its open source, you can contribute."<span style="font-size:14px;letter-spacing:0.12em;padding-top:20px;text-transform:uppercase;line-height:14px"><br><br>— Edgaras Apšega, IT Systems Engineer, Adform</span>
</div>
</div>
<section class="section3">
<div class="fullcol">
<p>The team, which had already been using Prometheus for monitoring, embraced Kubernetes, microservices, and cloud native practices. "The fact that Cloud Native Computing Foundation incubated Kubernetes was a really big point for us because it was vendor neutral," says Apšega. "And we can see that a community really gathers around it."</p>
The team, which had already been using Prometheus for monitoring, embraced Kubernetes, microservices, and cloud native practices. "The fact that Cloud Native Computing Foundation incubated Kubernetes was a really big point for us because it was vendor neutral," says Apšega. "And we can see that a community really gathers around it."<br><br>
A proof of concept project was started, with a Kubernetes cluster running on bare metal in the data center. When developers saw how quickly containers could be spun up compared to the virtual machine process, "they wanted to ship their containers in production right away, and we were still doing proof of concept," says IT Systems Engineer Andrius Cibulskis.
Of course, a lot of work still had to be done. "First of all, we had to learn Kubernetes, see all of the moving parts, how they glue together," says Apšega. "Second of all, the whole CI/CD part had to be redone, and our DevOps team had to invest more man hours to implement it. And third is that developers had to rewrite the code, and theyre still doing it."
<br><br>
The first production cluster was launched in the spring of 2018, and is now up to 20 physical machines dedicated for pods throughout three data centers, with plans for separate clusters in the other four data centers. The user-facing Adform application platform, data distribution platform, and back ends are now all running on Kubernetes. "Many APIs for critical applications are being developed for Kubernetes," says Apšega. "Teams are rewriting their applications to .NET core, because it supports containers, and preparing to move to Kubernetes. And new applications, by default, go in containers."
<p>A proof of concept project was started, with a Kubernetes cluster running on bare metal in the data center. When developers saw how quickly containers could be spun up compared to the virtual machine process, "they wanted to ship their containers in production right away, and we were still doing proof of concept," says IT Systems Engineer Andrius Cibulskis.</p>
<p>Of course, a lot of work still had to be done. "First of all, we had to learn Kubernetes, see all of the moving parts, how they glue together," says Apšega. "Second of all, the whole CI/CD part had to be redone, and our DevOps team had to invest more man hours to implement it. And third is that developers had to rewrite the code, and they're still doing it."</p>
</div>
</section>
<div class="banner4" style="background-image: url('/images/case-studies/adform/banner4.jpg')">
<div class="banner4text">
"Releases are really nice for them, because they just push their code to Git and thats it. They dont have to worry about their virtual machines anymore." <span style="font-size:14px;letter-spacing:0.12em;padding-top:20px;text-transform:uppercase;line-height:14px"><br><br>— Andrius Cibulskis, IT Systems Engineer, Adform</span>
</div>
</div>
<p>The first production cluster was launched in the spring of 2018, and is now up to 20 physical machines dedicated for pods throughout three data centers, with plans for separate clusters in the other four data centers. The user-facing Adform application platform, data distribution platform, and back ends are now all running on Kubernetes. "Many APIs for critical applications are being developed for Kubernetes," says Apšega. "Teams are rewriting their applications to .NET core, because it supports containers, and preparing to move to Kubernetes. And new applications, by default, go in containers."</p>
<section class="section5">
<div class="fullcol">
This big push has been driven by the real impact that these new practices have had. "Kubernetes helps our business a lot because our features are coming to market faster," says Apšega. "The deployments are very easy because developers just push the code and it automatically appears on Kubernetes." The release process went from several hours to several minutes. Autoscaling is at least six times faster than the semi-manual VM bootstrapping and application deployment required before. <br><br>
The team estimates that the company has experienced cost savings of 4-5x due to less hardware and fewer man hours needed to set up the hardware and virtual machines, metrics, and logging. Utilization of the hardware resources has been reduced as well, with containers notching two to three times more efficiency over virtual machines. <br><br>
Prometheus has also had a positive impact: "It provides high availability for metrics and alerting," says Apšega. "We monitor everything starting from hardware to applications. Having all the metrics in Grafana dashboards provides great insight on our systems."
{{< case-studies/quote
image="/images/case-studies/adform/banner4.jpg"
author="Andrius Cibulskis, IT Systems Engineer, Adform"
>}}
"Releases are really nice for them, because they just push their code to Git and that's it. They don't have to worry about their virtual machines anymore."
{{< /case-studies/quote >}}
<p>This big push has been driven by the real impact that these new practices have had. "Kubernetes helps our business a lot because our features are coming to market faster," says Apšega. "The deployments are very easy because developers just push the code and it automatically appears on Kubernetes." The release process went from several hours to several minutes. Autoscaling is at least six times faster than the semi-manual VM bootstrapping and application deployment required before.</p>
<p>The team estimates that the company has experienced cost savings of 4-5x due to less hardware and fewer man hours needed to set up the hardware and virtual machines, metrics, and logging. Utilization of the hardware resources has been reduced as well, with containers notching two to three times more efficiency over virtual machines.</p>
</div>
<p>Prometheus has also had a positive impact: "It provides high availability for metrics and alerting," says Apšega. "We monitor everything starting from hardware to applications. Having all the metrics in Grafana dashboards provides great insight on our systems."</p>
<div class="banner5">
<div class="banner5text">
"I think that our company just started our cloud native journey. It seems like a huge road ahead, but were really happy that we joined it." <span style="font-size:14px;letter-spacing:0.12em;padding-top:20px;text-transform:uppercase;line-height:14px"><br><br>— Edgaras Apšega, IT Systems Engineer, Adform</span>
</div>
</div>
{{< case-studies/quote author="Edgaras Apšega, IT Systems Engineer, Adform" >}}
"I think that our company just started our cloud native journey. It seems like a huge road ahead, but we're really happy that we joined it."
{{< /case-studies/quote >}}
<div class="fullcol">
All of these benefits have trickled down to individual team members, whose working lives have been changed for the better. "They used to have to get up at night to re-start some services, and now Kubernetes handles all of that," says Apšega. Adds Cibulskis: "Releases are really nice for them, because they just push their code to Git and thats it. They dont have to worry about their virtual machines anymore." Even the security teams have been impacted. "Security teams are always not happy," says Apšega, "and now theyre happy because they can easily inspect the containers."
The company plans to remain in the data centers for now, "mostly because we want to keep all the data, to not share it in any way," says Cibulskis, "and its cheaper at our scale." But, Apšega says, the possibility of using a hybrid cloud for computing is intriguing: "One of the projects were interested in is the <a href="https://github.com/virtual-kubelet/virtual-kubelet">Virtual Kubelet</a> that lets you spin up the working nodes on different clouds to do some computing."
<br><br>
Apšega, Cibulskis and their colleagues are keeping tabs on how the cloud native ecosystem develops, and are excited to contribute where they can. "I think that our company just started our cloud native journey," says Apšega. "It seems like a huge road ahead, but were really happy that we joined it."
<p>All of these benefits have trickled down to individual team members, whose working lives have been changed for the better. "They used to have to get up at night to re-start some services, and now Kubernetes handles all of that," says Apšega. Adds Cibulskis: "Releases are really nice for them, because they just push their code to Git and that's it. They don't have to worry about their virtual machines anymore." Even the security teams have been impacted. "Security teams are always not happy," says Apšega, "and now they're happy because they can easily inspect the containers."</p>
<p>The company plans to remain in the data centers for now, "mostly because we want to keep all the data, to not share it in any way," says Cibulskis, "and it's cheaper at our scale." But, Apšega says, the possibility of using a hybrid cloud for computing is intriguing: "One of the projects we're interested in is the <a href="https://github.com/virtual-kubelet/virtual-kubelet">Virtual Kubelet</a> that lets you spin up the working nodes on different clouds to do some computing."</p>
</div>
</section>
<p>Apšega, Cibulskis and their colleagues are keeping tabs on how the cloud native ecosystem develops, and are excited to contribute where they can. "I think that our company just started our cloud native journey," says Apšega. "It seems like a huge road ahead, but we're really happy that we joined it."</p>
+68 -98
View File
@@ -3,106 +3,76 @@ title: adidas Case Study
linkTitle: adidas
case_study_styles: true
cid: caseStudies
css: /css/case-studies-gradient.css
featured: false
new_case_study_styles: true
heading_background: /images/case-studies/adidas/banner1.png
heading_title_text: adidas
use_gradient_overlay: true
subheading: >
Staying True to Its Culture, adidas Got 40% of Its Most Impactful Systems Running on Kubernetes in a Year
case_study_details:
- Company: adidas
- Location: Herzogenaurach, Germany
- Industry: Fashion
---
<h2>Challenge</h2>
<p>In recent years, the adidas team was happy with its software choices from a technology perspective—but accessing all of the tools was a problem. For instance, "just to get a developer VM, you had to send a request form, give the purpose, give the title of the project, who's responsible, give the internal cost center a call so that they can do recharges," says Daniel Eichten, Senior Director of Platform Engineering. "The best case is you got your machine in half an hour. Worst case is half a week or sometimes even a week."</p>
<h2>Solution</h2>
<p>To improve the process, "we started from the developer point of view," and looked for ways to shorten the time it took to get a project up and running and into the adidas infrastructure, says Senior Director of Platform Engineering Fernando Cornago. They found the solution with containerization, agile development, continuous delivery, and a cloud native platform that includes Kubernetes and Prometheus.</p>
<div class="article image overlay" style="background-image: url('/images/case-studies/adidas/banner1.png')">
<h1> CASE STUDY: adidas</h1>
<div class="subhead">Staying True to Its Culture, adidas Got 40% of Its Most Impactful Systems Running on Kubernetes in a Year</div>
</div>
<div class="details">
Company &nbsp;<b>adidas</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Herzogenaurach, Germany</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Fashion</b>
</div>
<hr>
<section class="section1">
<div class="colsgradient">
<div class="col1">
<h2>Challenge</h2>
In recent years, the adidas team was happy with its software choices from a technology perspective—but accessing all of the tools was a problem. For instance, “just to get a developer VM, you had to send a request form, give the purpose, give the title of the project, whos responsible, give the internal cost center a call so that they can do recharges,” says Daniel Eichten, Senior Director of Platform Engineering. “The best case is you got your machine in half an hour. Worst case is half a week or sometimes even a week.”
<h2>Solution</h2>
To improve the process, “we started from the developer point of view,” and looked for ways to shorten the time it took to get a project up and running and into the adidas infrastructure, says Senior Director of Platform Engineering Fernando Cornago. They found the solution with containerization, agile development, continuous delivery, and a cloud native platform that includes Kubernetes and Prometheus.
<h2>Impact</h2>
Just six months after the project began, 100% of the adidas e-commerce site was running on Kubernetes. Load time for the e-commerce site was reduced by half. Releases went from every 4-6 weeks to 3-4 times a day. With 4,000 pods, 200 nodes, and 80,000 builds per month, adidas is now running 40% of its most critical, impactful systems on its cloud native platform.
</div>
</div>
</section>
<div class="article image overlay" style="background-image: url('/images/case-studies/adidas/banner2.png');">
<div class="quotetext">
"For me, Kubernetes is a platform made by engineers for engineers. Its relieving the development team from tasks that they dont want to do, but at the same time giving the visibility of what is behind the curtain, so they can also control it."
<p><div class="quoteauthortext">- FERNANDO CORNAGO, SENIOR DIRECTOR OF PLATFORM ENGINEERING AT ADIDAS</div></p>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h4>In recent years, the adidas team was happy with its software choices from a technology perspective—but accessing all of the tools was a problem.</h4>
<p>For engineers at adidas, says Daniel Eichten, Senior Director of Platform Engineering, "it felt like being an artist with your hands tied behind your back, and youre supposed to paint something."</p>
<p>
For instance, "just to get a developer VM, you had to send a request form, give the purpose, give the title of the project, whos responsible, give the internal cost center a call so that they can do recharges," says Eichten. "Eventually, after a ton of approvals, then the provisioning of the machine happened within minutes, and then the best case is you got your machine in half an hour. Worst case is half a week or sometimes even a week."
</p>
<p>
To improve the process, "we started from the developer point of view," and looked for ways to shorten the time it took to get a project up and running and into the adidas infrastructure, says Senior Director of Platform Engineering Fernando Cornago.</p>
</div>
</section>
<div class="greybanner">
<div class="greyquotetext">
"I call our cloud native platform the field of dreams. We built it, and we never anticipated that people would come and just love it."<p><div class="quoteauthortext">- DANIEL EICHTEN, SENIOR DIRECTOR OF PLATFORM ENGINEERING AT ADIDAS</div></p>
</div>
</div>
<section class="section3">
<div class="fullcol">
<p>
"We were engineers before," adds Eichten. "We know what a typical engineer needs, is craving for, what he or she doesnt want to take care of. For us it was pretty clear. We filled the gaps that no one wants to take care of, and we make the stuff that is usually painful as painless as possible." The goals: to improve speed, operability, and observability.
</p>
<p>
Cornago and Eichten found the solution with containerization, agile development, continuous delivery, and a cloud native platform that includes Kubernetes and Prometheus. "Choosing Kubernetes was pretty clear," says Eichten. "Day zero, deciding, easy. Day one, installing, configuring, easy. Day two, keeping it up and running even with small workloads, if something goes wrong, you dont know how these things work in detail, youre lost. For day two problems, we needed a partner whos helping us."
</p>
<p>
In early 2017, adidas chose Giant Swarm to consult, install, configure, and run all of its Kubernetes clusters in AWS and on premise. "There is no competitive edge over our competitors like Puma or Nike in running and operating a Kubernetes cluster," says Eichten. "Our competitive edge is that we teach our internal engineers how to build cool e-comm stores that are fast, that are resilient, that are running perfectly."
</p>
</div>
</section>
<div class="article image overlay" style="background-image: url('/images/case-studies/adidas/banner3.png');">
<div class="quotetext">
“There is no competitive edge over our competitors like Puma or Nike in running and operating a Kubernetes cluster. Our competitive edge is that we teach our internal engineers how to build cool e-comm stores that are fast, that are resilient, that are running perfectly.” <p><div class="quoteauthortext">- DANIEL EICHTEN, SENIOR DIRECTOR OF PLATFORM ENGINEERING AT ADIDAS</div></p>
</div>
</div>
<section class="section5">
<div class="fullcol">
<p>
Adds Cornago: “For me, our Kubernetes platform is made by engineers for engineers. Its relieving the development team from tasks that they dont want to do, but at the same time giving the visibility of what is behind the curtain, so they can also control it.”
</p>
<p>
Case in point: For Cyber Week, the team has to create a lot of custom metrics. In November 2017, “because we used the same Prometheus that we use for monitoring the cluster, we really filled the Prometheus database, and we were not able to reduce the retention period [enough],” says Cornago. So during the freeze period before the peak shopping week, five engineers from the platform team worked with five engineers from the e-comm team to figure out a federated solution that was implemented in two days.
</p>
<p>
In addition to being ready for Cyber Week—100% of the adidas e-commerce site was running on Kubernetes then, just six months after the project began—the cloud native stack has had other impressive results. Load time for the e-commerce site was reduced by half. Releases went from every 4-6 weeks to 3-4 times a day. With 4,000 pods, 200 nodes, and 80,000 builds per month, adidas is now running 40% of its most critical, impactful systems on its cloud native platform.
</p>
<p>
And adoption has spread quickly among adidass 300-strong engineering corps. “I call our cloud native platform the field of dreams,” says Eichten. “We built it, and we never anticipated that people would come and just love it.”
</p>
<p>
For one thing, “everybody who can touch a line of code” has spent one full week onboarding and learning the platform with members of the 35-person platform engineering team, says Cornago. “We try to spend 50% of our time sitting with the teams, because this is the only way to understand how our platform is being used. And this is how the teams will feel safe that there is someone on the other side of the wall, also feeling the pain.”
</p>
<p>
Additionally, Cornago and Eichten took advantage of the fact that as a fashion athletic wear brand, adidas has sports and competition in its DNA. “Top-down mandates dont work at adidas, but gamification works,” says Cornago. “So this year we had a DevOps Cup competition. Every team created new technical capabilities and had a hypothesis of how this affected business value. We announced the winner at a big internal tech summit with more than 600 people. Its been really, really useful for the teams.”
</p>
<p>
So if they had any advice for other companies looking to start a cloud native journey, it would be this: “There is no one-size-fits-all for all companies,” says Cornago. “Apply your companys culture to everything that you do.”
</p>
</div>
</section>
</body>
<p>Just six months after the project began, 100% of the adidas e-commerce site was running on Kubernetes. Load time for the e-commerce site was reduced by half. Releases went from every 4-6 weeks to 3-4 times a day. With 4,000 pods, 200 nodes, and 80,000 builds per month, adidas is now running 40% of its most critical, impactful systems on its cloud native platform.</p>
{{< case-studies/quote
image="/images/case-studies/adidas/banner2.png"
author="FERNANDO CORNAGO, SENIOR DIRECTOR OF PLATFORM ENGINEERING AT ADIDAS"
>}}
"For me, Kubernetes is a platform made by engineers for engineers. It's relieving the development team from tasks that they don't want to do, but at the same time giving the visibility of what is behind the curtain, so they can also control it."
{{< /case-studies/quote >}}
{{< case-studies/lead >}}
In recent years, the adidas team was happy with its software choices from a technology perspective—but accessing all of the tools was a problem.
{{< /case-studies/lead >}}
<p>For engineers at adidas, says Daniel Eichten, Senior Director of Platform Engineering, "it felt like being an artist with your hands tied behind your back, and you're supposed to paint something."</p>
<p>For instance, "just to get a developer VM, you had to send a request form, give the purpose, give the title of the project, who's responsible, give the internal cost center a call so that they can do recharges," says Eichten. "Eventually, after a ton of approvals, then the provisioning of the machine happened within minutes, and then the best case is you got your machine in half an hour. Worst case is half a week or sometimes even a week."</p>
<p>To improve the process, "we started from the developer point of view," and looked for ways to shorten the time it took to get a project up and running and into the adidas infrastructure, says Senior Director of Platform Engineering Fernando Cornago.</p>
{{< case-studies/quote author="DANIEL EICHTEN, SENIOR DIRECTOR OF PLATFORM ENGINEERING AT ADIDAS" >}}
"I call our cloud native platform the field of dreams. We built it, and we never anticipated that people would come and just love it."
{{< /case-studies/quote >}}
<p>"We were engineers before," adds Eichten. "We know what a typical engineer needs, is craving for, what he or she doesn't want to take care of. For us it was pretty clear. We filled the gaps that no one wants to take care of, and we make the stuff that is usually painful as painless as possible." The goals: to improve speed, operability, and observability.</p>
<p>Cornago and Eichten found the solution with containerization, agile development, continuous delivery, and a cloud native platform that includes Kubernetes and Prometheus. "Choosing Kubernetes was pretty clear," says Eichten. "Day zero, deciding, easy. Day one, installing, configuring, easy. Day two, keeping it up and running even with small workloads, if something goes wrong, you don't know how these things work in detail, you're lost. For day two problems, we needed a partner who's helping us."</p>
<p>In early 2017, adidas chose Giant Swarm to consult, install, configure, and run all of its Kubernetes clusters in AWS and on premise. "There is no competitive edge over our competitors like Puma or Nike in running and operating a Kubernetes cluster," says Eichten. "Our competitive edge is that we teach our internal engineers how to build cool e-comm stores that are fast, that are resilient, that are running perfectly."</p>
{{< case-studies/quote
image="/images/case-studies/adidas/banner3.png"
author="DANIEL EICHTEN, SENIOR DIRECTOR OF PLATFORM ENGINEERING AT ADIDAS"
>}}
"There is no competitive edge over our competitors like Puma or Nike in running and operating a Kubernetes cluster. Our competitive edge is that we teach our internal engineers how to build cool e-comm stores that are fast, that are resilient, that are running perfectly."
{{< /case-studies/quote >}}
<p>Adds Cornago: "For me, our Kubernetes platform is made by engineers for engineers. It's relieving the development team from tasks that they don't want to do, but at the same time giving the visibility of what is behind the curtain, so they can also control it."</p>
<p>Case in point: For Cyber Week, the team has to create a lot of custom metrics. In November 2017, "because we used the same Prometheus that we use for monitoring the cluster, we really filled the Prometheus database, and we were not able to reduce the retention period [enough]," says Cornago. So during the freeze period before the peak shopping week, five engineers from the platform team worked with five engineers from the e-comm team to figure out a federated solution that was implemented in two days.</p>
<p>In addition to being ready for Cyber Week—100% of the adidas e-commerce site was running on Kubernetes then, just six months after the project began—the cloud native stack has had other impressive results. Load time for the e-commerce site was reduced by half. Releases went from every 4-6 weeks to 3-4 times a day. With 4,000 pods, 200 nodes, and 80,000 builds per month, adidas is now running 40% of its most critical, impactful systems on its cloud native platform.</p>
<p>And adoption has spread quickly among adidas's 300-strong engineering corps. "I call our cloud native platform the field of dreams," says Eichten. "We built it, and we never anticipated that people would come and just love it."</p>
<p>For one thing, "everybody who can touch a line of code" has spent one full week onboarding and learning the platform with members of the 35-person platform engineering team, says Cornago. "We try to spend 50% of our time sitting with the teams, because this is the only way to understand how our platform is being used. And this is how the teams will feel safe that there is someone on the other side of the wall, also feeling the pain."</p>
<p>Additionally, Cornago and Eichten took advantage of the fact that as a fashion athletic wear brand, adidas has sports and competition in its DNA. "Top-down mandates don't work at adidas, but gamification works," says Cornago. "So this year we had a DevOps Cup competition. Every team created new technical capabilities and had a hypothesis of how this affected business value. We announced the winner at a big internal tech summit with more than 600 people. It's been really, really useful for the teams."</p>
<p>So if they had any advice for other companies looking to start a cloud native journey, it would be this: "There is no one-size-fits-all for all companies," says Cornago. "Apply your company's culture to everything that you do."</p>
+69 -90
View File
@@ -1,105 +1,84 @@
---
title: Amadeus Case Study
case_study_styles: true
cid: caseStudies
css: /css/style_amadeus.css
new_case_study_styles: true
heading_background: /images/case-studies/amadeus/banner1.jpg
heading_title_logo: /images/amadeus_logo.png
subheading: >
Another Technical Evolution for a 30-Year-Old Company
case_study_details:
- Company: Amadeus IT Group
- Location: Madrid, Spain
- Industry: Travel Technology
---
<div class="banner1">
<h1> CASE STUDY:<img src="/images/amadeus_logo.png" class="header_logo"><br> <div class="subhead">Another Technical Evolution for a 30-Year-Old Company
</div></h1>
</div>
<div class="details">
Company &nbsp;<b>Amadeus IT Group</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Madrid, Spain</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Travel Technology</b>
</div>
<hr>
<section class="section1">
<div class="cols">
<div class="col1">
<h2>Challenge</h2>
In the past few years, Amadeus, which provides IT solutions to the travel industry around the world, found itself in need of a new platform for the 5,000 services supported by its service-oriented architecture. The 30-year-old company operates its own data center in Germany, and there were growing demands internally and externally for solutions that needed to be geographically dispersed. And more generally, "we had objectives of being even more highly available," says Eric Mountain, Senior Expert, Distributed Systems at Amadeus. Among the companys goals: to increase automation in managing its infrastructure, optimize the distribution of workloads, use data center resources more efficiently, and adopt new technologies more easily.
</div>
<div class="col2">
<h2>Solution</h2>
Mountain has been overseeing the companys migration to <a href="http://kubernetes.io/">Kubernetes</a>, using <a href="https://www.openshift.org/">OpenShift</a> Container Platform, <a href="https://www.redhat.com/en">Red Hat</a>s enterprise container platform.
<br><br>
<h2>Challenge</h2>
<p>In the past few years, Amadeus, which provides IT solutions to the travel industry around the world, found itself in need of a new platform for the 5,000 services supported by its service-oriented architecture. The 30-year-old company operates its own data center in Germany, and there were growing demands internally and externally for solutions that needed to be geographically dispersed. And more generally, "we had objectives of being even more highly available," says Eric Mountain, Senior Expert, Distributed Systems at Amadeus. Among the company's goals: to increase automation in managing its infrastructure, optimize the distribution of workloads, use data center resources more efficiently, and adopt new technologies more easily.</p>
<h2>Solution</h2>
<p>Mountain has been overseeing the company's migration to <a href="http://kubernetes.io/">Kubernetes</a>, using <a href="https://www.openshift.org/">OpenShift</a> Container Platform, <a href="https://www.redhat.com/en">Red Hat</a>'s enterprise container platform.</p>
<h2>Impact</h2>
One of the first projects the team deployed in Kubernetes was the Amadeus Airline Cloud Availability solution, which helps manage ever-increasing flight-search volume. "Its now handling in production several thousand transactions per second, and its deployed in multiple data centers throughout the world," says Mountain. "Its not a migration of an existing workload; its a whole new workload that we couldnt have done otherwise. [This platform] gives us access to market opportunities that we didnt have before."
</div>
</div>
</section>
<div class="banner2">
<div class="banner2text">
"We want multi-data center capabilities, and we want them for our mainstream system as well. We didnt think that we could achieve them with our existing system. We need new automation, things that Kubernetes and OpenShift bring."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Eric Mountain, Senior Expert, Distributed Systems at Amadeus IT Group</span>
</div>
</div>
<section class="section2">
<p>One of the first projects the team deployed in Kubernetes was the Amadeus Airline Cloud Availability solution, which helps manage ever-increasing flight-search volume. "It's now handling in production several thousand transactions per second, and it's deployed in multiple data centers throughout the world," says Mountain. "It's not a migration of an existing workload; it's a whole new workload that we couldn't have done otherwise. [This platform] gives us access to market opportunities that we didn't have before."</p>
<div class="fullcol">
<h2>In his two decades at Amadeus, Eric Mountain has been the migrations guy. </h2>
Back in the day, he worked on the companys move from Unix to Linux, and now hes overseeing the journey to cloud native. "Technology just keeps changing, and we embrace it," he says. "We are celebrating our 30 years this year, and we continue evolving and innovating to stay cost-efficient and enhance everyones travel experience, without interrupting workflows for the customers who depend on our technology."<br><br>
That was the challenge that Amadeus—which provides IT solutions to the travel industry around the world, from flight searches to hotel bookings to customer feedback—faced in 2014. The technology team realized it was in need of a new platform for the 5,000 services supported by its service-oriented architecture.<br><br>
The tipping point occurred when they began receiving many requests, internally and externally, for solutions that needed to be geographically outside the companys main data center in Germany. "Some requests were for running our applications on customer premises," Mountain says. "There were also new services we were looking to offer that required response time to the order of a few hundred milliseconds, which we couldnt achieve with transatlantic traffic. Or at least, not without eating into a considerable portion of the time available to our applications for them to process individual queries."<br><br>
More generally, the company was interested in leveling up on high availability, increasing automation in managing infrastructure, optimizing the distribution of workloads and using data center resources more efficiently. "We have thousands and thousands of servers," says Mountain. "These servers are assigned roles, so even if the setup is highly automated, the machine still has a given role. Its wasteful on many levels. For instance, an application doesnt necessarily use the machine very optimally. Virtualization can help a bit, but its not a silver bullet. If that machine breaks, you still want to repair it because it has that role and you cant simply say, Well, Ill bring in another machine and give it that role. Its not fast. Its not efficient. So we wanted the next level of automation."<br><br>
</div>
</section>
{{< case-studies/quote author="Eric Mountain, Senior Expert, Distributed Systems at Amadeus IT Group" >}}
"We want multi-data center capabilities, and we want them for our mainstream system as well. We didn't think that we could achieve them with our existing system. We need new automation, things that Kubernetes and OpenShift bring."
{{< /case-studies/quote >}}
<div class="banner3">
<div class="banner3text">
"We hope that if we build on what others have built, what we do might actually be upstream-able. As Kubernetes and OpenShift progress, we see that we are indeed able to remove some of the additional layers we implemented to compensate for gaps we perceived earlier."
</div>
</div>
{{< case-studies/lead >}}
In his two decades at Amadeus, Eric Mountain has been the migrations guy.
{{< /case-studies/lead >}}
<section class="section3">
<div class="fullcol">
While mainly a C++ and Java shop, Amadeus also wanted to be able to adopt new technologies more easily. Some of its developers had started using languages like <a href="https://www.python.org/">Python</a> and databases like <a href="https://www.couchbase.com/">Couchbase</a>, but Mountain wanted still more options, he says, "in order to better adapt our technical solutions to the products we offer, and open up entirely new possibilities to our developers." Working with recent technologies and cool new things would also make it easier to attract new talent.
<br><br>
All of those needs led Mountain and his team on a search for a new platform. "We did a set of studies and proofs of concept over a fairly short period, and we considered many technologies," he says. "In the end, we were left with three choices: build everything on premise, build on top of <a href="http://kubernetes.io/">Kubernetes</a> whatever happens to be missing from our point of view, or go with <a href="https://www.openshift.com/">OpenShift</a> and build whatever remains there."
<br><br>
The team decided against building everything themselves—though theyd done that sort of thing in the past—because "people were already inventing things that looked good," says Mountain.
<br><br>
Ultimately, they went with OpenShift Container Platform, <a href="https://www.redhat.com/en">Red Hat</a>s Kubernetes-based enterprise offering, instead of building on top of Kubernetes because "there was a lot of synergy between what we wanted and the way Red Hat was anticipating going with OpenShift," says Mountain. "They were clearly developing Kubernetes, and developing certain things ahead of time in OpenShift, which were important to us, such as more security."
<br><br>
The hope was that those particular features would eventually be built into Kubernetes, and, in the case of security, Mountain feels that has happened. "We realize that theres always a certain amount of automation that we will probably have to develop ourselves to compensate for certain gaps," says Mountain. "The less we do that, the better for us. We hope that if we build on what others have built, what we do might actually be upstream-able. As Kubernetes and OpenShift progress, we see that we are indeed able to remove some of the additional layers we implemented to compensate for gaps we perceived earlier."
</div>
</section>
<p>Back in the day, he worked on the company's move from Unix to Linux, and now he's overseeing the journey to cloud native. "Technology just keeps changing, and we embrace it," he says. "We are celebrating our 30 years this year, and we continue evolving and innovating to stay cost-efficient and enhance everyone's travel experience, without interrupting workflows for the customers who depend on our technology."</p>
<div class="banner4">
<div class="banner4text">
"Its not a migration of an existing workload; its a whole new workload that we couldnt have done otherwise. [This platform] gives us access to market opportunities that we didnt have before."
</div>
</div>
<p>That was the challenge that Amadeus—which provides IT solutions to the travel industry around the world, from flight searches to hotel bookings to customer feedback—faced in 2014. The technology team realized it was in need of a new platform for the 5,000 services supported by its service-oriented architecture.</p>
<section class="section4">
<div class="fullcol">
The first project the team tackled was one that they knew had to run outside the data center in Germany. Because of the projects needs, "We couldnt rely only on the built-in Kubernetes service discovery; we had to layer on top of that an extra service discovery level that allows us to load balance at the operation level within our system," says Mountain. They also built a stream dedicated to monitoring, which at the time wasnt offered in the Kubernetes or OpenShift ecosystem. Now that <a href="https://www.prometheus.io/">Prometheus</a> and other products are available, Mountain says the company will likely re-evaluate their monitoring system: "We obviously always like to leverage what Kubernetes and OpenShift can offer."
<br><br>
The second project ended up going into production first: the Amadeus Airline Cloud Availability solution, which helps manage ever-increasing flight-search volume and was deployed in public cloud. Launched in early 2016, it is "now handling in production several thousand transactions per second, and its deployed in multiple data centers throughout the world," says Mountain. "Its not a migration of an existing workload; its a whole new workload that we couldnt have done otherwise. [This platform] gives us access to market opportunities that we didnt have before."
<br><br>
Having been through this kind of technical evolution more than once, Mountain has advice on how to handle the cultural changes. "Thats one aspect that we can tackle progressively," he says. "We have to go on supplying our customers with new features on our pre-existing products, and we have to keep existing products working. So we cant simply do absolutely everything from one day to the next. And we mustnt sell it that way."
<br><br>
The first order of business, then, is to pick one or two applications to demonstrate that the technology works. Rather than choosing a high-impact, high-risk project, Mountains team selected a smaller application that was representative of all the companys other applications in its complexity: "We just made sure we picked something thats complex enough, and we showed that it can be done."
</div>
</section>
<p>The tipping point occurred when they began receiving many requests, internally and externally, for solutions that needed to be geographically outside the company's main data center in Germany. "Some requests were for running our applications on customer premises," Mountain says. "There were also new services we were looking to offer that required response time to the order of a few hundred milliseconds, which we couldn't achieve with transatlantic traffic. Or at least, not without eating into a considerable portion of the time available to our applications for them to process individual queries."</p>
<div class="banner5">
<div class="banner5text">
"The bottom line is we want these multi-data center capabilities, and we want them as well for our mainstream system," he says. "And we dont think that we can implement them with our previous system. We need the new automation, homogeneity, and scale that Kubernetes and OpenShift bring."
</div>
</div>
<p>More generally, the company was interested in leveling up on high availability, increasing automation in managing infrastructure, optimizing the distribution of workloads and using data center resources more efficiently. "We have thousands and thousands of servers," says Mountain. "These servers are assigned roles, so even if the setup is highly automated, the machine still has a given role. It's wasteful on many levels. For instance, an application doesn't necessarily use the machine very optimally. Virtualization can help a bit, but it's not a silver bullet. If that machine breaks, you still want to repair it because it has that role and you can't simply say, 'Well, I'll bring in another machine and give it that role.' It's not fast. It's not efficient. So we wanted the next level of automation."</p>
<section class="section5">
<div class="fullcol">
Next comes convincing people. "On the operations side and on the R&D side, there will be people who say quite rightly, There is a system, and it works, so why change?" Mountain says. "The only thing that really convinces people is showing them the value." For Amadeus, people realized that the Airline Cloud Availability product could not have been made available on the public cloud with the companys existing system. The question then became, he says, "Do we go into a full-blown migration? Is that something that is justified?"
<br><br>
"The bottom line is we want these multi-data center capabilities, and we want them as well for our mainstream system," he says. "And we dont think that we can implement them with our previous system. We need the new automation, homogeneity, and scale that Kubernetes and OpenShift bring."
<br><br>
So how do you get everyone on board? "Make sure you have good links between your R&D and your operations," he says. "Also make sure youre going to talk early on to the investors and stakeholders. Figure out what it is that they will be expecting from you, that will convince them or not, that this is the right way for your company."
<br><br>
His other advice is simply to make the technology available for people to try it. "Kubernetes and OpenShift Origin are open source software, so theres no complicated license key for the evaluation period and youre not limited to 30 days," he points out. "Just go and get it running." Along with that, he adds, "Youve got to be prepared to rethink how you do things. Of course making your applications as cloud native as possible is how youll reap the most benefits: 12 factors, CI/CD, which is continuous integration, continuous delivery, but also continuous deployment."
<br><br>
And while they explore that aspect of the technology, Mountain and his team will likely be practicing what he preaches to others taking the cloud native journey. "See what happens when you break it, because its important to understand the limits of the system," he says. Or rather, he notes, the advantages of it. "Breaking things on Kube is actually one of the nice things about it—it recovers. Its the only real way that youll see that you might be able to do things."
</div>
</section>
{{< case-studies/quote image="/images/case-studies/amadeus/banner3.jpg" >}}
"We hope that if we build on what others have built, what we do might actually be upstream-able. As Kubernetes and OpenShift progress, we see that we are indeed able to remove some of the additional layers we implemented to compensate for gaps we perceived earlier."
{{< /case-studies/quote >}}
<p>While mainly a C++ and Java shop, Amadeus also wanted to be able to adopt new technologies more easily. Some of its developers had started using languages like <a href="https://www.python.org/">Python</a> and databases like <a href="https://www.couchbase.com/">Couchbase</a>, but Mountain wanted still more options, he says, "in order to better adapt our technical solutions to the products we offer, and open up entirely new possibilities to our developers." Working with recent technologies and cool new things would also make it easier to attract new talent.</p>
<p>All of those needs led Mountain and his team on a search for a new platform. "We did a set of studies and proofs of concept over a fairly short period, and we considered many technologies," he says. "In the end, we were left with three choices: build everything on premise, build on top of <a href="http://kubernetes.io/">Kubernetes</a> whatever happens to be missing from our point of view, or go with <a href="https://www.openshift.com/">OpenShift</a> and build whatever remains there."</p>
<p>The team decided against building everything themselves—though they'd done that sort of thing in the past—because "people were already inventing things that looked good," says Mountain.</p>
<p>Ultimately, they went with OpenShift Container Platform, <a href="https://www.redhat.com/en">Red Hat</a>'s Kubernetes-based enterprise offering, instead of building on top of Kubernetes because "there was a lot of synergy between what we wanted and the way Red Hat was anticipating going with OpenShift," says Mountain. "They were clearly developing Kubernetes, and developing certain things ahead of time in OpenShift, which were important to us, such as more security."</p>
<p>The hope was that those particular features would eventually be built into Kubernetes, and, in the case of security, Mountain feels that has happened. "We realize that there's always a certain amount of automation that we will probably have to develop ourselves to compensate for certain gaps," says Mountain. "The less we do that, the better for us. We hope that if we build on what others have built, what we do might actually be upstream-able. As Kubernetes and OpenShift progress, we see that we are indeed able to remove some of the additional layers we implemented to compensate for gaps we perceived earlier."</p>
{{< case-studies/quote image="/images/case-studies/amadeus/banner4.jpg" >}}
"It's not a migration of an existing workload; it's a whole new workload that we couldn't have done otherwise. [This platform] gives us access to market opportunities that we didn't have before."
{{< /case-studies/quote >}}
<p>The first project the team tackled was one that they knew had to run outside the data center in Germany. Because of the project's needs, "We couldn't rely only on the built-in Kubernetes service discovery; we had to layer on top of that an extra service discovery level that allows us to load balance at the operation level within our system," says Mountain. They also built a stream dedicated to monitoring, which at the time wasn't offered in the Kubernetes or OpenShift ecosystem. Now that <a href="https://www.prometheus.io/">Prometheus</a> and other products are available, Mountain says the company will likely re-evaluate their monitoring system: "We obviously always like to leverage what Kubernetes and OpenShift can offer."
</p>
<p>The second project ended up going into production first: the Amadeus Airline Cloud Availability solution, which helps manage ever-increasing flight-search volume and was deployed in public cloud. Launched in early 2016, it is "now handling in production several thousand transactions per second, and it's deployed in multiple data centers throughout the world," says Mountain. "It's not a migration of an existing workload; it's a whole new workload that we couldn't have done otherwise. [This platform] gives us access to market opportunities that we didn't have before."</p>
<p>Having been through this kind of technical evolution more than once, Mountain has advice on how to handle the cultural changes. "That's one aspect that we can tackle progressively," he says. "We have to go on supplying our customers with new features on our pre-existing products, and we have to keep existing products working. So we can't simply do absolutely everything from one day to the next. And we mustn't sell it that way."</p>
<p>The first order of business, then, is to pick one or two applications to demonstrate that the technology works. Rather than choosing a high-impact, high-risk project, Mountain's team selected a smaller application that was representative of all the company's other applications in its complexity: "We just made sure we picked something that's complex enough, and we showed that it can be done."</p>
{{< case-studies/quote >}}
"The bottom line is we want these multi-data center capabilities, and we want them as well for our mainstream system," he says. "And we don't think that we can implement them with our previous system. We need the new automation, homogeneity, and scale that Kubernetes and OpenShift bring."
{{< /case-studies/quote >}}
<p>Next comes convincing people. "On the operations side and on the R&D side, there will be people who say quite rightly, 'There is a system, and it works, so why change?'" Mountain says. "The only thing that really convinces people is showing them the value." For Amadeus, people realized that the Airline Cloud Availability product could not have been made available on the public cloud with the company's existing system. The question then became, he says, "Do we go into a full-blown migration? Is that something that is justified?"</p>
<p>"The bottom line is we want these multi-data center capabilities, and we want them as well for our mainstream system," he says. "And we don't think that we can implement them with our previous system. We need the new automation, homogeneity, and scale that Kubernetes and OpenShift bring."</p>
<p>So how do you get everyone on board? "Make sure you have good links between your R&D and your operations," he says. "Also make sure you're going to talk early on to the investors and stakeholders. Figure out what it is that they will be expecting from you, that will convince them or not, that this is the right way for your company."</p>
<p>His other advice is simply to make the technology available for people to try it. "Kubernetes and OpenShift Origin are open source software, so there's no complicated license key for the evaluation period and you're not limited to 30 days," he points out. "Just go and get it running." Along with that, he adds, "You've got to be prepared to rethink how you do things. Of course making your applications as cloud native as possible is how you'll reap the most benefits: 12 factors, CI/CD, which is continuous integration, continuous delivery, but also continuous deployment."</p>
<p>And while they explore that aspect of the technology, Mountain and his team will likely be practicing what he preaches to others taking the cloud native journey. "See what happens when you break it, because it's important to understand the limits of the system," he says. Or rather, he notes, the advantages of it. "Breaking things on Kube is actually one of the nice things about it—it recovers. It's the only real way that you'll see that you might be able to do things."</p>
+63 -88
View File
@@ -1,117 +1,92 @@
---
title: Ancestry Case Study
case_study_styles: true
cid: caseStudies
css: /css/style_ancestry.css
new_case_study_styles: true
heading_background: /images/case-studies/ancestry/banner1.jpg
heading_title_logo: /images/ancestry_logo.png
subheading: >
Digging Into the Past With New Technology
case_study_details:
- Company: Ancestry
- Location: Lehi, Utah
- Industry: Internet Company, Online Services
---
<div class="banner1">
<h1> CASE STUDY:<img src="/images/ancestry_logo.png" width="22%" style="margin-bottom:-12px;margin-left:3px;"><br> <div class="subhead">Digging Into the Past With New Technology</div></h1>
</div>
<div class="details">
Company &nbsp;<b>Ancestry</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Lehi, Utah</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Internet Company, Online Services</b>
</div>
<hr>
<section class="section1">
<div class="cols">
<div class="col1">
<h2>Challenge</h2>
Ancestry, the global leader in family history and consumer genomics, uses sophisticated engineering and technology to help everyone, everywhere discover the story of what led to them. The company has spent more than 30 years innovating and building products and technologies that at their core, result in real and emotional human responses. <a href="https://www.ancestry.com">Ancestry</a> currently serves more than 2.6 million paying subscribers, holds 20 billion historical records, 90 million family trees and more than four million people are in its AncestryDNA network, making it the largest consumer genomics DNA network in the world. The company's popular website, <a href="https://www.ancestry.com">ancestry.com</a>, has been working with big data long before the term was popularized. The site was built on hundreds of services, technologies and a traditional deployment methodology. "It's worked well for us in the past," says Paul MacKay, software engineer and architect at Ancestry, "but had become quite cumbersome in its processing and is time-consuming. As a primarily online service, we are constantly looking for ways to accelerate to be more agile in delivering our solutions and our&nbsp;products."
<br>
<p>Ancestry, the global leader in family history and consumer genomics, uses sophisticated engineering and technology to help everyone, everywhere discover the story of what led to them. The company has spent more than 30 years innovating and building products and technologies that at their core, result in real and emotional human responses. <a href="https://www.ancestry.com">Ancestry</a> currently serves more than 2.6 million paying subscribers, holds 20 billion historical records, 90 million family trees and more than four million people are in its AncestryDNA network, making it the largest consumer genomics DNA network in the world. The company's popular website, <a href="https://www.ancestry.com">ancestry.com</a>, has been working with big data long before the term was popularized. The site was built on hundreds of services, technologies and a traditional deployment methodology. "It's worked well for us in the past," says Paul MacKay, software engineer and architect at Ancestry, "but had become quite cumbersome in its processing and is time-consuming. As a primarily online service, we are constantly looking for ways to accelerate to be more agile in delivering our solutions and our&nbsp;products."</p>
</div>
<h2>Solution</h2>
<div class="col2">
<h2>Solution</h2>
<p>The company is transitioning to cloud native infrastructure, using <a href="https://www.docker.com">Docker</a> containerization, <a href="https://kubernetes.io">Kubernetes</a> orchestration and <a href="https://prometheus.io">Prometheus</a> for cluster monitoring.</p>
The company is transitioning to cloud native infrastructure, using <a href="https://www.docker.com">Docker</a> containerization, <a href="https://kubernetes.io">Kubernetes</a> orchestration and <a href="https://prometheus.io">Prometheus</a> for cluster monitoring.<br>
<br>
<h2>Impact</h2>
"Every single product, every decision we make at Ancestry, focuses on delighting our customers with intimate, sometimes life-changing discoveries about themselves and their families," says MacKay. "As the company continues to grow, the increased productivity gains from using Kubernetes has helped Ancestry make customer discoveries faster. With the move to Dockerization for example, instead of taking between 20 to 50 minutes to deploy a new piece of code, we can now deploy in under a minute for much of our code. Weve truly experienced significant time savings in addition to the various features and benefits from cloud native and Kubernetes-type technologies."
</div>
</div>
</section>
<div class="banner2">
<div class="banner2text">
"At a certain point, you have to step back if you're going to push a new technology and get key thought leaders with engineers within the organization to become your champions for new technology adoption. At training sessions, the development teams were always the ones that were saying, 'Kubernetes saved our time tremendously; it's an enabler. It really is incredible.'"<br><br><span style="font-size:16px">- PAUL MACKAY, SOFTWARE ENGINEER AND ARCHITECT AT ANCESTRY</span>
</div>
</div>
<p>"Every single product, every decision we make at Ancestry, focuses on delighting our customers with intimate, sometimes life-changing discoveries about themselves and their families," says MacKay. "As the company continues to grow, the increased productivity gains from using Kubernetes has helped Ancestry make customer discoveries faster. With the move to Dockerization for example, instead of taking between 20 to 50 minutes to deploy a new piece of code, we can now deploy in under a minute for much of our code. We've truly experienced significant time savings in addition to the various features and benefits from cloud native and Kubernetes-type technologies."</p>
<section class="section2">
<div class="fullcol">
<h2>It started with a Shaky Leaf.</h2>
{{< case-studies/quote author="PAUL MACKAY, SOFTWARE ENGINEER AND ARCHITECT AT ANCESTRY" >}}
"At a certain point, you have to step back if you're going to push a new technology and get key thought leaders with engineers within the organization to become your champions for new technology adoption. At training sessions, the development teams were always the ones that were saying, 'Kubernetes saved our time tremendously; it's an enabler. It really is incredible.'"
{{< /case-studies/quote >}}
Since its introduction a decade ago, the Shaky Leaf icon has become one of Ancestry's signature features, which signals to users that there's a helpful hint you can use to find out more about your family tree.<br><br>
So when the company decided to begin moving its infrastructure to cloud native technology, the first service that was launched on <a href="https://kubernetes.io">Kubernetes</a>, the open source platform for managing application containers across clusters of hosts, was this hint system. Think of it as Amazon's recommended products, but instead of recommending products the company recommends records, stories, or familial connections. "It was a very important part of the site," says Ancestry software engineer and architect Paul MacKay, "but also small enough for a pilot project that we knew we could handle in a very appropriate, secure way."<br><br>
And when it went live smoothly in early 2016, "our deployment time for this service literally was cut down from 50 minutes to 2 or 5 minutes," MacKay adds. "The development team was just thrilled because we're focused on supplying a great experience for our customers. And that means features, it means stability, it means all those things that we need for a first-in-class type operation."<br><br>
The stability of that Shaky Leaf was a signal for MacKay and his team that their decision to embrace cloud native technologies was the right one for the company. With a private data center, Ancestry built its website (which launched in 1996) on hundreds of services and technologies and a traditional deployment methodology. "It worked well for us in the past, but the sum of the legacy systems became quite cumbersome in its processing and was time-consuming," says MacKay. "We were looking for other ways to accelerate, to be more agile in delivering our solutions and our products."
</div>
</section>
{{< case-studies/lead >}}
It started with a Shaky Leaf.
{{< /case-studies/lead >}}
<div class="banner3">
<div class="banner3text">
<p>Since its introduction a decade ago, the Shaky Leaf icon has become one of Ancestry's signature features, which signals to users that there's a helpful hint you can use to find out more about your family tree.</p>
<p>So when the company decided to begin moving its infrastructure to cloud native technology, the first service that was launched on <a href="https://kubernetes.io">Kubernetes</a>, the open source platform for managing application containers across clusters of hosts, was this hint system. Think of it as Amazon's recommended products, but instead of recommending products the company recommends records, stories, or familial connections. "It was a very important part of the site," says Ancestry software engineer and architect Paul MacKay, "but also small enough for a pilot project that we knew we could handle in a very appropriate, secure way."</p>
<p>And when it went live smoothly in early 2016, "our deployment time for this service literally was cut down from 50 minutes to 2 or 5 minutes," MacKay adds. "The development team was just thrilled because we're focused on supplying a great experience for our customers. And that means features, it means stability, it means all those things that we need for a first-in-class type operation."</p>
<p>The stability of that Shaky Leaf was a signal for MacKay and his team that their decision to embrace cloud native technologies was the right one for the company. With a private data center, Ancestry built its website (which launched in 1996) on hundreds of services and technologies and a traditional deployment methodology. "It worked well for us in the past, but the sum of the legacy systems became quite cumbersome in its processing and was time-consuming," says MacKay. "We were looking for other ways to accelerate, to be more agile in delivering our solutions and our products."</p>
{{< case-studies/quote image="/images/case-studies/ancestry/banner3.jpg" >}}
"And when it [Kubernetes] went live smoothly in early 2016, 'our deployment time for this service literally was cut down from 50 minutes to 2 or 5 minutes,' MacKay adds. 'The development team was just thrilled because we're focused on supplying a great experience for our customers. And that means features, it means stability, it means all those things that we need for a first-in-class type operation.'"
</div>
</div>
{{< /case-studies/quote >}}
<section class="section3">
<div class="fullcol">
That need led them in 2015 to explore containerization. Ancestry engineers had already been using technology like <a href="https://www.java.com/en/">Java</a> and <a href="https://www.python.org">Python</a> on Linux, so part of the decision was about making the infrastructure more Linux-friendly. They quickly decided that they wanted to go with Docker for containerization, "but it always comes down to the orchestration part of it to make it really work," says MacKay.<br><br>
His team looked at orchestration platforms offered by <a href="https://docs.docker.com/compose/">Docker Compose</a>, <a href="http://mesos.apache.org">Mesos</a> and <a href="https://www.openstack.org/software/">OpenStack</a>, and even started to prototype some homegrown solutions. And then they started hearing rumblings of the imminent release of Kubernetes v1.0. "At the forefront, we were looking at the secret store, so we didn't have to manage that all ourselves, the config maps, the methodology of seamless deployment strategy," he says. "We found that how Kubernetes had done their resources, their types, their labels and just their interface was so much further advanced than the other things we had seen. It was a feature fit."<br><br>
<div class="quote">
Plus, MacKay says, "I just believed in the confidence that comes with the history that Google has with containerization. So we started out right on the leading edge of it. And we haven't looked back since."</div><br>
Which is not to say that adopting a new technology hasn't come with some challenges. "Change is hard," says MacKay. "Not because the technology is hard or that the technology is not good. It's just that people like to do things like they had done [before]. You have the early adopters and you have those who are coming in later. It was a learning experience on both sides."<br><br>
Figuring out the best deployment operations for Ancestry was a big part of the work it took to adopt cloud native infrastructure. "We want to make sure the process is easy and also controlled in the manner that allows us the highest degree of security that we demand and our customers demand," says MacKay. "With Kubernetes and other products, there are some good solutions, but a little bit of glue is needed to bring it into corporate processes and governances. It's like having a set of gloves that are generic, but when you really do want to grab something you have to make it so it's customized to you. That's what we had to do."<br><br>
Their best practices include allowing their developers to deploy into development stage and production, but then controlling the aspects that need governance and auditing, such as secrets. They found that having one namespace per service is useful for achieving that containment of secrets and config maps. And for their needs, having one container per pod makes it easier to manage and to have a smaller unit of deployment.
<br><br>
</div>
</section>
<p>That need led them in 2015 to explore containerization. Ancestry engineers had already been using technology like <a href="https://www.java.com/en/">Java</a> and <a href="https://www.python.org">Python</a> on Linux, so part of the decision was about making the infrastructure more Linux-friendly. They quickly decided that they wanted to go with Docker for containerization, "but it always comes down to the orchestration part of it to make it really work," says MacKay.</p>
<div class="banner4">
<div class="banner4text">
<p>His team looked at orchestration platforms offered by <a href="https://docs.docker.com/compose/">Docker Compose</a>, <a href="http://mesos.apache.org">Mesos</a> and <a href="https://www.openstack.org/software/">OpenStack</a>, and even started to prototype some homegrown solutions. And then they started hearing rumblings of the imminent release of Kubernetes v1.0. "At the forefront, we were looking at the secret store, so we didn't have to manage that all ourselves, the config maps, the methodology of seamless deployment strategy," he says. "We found that how Kubernetes had done their resources, their types, their labels and just their interface was so much further advanced than the other things we had seen. It was a feature fit."</p>
{{< case-studies/lead >}}
Plus, MacKay says, "I just believed in the confidence that comes with the history that Google has with containerization. So we started out right on the leading edge of it. And we haven't looked back since."
{{< /case-studies/lead >}}
<p>Which is not to say that adopting a new technology hasn't come with some challenges. "Change is hard," says MacKay. "Not because the technology is hard or that the technology is not good. It's just that people like to do things like they had done [before]. You have the early adopters and you have those who are coming in later. It was a learning experience on both sides."</p>
<p>Figuring out the best deployment operations for Ancestry was a big part of the work it took to adopt cloud native infrastructure. "We want to make sure the process is easy and also controlled in the manner that allows us the highest degree of security that we demand and our customers demand," says MacKay. "With Kubernetes and other products, there are some good solutions, but a little bit of glue is needed to bring it into corporate processes and governances. It's like having a set of gloves that are generic, but when you really do want to grab something you have to make it so it's customized to you. That's what we had to do."</p>
<p>Their best practices include allowing their developers to deploy into development stage and production, but then controlling the aspects that need governance and auditing, such as secrets. They found that having one namespace per service is useful for achieving that containment of secrets and config maps. And for their needs, having one container per pod makes it easier to manage and to have a smaller unit of deployment.
</p>
{{< case-studies/quote image="/images/case-studies/ancestry/banner4.jpg" >}}
"The success of Ancestry's first deployment of the hint system on Kubernetes helped create momentum for greater adoption of the technology."
{{< /case-studies/quote >}}
</div>
</div>
<p>With that process established, the time spent on deployment was cut down to under a minute for some services. "As programmers, we have what's called REPL: read, evaluate, print, and loop, but with Kubernetes, we have CDEL: compile, deploy, execute, and loop," says MacKay. "It's a very quick loop back and a great benefit to understand that when our services are deployed in production, they're the same as what we tested in the pre-production environments. The approach of cloud native for Ancestry provides us a better ability to scale and to accommodate the business needs as work loads occur."</p>
<section class="section4">
<div class="fullcol">
With that process established, the time spent on deployment was cut down to under a minute for some services. "As programmers, we have what's called REPL: read, evaluate, print, and loop, but with Kubernetes, we have CDEL: compile, deploy, execute, and loop," says MacKay. "It's a very quick loop back and a great benefit to understand that when our services are deployed in production, they're the same as what we tested in the pre-production environments. The approach of cloud native for Ancestry provides us a better ability to scale and to accommodate the business needs as work loads occur."<br><br>
The success of Ancestry's first deployment of the hint system on Kubernetes helped create momentum for greater adoption of the technology. "Engineers like to code, they like to do features, they don't like to sit around waiting for things to be deployed and worrying about scaling up and out and down," says MacKay. "After a while the engineers became our champions. At training sessions, the development teams were always the ones saying, 'Kubernetes saved our time tremendously; it's an enabler; it really is incredible.' Over time, we were able to convince our management that this was a transition that the industry is making and that we needed to be a part of it."<br><br>
A year later, Ancestry has transitioned a good number of applications to Kubernetes. "We have many different services that make up the rich environment that [the website] has from both the DNA side and the family history side," says MacKay. "We have front-end stacks, back-end stacks and back-end processing type stacks that are in the cluster."<br><br>
The company continues to weigh which services it will move forward to Kubernetes, which ones will be kept as is, and which will be replaced in the future and thus don't have to be moved over. MacKay estimates that the company is "approaching halfway on those features that are going forward. We don't have to do a lot of convincing anymore. It's more of an issue of timing with getting product management and engineering staff the knowledge and information that they need."
</div>
</section>
<p>The success of Ancestry's first deployment of the hint system on Kubernetes helped create momentum for greater adoption of the technology. "Engineers like to code, they like to do features, they don't like to sit around waiting for things to be deployed and worrying about scaling up and out and down," says MacKay. "After a while the engineers became our champions. At training sessions, the development teams were always the ones saying, 'Kubernetes saved our time tremendously; it's an enabler; it really is incredible.' Over time, we were able to convince our management that this was a transition that the industry is making and that we needed to be a part of it."</p>
<div class="banner5">
<div class="banner5text">
"... 'I believe in Kubernetes. I believe in containerization. I think
if we can get there and establish ourselves in that world, we will be further along and far better off being agile and all the things we talk about,
and it'll&nbsp;go&nbsp;forward.'"
</div>
</div>
<p>A year later, Ancestry has transitioned a good number of applications to Kubernetes. "We have many different services that make up the rich environment that [the website] has from both the DNA side and the family history side," says MacKay. "We have front-end stacks, back-end stacks and back-end processing type stacks that are in the cluster."</p>
<section class="section5">
<div class="fullcol">
<p>The company continues to weigh which services it will move forward to Kubernetes, which ones will be kept as is, and which will be replaced in the future and thus don't have to be moved over. MacKay estimates that the company is "approaching halfway on those features that are going forward. We don't have to do a lot of convincing anymore. It's more of an issue of timing with getting product management and engineering staff the knowledge and information that they need."</p>
{{< case-studies/quote >}}
"... 'I believe in Kubernetes. I believe in containerization. I think if we can get there and establish ourselves in that world, we will be further along and far better off being agile and all the things we talk about, and it'll&nbsp;go&nbsp;forward.'"
{{< /case-studies/quote >}}
Looking ahead, MacKay sees Ancestry maximizing the benefits of Kubernetes in 2017. "We're very close to having everything that should be or could be in a Linux-friendly world in Kubernetes by the end of the year," he says, adding that he's looking forward to features such as federation and horizontal pod autoscaling that are currently in the works. "Kubernetes has been very wonderful for us and we continue to ride the wave."<br><br>
That wave, he points out, has everything to do with the vibrant Kubernetes community, which has grown by leaps and bounds since Ancestry joined it as an early adopter. "This is just a very rough way of judging it, but on Slack in June 2015, there were maybe 500 on there," MacKay says. "The last time I looked there were maybe 8,500 just on the Slack channel. There are so many major companies and different kinds of companies involved now. It's the variety of contributors, the number of contributors, the incredibly competent and friendly community."<br><br>
As much as he and his team at Ancestry have benefited from what he calls "the goodness and the technical abilities of many" in the community, they've also contributed information about best practices, logged bug issues and participated in the open source conversation. And they've been active in attending <a href="https://www.meetup.com/Utah-Kubernetes-Meetup/">meetups</a> to help educate and give back to the local tech community in Utah. Says MacKay: "We're trying to give back as far as our experience goes, rather than just code."
<br><br>When he meets with companies considering adopting cloud native infrastructure, the best advice he has to give from Ancestry's Kubernetes journey is this: "Start small, but with hard problems," he says. And "you need a patron who understands the vision of containerization, to help you tackle the political as well as other technical roadblocks that can occur when change is needed."<br><br>
With the changes that MacKay's team has led over the past year and a half, cloud native will be part of Ancestry's technological genealogy for years to come. MacKay has been such a champion of the technology that he says people have jokingly accused him of having a Kubernetes tattoo.<br><br>
"I really don't," he says with a laugh. "But I'm passionate. I'm not exclusive to any technology; I use whatever I need that's out there that makes us great. If it's something else, I'll use it. But right now I believe in Kubernetes. I believe in containerization. I think if we can get there and establish ourselves in that world, we will be further along and far better off being agile and all the things we talk about, and it'll go forward."<br><br>
He pauses. "So, yeah, I guess you can say I'm an evangelist for Kubernetes," he says. "But I'm not getting a tattoo!"
<p>Looking ahead, MacKay sees Ancestry maximizing the benefits of Kubernetes in 2017. "We're very close to having everything that should be or could be in a Linux-friendly world in Kubernetes by the end of the year," he says, adding that he's looking forward to features such as federation and horizontal pod autoscaling that are currently in the works. "Kubernetes has been very wonderful for us and we continue to ride the wave."</p>
<p>That wave, he points out, has everything to do with the vibrant Kubernetes community, which has grown by leaps and bounds since Ancestry joined it as an early adopter. "This is just a very rough way of judging it, but on Slack in June 2015, there were maybe 500 on there," MacKay says. "The last time I looked there were maybe 8,500 just on the Slack channel. There are so many major companies and different kinds of companies involved now. It's the variety of contributors, the number of contributors, the incredibly competent and friendly community."</p>
</div>
</section>
<p>As much as he and his team at Ancestry have benefited from what he calls "the goodness and the technical abilities of many" in the community, they've also contributed information about best practices, logged bug issues and participated in the open source conversation. And they've been active in attending <a href="https://www.meetup.com/Utah-Kubernetes-Meetup/">meetups</a> to help educate and give back to the local tech community in Utah. Says MacKay: "We're trying to give back as far as our experience goes, rather than just code."</p>
<p>When he meets with companies considering adopting cloud native infrastructure, the best advice he has to give from Ancestry's Kubernetes journey is this: "Start small, but with hard problems," he says. And "you need a patron who understands the vision of containerization, to help you tackle the political as well as other technical roadblocks that can occur when change is needed."</p>
<p>With the changes that MacKay's team has led over the past year and a half, cloud native will be part of Ancestry's technological genealogy for years to come. MacKay has been such a champion of the technology that he says people have jokingly accused him of having a Kubernetes tattoo.</p>
<p>"I really don't," he says with a laugh. "But I'm passionate. I'm not exclusive to any technology; I use whatever I need that's out there that makes us great. If it's something else, I'll use it. But right now I believe in Kubernetes. I believe in containerization. I think if we can get there and establish ourselves in that world, we will be further along and far better off being agile and all the things we talk about, and it'll go forward."</p>
<p>He pauses. "So, yeah, I guess you can say I'm an evangelist for Kubernetes," he says. "But I'm not getting a tattoo!"</p>
@@ -3,94 +3,80 @@ title: Ant Financial Case Study
linkTitle: ant-financial
case_study_styles: true
cid: caseStudies
css: /css/style_case_studies.css
featured: false
new_case_study_styles: true
heading_background: /images/case-studies/antfinancial/banner1.jpg
heading_title_logo: /images/antfinancial_logo.png
subheading: >
Ant Financial's Hypergrowth Strategy Using Kubernetes
case_study_details:
- Company: Ant Financial
- Location: Hangzhou, China
- Industry: Financial Services
---
<div class="banner1" style="background-image: url('/images/case-studies/antfinancial/banner1.jpg')">
<h1> CASE STUDY:<img src="/images/antfinancial_logo.png" class="header_logo" style="width:20%;margin-bottom:-2.5%"><br> <div class="subhead" style="margin-top:1%">Ant Financials Hypergrowth Strategy Using Kubernetes
<h2>Challenge</h2>
</div></h1>
<p>Officially founded in October 2014, <a href="https://www.antfin.com/index.htm?locale=en_us">Ant Financial</a> originated from <a href="https://global.alipay.com/">Alipay</a>, the world's largest online payment platform that launched in 2004. The company also offers numerous other services leveraging technology innovation. With the volume of transactions Alipay handles for its 900+ million users worldwide (through its local and global partners)—256,000 transactions per second at the peak of Double 11 Singles Day 2017, and total gross merchandise value of $31 billion for Singles Day 2018—not to mention that of its other services, Ant Financial faces "data processing challenge in a whole new way," says Haojie Hang, who is responsible for Product Management for the Storage and Compute Group. "We see three major problems of operating at that scale: how to provide real-time compute, storage, and processing capability, for instance to make real-time recommendations for fraud detection; how to provide intelligence on top of this data, because there's too much data and then we're not getting enough insight; and how to apply security in the application level, in the middleware level, the system level, even the chip level." In order to provide reliable and consistent services to its customers, Ant Financial embraced containers in early 2014, and soon needed an orchestration solution for the tens-of-thousands-of-node clusters in its data centers.</p>
</div>
<h2>Solution</h2>
<div class="details">
Company &nbsp;<b>Ant Financial</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Hangzhou, China</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Financial Services</b>
</div>
<p>After investigating several technologies, the team chose <a href="https://kubernetes.io/">Kubernetes</a> for orchestration, as well as a number of other CNCF projects, including <a href="https://prometheus.io/">Prometheus</a>, <a href="https://opentracing.io/">OpenTracing</a>, <a href="https://coreos.com/etcd/">etcd</a> and <a href="https://coredns.io/">CoreDNS</a>. "In late 2016, we decided that Kubernetes will be the de facto standard," says Hang. "Looking back, we made the right bet on the right technology. But then we needed to move the production workload from the legacy infrastructure to the latest Kubernetes-enabled platform, and that took some time, because we are very careful in terms of reliability and consistency." All core financial systems were containerized by November 2017, and the migration to Kubernetes is ongoing.</p>
<hr>
<section class="section1">
<div class="cols">
<div class="col1" style="width:100%"">
<h2>Challenge</h2>
Officially founded in October 2014, <a href="https://www.antfin.com/index.htm?locale=en_us">Ant Financial</a> originated from <a href="https://global.alipay.com/">Alipay</a>, the worlds largest online payment platform that launched in 2004. The company also offers numerous other services leveraging technology innovation. With the volume of transactions Alipay handles for its 900+ million users worldwide (through its local and global partners)—256,000 transactions per second at the peak of Double 11 Singles Day 2017, and total gross merchandise value of $31 billion for Singles Day 2018—not to mention that of its other services, Ant Financial faces “data processing challenge in a whole new way,” says Haojie Hang, who is responsible for Product Management for the Storage and Compute Group. “We see three major problems of operating at that scale: how to provide real-time compute, storage, and processing capability, for instance to make real-time recommendations for fraud detection; how to provide intelligence on top of this data, because theres too much data and then were not getting enough insight; and how to apply security in the application level, in the middleware level, the system level, even the chip level.” In order to provide reliable and consistent services to its customers, Ant Financial embraced containers in early 2014, and soon needed an orchestration solution for the tens-of-thousands-of-node clusters in its data centers.
<h2>Solution</h2>
After investigating several technologies, the team chose <a href="https://kubernetes.io/">Kubernetes</a> for orchestration, as well as a number of other CNCF projects, including <a href="https://prometheus.io/">Prometheus</a>, <a href="https://opentracing.io/">OpenTracing</a>, <a href="https://coreos.com/etcd/">etcd</a> and <a href="https://coredns.io/">CoreDNS</a>. “In late 2016, we decided that Kubernetes will be the de facto standard,” says Hang. “Looking back, we made the right bet on the right technology. But then we needed to move the production workload from the legacy infrastructure to the latest Kubernetes-enabled platform, and that took some time, because we are very careful in terms of reliability and consistency.” All core financial systems were containerized by November 2017, and the migration to Kubernetes is ongoing.
<br>
<h2>Impact</h2>
“Weve seen at least tenfold in improvement in terms of the operations with cloud native technology, which means you can have tenfold increase in terms of output,” says Hang. Ant also provides its fully integrated financial cloud platform to business partners around the world, and hopes to power the next generation of digital banking with deep experience in service innovation and technology expertise. Hang says the team hasnt begun to focus on optimizing the Kubernetes platform, either: “Because were still in the hyper growth stage, were not in a mode where we do cost saving yet.”
</div>
</div>
</section>
<div class="banner2">
<div class="banner2text">
"In late 2016, we decided that Kubernetes will be the de facto standard. Looking back, we made the right bet on the right technology."
<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- HAOJIE HANG, PRODUCT MANAGEMENT, ANT FINANCIAL</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>A spinoff of the multinational conglomerate Alibaba, Ant Financial boasts a $150+ billion valuation and the scale to match. The fintech startup, launched in 2014, is comprised of Alipay, the worlds largest online payment platform, and numerous other services leveraging technology innovation.</h2>
And the volume of transactions that Alipay handles for over 900 million users worldwide (through its local and global partners) is staggering: 256,000 per second at the peak of Double 11 Singles Day 2017, and total gross merchandise value of $31 billion for Singles Day 2018. With the mission of “bringing the world equal opportunities,” Ant Financial is dedicated to creating an open, shared credit system and financial services platform through technology innovations.
<br><br>
Combine that with the operations of its other properties—such as the Huabei online credit system, Jiebei lending service, and the 350-million-user <a href="https://en.wikipedia.org/wiki/Ant_Forest">Ant Forest</a> green energy mobile app—and Ant Financial faces “data processing challenge in a whole new way,” says Haojie Hang, who is responsible for Product Management for the Storage and Compute Group. “We see three major problems of operating at that scale: how to provide real-time compute, storage, and processing capability, for instance to make real-time recommendations for fraud detection; how to provide intelligence on top of this data, because theres too much data and were not getting enough insight; and how to apply security in the application level, in the middleware level, the system level, even the chip level.”
<br><br>
To address those challenges and provide reliable and consistent services to its customers, Ant Financial embraced <a href="https://www.docker.com/">Docker</a> containerization in 2014. But they soon realized that they needed an orchestration solution for some tens-of-thousands-of-node clusters in the companys data centers.
</div>
</section>
<div class="banner3" style="background-image: url('/images/case-studies/antfinancial/banner3.jpg')">
<div class="banner3text">
"On Double 11 this year, we had plenty of nodes on Kubernetes, but compared to the whole scale of our infrastructure, this is still in progress."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- RANGER YU, GLOBAL TECHNOLOGY PARTNERSHIP & DEVELOPMENT, ANT FINANCIAL</span>
<p>"We've seen at least tenfold in improvement in terms of the operations with cloud native technology, which means you can have tenfold increase in terms of output," says Hang. Ant also provides its fully integrated financial cloud platform to business partners around the world, and hopes to power the next generation of digital banking with deep experience in service innovation and technology expertise. Hang says the team hasn't begun to focus on optimizing the Kubernetes platform, either: "Because we're still in the hyper growth stage, we're not in a mode where we do cost saving yet."</p>
</div>
</div>
<section class="section3">
<div class="fullcol">
The team investigated several technologies, including Docker Swarm and Mesos. “We did a lot of POCs, but were very careful in terms of production systems, because we want to make sure we dont lose any data,” says Hang. “You cannot afford to have a service downtime for one minute; even one second has a very, very big impact. We operate every day under pressure to provide reliable and consistent services to consumers and businesses in China and globally.”
<br><br>
Ultimately, Hang says Ant chose Kubernetes because it checked all the boxes: a strong community, technology that “will be relevant in the next three to five years,” and a good match for the companys engineering talent. “In late 2016, we decided that Kubernetes will be the de facto standard,” says Hang. “Looking back, we made the right bet on the right technology. But then we needed to move the production workload from the legacy infrastructure to the latest Kubernetes-enabled platform. We spent a lot of time learning and then training our people to build applications on Kubernetes well.”
<br><br>
All core financial systems were containerized by November 2017, and the migration to Kubernetes is ongoing. Ants platform also leverages a number of other CNCF projects, including <a href="https://prometheus.io/">Prometheus</a>, <a href="https://opentracing.io/">OpenTracing</a>, <a href="https://coreos.com/etcd/">etcd</a> and <a href="https://coredns.io/">CoreDNS</a>. “On Double 11 this year, we had plenty of nodes on Kubernetes, but compared to the whole scale of our infrastructure, this is still in progress,” says Ranger Yu, Global Technology Partnership & Development.
</div>
</section>
<div class="banner4" style="background-image: url('/images/case-studies/antfinancial/banner4.jpg')">
<div class="banner4text">
"Were very grateful for CNCF and this amazing technology, which we need as we continue to scale globally. Were definitely embracing the community and open source more in the future." <br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- HAOJIE HANG, PRODUCT MANAGEMENT, ANT FINANCIAL</span>
</div>
</div>
{{< case-studies/quote author="HAOJIE HANG, PRODUCT MANAGEMENT, ANT FINANCIAL" >}}
"In late 2016, we decided that Kubernetes will be the de facto standard. Looking back, we made the right bet on the right technology."
{{< /case-studies/quote >}}
<section class="section5" style="padding:0px !important">
<div class="fullcol">
Still, there has already been an impact. “Cloud native technology has benefited us greatly in terms of efficiency,” says Hang. “In general, we want to make sure our infrastructure is nimble and flexible enough for the work that could happen tomorrow. Thats the goal. And with cloud native technology, weve seen at least tenfold improvement in operations, which means you can have tenfold increase in terms of output. Lets say you are operating 10 nodes with one person. With cloud native, tomorrow you can have 100 nodes.”
<br><br>
Ant also provides its financial cloud platform to partners around the world, and hopes to power the next generation of digital banking with deep experience in service innovation and technology expertise. Hang says the team hasnt begun to focus on optimizing the Kubernetes platform, either: “Because were still in the hyper growth stage, were not in a mode where we do cost-saving yet.”
<br><br>
The CNCF community has also been a valuable asset during Ant Financials move to cloud native. “If you are applying a new technology, its very good to have a community to discuss technical problems with other users,” says Hang. “Were very grateful for CNCF and this amazing technology, which we need as we continue to scale globally. Were definitely embracing the community and open sourcing more in the future.”
</div>
{{< case-studies/lead >}}
A spinoff of the multinational conglomerate Alibaba, Ant Financial boasts a $150+ billion valuation and the scale to match. The fintech startup, launched in 2014, is comprised of Alipay, the world's largest online payment platform, and numerous other services leveraging technology innovation.
{{< /case-studies/lead >}}
<div class="banner5" >
<div class="banner5text">
"In China, we are the North Star in terms of innovation in financial and other related services,” says Hang. “We definitely want to make sure were still leading in the next 5 to 10 years with our investment in technology."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- RANGER YU, GLOBAL TECHNOLOGY PARTNERSHIP & DEVELOPMENT, ANT FINANCIAL</span></div>
</div>
<p>And the volume of transactions that Alipay handles for over 900 million users worldwide (through its local and global partners) is staggering: 256,000 per second at the peak of Double 11 Singles Day 2017, and total gross merchandise value of $31 billion for Singles Day 2018. With the mission of "bringing the world equal opportunities," Ant Financial is dedicated to creating an open, shared credit system and financial services platform through technology innovations.</p>
<div class="fullcol">
In fact, the company has already started to open source some of its <a href="https://github.com/alipay">cloud native middleware</a>. “We are going to be very proactive about that,” says Yu. “CNCF provided a platform so everyone can plug in or contribute components. This is very good open source governance.”
<br><br>
Looking ahead, the Ant team will continue to evaluate many other CNCF projects. Building a service mesh community in China, the team has brought together many China-based companies and developers to discuss the potential of that technology. “Service mesh is very attractive for Chinese developers and end users because we have a lot of legacy systems running now, and its an ideal mid-layer to glue everything together, both new and legacy,” says Hang. “For new technologies, we look very closely at whether they will last.”
<br><br>
At Ant, Kubernetes passed that test with flying colors, and the team hopes other companies will follow suit. “In China, we are the North Star in terms of innovation in financial and other related services,” says Hang. “We definitely want to make sure were still leading in the next 5 to 10 years with our investment in technology.”
<p>Combine that with the operations of its other properties—such as the Huabei online credit system, Jiebei lending service, and the 350-million-user <a href="https://en.wikipedia.org/wiki/Ant_Forest">Ant Forest</a> green energy mobile app—and Ant Financial faces "data processing challenge in a whole new way," says Haojie Hang, who is responsible for Product Management for the Storage and Compute Group. "We see three major problems of operating at that scale: how to provide real-time compute, storage, and processing capability, for instance to make real-time recommendations for fraud detection; how to provide intelligence on top of this data, because there's too much data and we're not getting enough insight; and how to apply security in the application level, in the middleware level, the system level, even the chip level."</p>
</div>
</section>
<p>To address those challenges and provide reliable and consistent services to its customers, Ant Financial embraced <a href="https://www.docker.com/">Docker</a> containerization in 2014. But they soon realized that they needed an orchestration solution for some tens-of-thousands-of-node clusters in the company's data centers.</p>
{{< case-studies/quote
image="/images/case-studies/antfinancial/banner3.jpg"
author="RANGER YU, GLOBAL TECHNOLOGY PARTNERSHIP & DEVELOPMENT, ANT FINANCIAL"
>}}
"On Double 11 this year, we had plenty of nodes on Kubernetes, but compared to the whole scale of our infrastructure, this is still in progress."
{{< /case-studies/quote >}}
<p>The team investigated several technologies, including Docker Swarm and Mesos. "We did a lot of POCs, but we're very careful in terms of production systems, because we want to make sure we don't lose any data," says Hang. "You cannot afford to have a service downtime for one minute; even one second has a very, very big impact. We operate every day under pressure to provide reliable and consistent services to consumers and businesses in China and globally."</p>
<p>Ultimately, Hang says Ant chose Kubernetes because it checked all the boxes: a strong community, technology that "will be relevant in the next three to five years," and a good match for the company's engineering talent. "In late 2016, we decided that Kubernetes will be the de facto standard," says Hang. "Looking back, we made the right bet on the right technology. But then we needed to move the production workload from the legacy infrastructure to the latest Kubernetes-enabled platform. We spent a lot of time learning and then training our people to build applications on Kubernetes well."</p>
<p>All core financial systems were containerized by November 2017, and the migration to Kubernetes is ongoing. Ant's platform also leverages a number of other CNCF projects, including <a href="https://prometheus.io/">Prometheus</a>, <a href="https://opentracing.io/">OpenTracing</a>, <a href="https://coreos.com/etcd/">etcd</a> and <a href="https://coredns.io/">CoreDNS</a>. "On Double 11 this year, we had plenty of nodes on Kubernetes, but compared to the whole scale of our infrastructure, this is still in progress," says Ranger Yu, Global Technology Partnership & Development.</p>
{{< case-studies/quote
image="/images/case-studies/antfinancial/banner4.jpg"
author="HAOJIE HANG, PRODUCT MANAGEMENT, ANT FINANCIAL"
>}}
"We're very grateful for CNCF and this amazing technology, which we need as we continue to scale globally. We're definitely embracing the community and open source more in the future."
{{< /case-studies/quote >}}
<p>Still, there has already been an impact. "Cloud native technology has benefited us greatly in terms of efficiency," says Hang. "In general, we want to make sure our infrastructure is nimble and flexible enough for the work that could happen tomorrow. That's the goal. And with cloud native technology, we've seen at least tenfold improvement in operations, which means you can have tenfold increase in terms of output. Let's say you are operating 10 nodes with one person. With cloud native, tomorrow you can have 100 nodes."</p>
<p>Ant also provides its financial cloud platform to partners around the world, and hopes to power the next generation of digital banking with deep experience in service innovation and technology expertise. Hang says the team hasn't begun to focus on optimizing the Kubernetes platform, either: "Because we're still in the hyper growth stage, we're not in a mode where we do cost-saving yet."</p>
<p>The CNCF community has also been a valuable asset during Ant Financial's move to cloud native. "If you are applying a new technology, it's very good to have a community to discuss technical problems with other users," says Hang. "We're very grateful for CNCF and this amazing technology, which we need as we continue to scale globally. We're definitely embracing the community and open sourcing more in the future."</p>
{{< case-studies/quote
image="/images/case-studies/antfinancial/banner4.jpg"
author="RANGER YU, GLOBAL TECHNOLOGY PARTNERSHIP & DEVELOPMENT, ANT FINANCIAL"
>}}
"In China, we are the North Star in terms of innovation in financial and other related services," says Hang. "We definitely want to make sure we're still leading in the next 5 to 10 years with our investment in technology."
{{< /case-studies/quote >}}
<p>In fact, the company has already started to open source some of its <a href="https://github.com/alipay">cloud native middleware</a>. "We are going to be very proactive about that," says Yu. "CNCF provided a platform so everyone can plug in or contribute components. This is very good open source governance."</p>
<p>Looking ahead, the Ant team will continue to evaluate many other CNCF projects. Building a service mesh community in China, the team has brought together many China-based companies and developers to discuss the potential of that technology. "Service mesh is very attractive for Chinese developers and end users because we have a lot of legacy systems running now, and it's an ideal mid-layer to glue everything together, both new and legacy," says Hang. "For new technologies, we look very closely at whether they will last."</p>
<p>At Ant, Kubernetes passed that test with flying colors, and the team hopes other companies will follow suit. "In China, we are the North Star in terms of innovation in financial and other related services," says Hang. "We definitely want to make sure we're still leading in the next 5 to 10 years with our investment in technology."</p>
+60 -74
View File
@@ -1,99 +1,85 @@
---
title: AppDirect Case Study
linkTitle: AppDirect
case_study_styles: true
cid: caseStudies
css: /css/style_case_studies.css
logo: appdirect_featured_logo.png
featured: true
weight: 4
quote: >
We made the right decisions at the right time. Kubernetes and the cloud native technologies are now seen as the de facto ecosystem.
new_case_study_styles: true
heading_background: /images/case-studies/appdirect/banner1.jpg
heading_title_logo: /images/appdirect_logo.png
subheading: >
AppDirect: How AppDirect Supported the 10x Growth of Its Engineering Staff with Kubernetess
case_study_details:
- Company: AppDirect
- Location: San Francisco, California
- Industry: Software
---
<div class="banner1" style="background-image: url('/images/case-studies/appdirect/banner1.jpg')">
<h1> CASE STUDY:<img src="/images/appdirect_logo.png" class="header_logo" style="margin-bottom:-2%"><br> <div class="subhead" style="margin-top:1%;font-size:0.5em">AppDirect: How AppDirect Supported the 10x Growth of Its Engineering Staff with Kubernetess
</div></h1>
<h2>Challenge</h2>
</div>
<p><a href="https://www.appdirect.com/">AppDirect</a> provides an end-to-end commerce platform for cloud-based products and services. When Director of Software Development Pierre-Alexandre Lacerte began working there in 2014, the company had a monolith application deployed on a "tomcat infrastructure, and the whole release process was complex for what it should be," he says. "There were a lot of manual steps involved, with one engineer building a feature, then another team picking up the change. So you had bottlenecks in the pipeline to ship a feature to production." At the same time, the engineering team was growing, and the company realized it needed a better infrastructure to both support that growth and increase velocity.</p>
<div class="details">
Company &nbsp;<b>AppDirect</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>San Francisco, California
</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Software</b>
</div>
<h2>Solution</h2>
<p>"My idea was: Let's create an environment where teams can deploy their services faster, and they will say, 'Okay, I don't want to build in the monolith anymore. I want to build a service,'" says Lacerte. They considered and prototyped several different technologies before deciding to adopt <a href="https://kubernetes.io/">Kubernetes</a> in early 2016. Lacerte's team has also integrated <a href="https://prometheus.io/">Prometheus</a> monitoring into the platform; tracing is next. Today, AppDirect has more than 50 microservices in production and 15 Kubernetes clusters deployed on <a href="https://aws.amazon.com/">AWS</a> and on premise around the world.</p>
<hr>
<section class="section1">
<div class="cols">
<div class="col1" style="width:100%"">
<h2>Challenge</h2>
<a href="https://www.appdirect.com/">AppDirect</a> provides an end-to-end commerce platform for cloud-based products and services. When Director of Software Development Pierre-Alexandre Lacerte began working there in 2014, the company had a monolith application deployed on a "tomcat infrastructure, and the whole release process was complex for what it should be," he says. "There were a lot of manual steps involved, with one engineer building a feature, then another team picking up the change. So you had bottlenecks in the pipeline to ship a feature to production." At the same time, the engineering team was growing, and the company realized it needed a better infrastructure to both support that growth and increase velocity.
<br><br>
<h2>Solution</h2>
"My idea was: Lets create an environment where teams can deploy their services faster, and they will say, Okay, I dont want to build in the monolith anymore. I want to build a service," says Lacerte. They considered and prototyped several different technologies before deciding to adopt <a href="https://kubernetes.io/">Kubernetes</a> in early 2016. Lacertes team has also integrated <a href="https://prometheus.io/">Prometheus</a> monitoring into the platform; tracing is next. Today, AppDirect has more than 50 microservices in production and 15 Kubernetes clusters deployed on <a href="https://aws.amazon.com/">AWS</a> and on premise around the world.
<br><br>
<h2>Impact</h2>
The Kubernetes platform has helped support the engineering teams 10x growth over the past few years. Coupled with the fact that they were continually adding new features, Lacerte says, "I think our velocity would have slowed down a lot if we didnt have this new infrastructure." Moving to Kubernetes and services has meant that deployments have become much faster due to less dependency on custom-made, brittle shell scripts with SCP commands. Time to deploy a new version has shrunk from 4 hours to a few minutes. Additionally, the company invested a lot of effort to make things self-service for developers. "Onboarding a new service doesnt require <a href="https://www.atlassian.com/software/jira">Jira</a> tickets or meeting with three different teams," says Lacerte. Today, the company sees 1,600 deployments per week, compared to 1-30 before. The company also achieved cost savings by moving its marketplace and billing monoliths to Kubernetes from legacy EC2 hosts as well as by leveraging autoscaling, as traffic is higher during business hours.
</div>
</div>
</section>
<div class="banner2">
<div class="banner2text">
"It was an immense engineering culture shift, but the benefits are undeniable in terms of scale and speed."
<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Alexandre Gervais, Staff Software Developer, AppDirect</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>With its end-to-end commerce platform for cloud-based products and services, <a href="https://www.appdirect.com/">AppDirect</a> has been helping organizations such as Comcast and GoDaddy simplify the digital supply chain since 2009. </h2>
<br>
When Director of Software Development Pierre-Alexandre Lacerte started working there in 2014, the company had a monolith application deployed on a "tomcat infrastructure, and the whole release process was complex for what it should be," he says. "There were a lot of manual steps involved, with one engineer building a feature then creating a pull request, and a QA or another engineer validating the feature. Then it gets merged and someone else will take care of the deployment. So we had bottlenecks in the pipeline to ship a feature to production." <br><br>
At the same time, the engineering team of 40 was growing, and the company wanted to add an increasing number of features to its products. As a member of the platform team, Lacerte began hearing from multiple teams that wanted to deploy applications using different frameworks and languages, from <a href="https://nodejs.org/">Node.js</a> to <a href="http://spring.io/projects/spring-boot">Spring Boot Java</a>. He soon realized that in order to both support growth and increase velocity, the company needed a better infrastructure, and a system in which teams are autonomous, can do their own deploys, and be responsible for their services in production.
</div>
</section>
<div class="banner3" style="background-image: url('/images/case-studies/appdirect/banner3.jpg')">
<div class="banner3text">
"We made the right decisions at the right time. Kubernetes and the cloud native technologies are now seen as the de facto ecosystem. We know where to focus our efforts in order to tackle the new wave of challenges we face as we scale out. The community is so active and vibrant, which is a great complement to our awesome internal team."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Alexandre Gervais, Staff Software Developer, AppDirect
</span>
<p>The Kubernetes platform has helped support the engineering team's 10x growth over the past few years. Coupled with the fact that they were continually adding new features, Lacerte says, "I think our velocity would have slowed down a lot if we didn't have this new infrastructure." Moving to Kubernetes and services has meant that deployments have become much faster due to less dependency on custom-made, brittle shell scripts with SCP commands. Time to deploy a new version has shrunk from 4 hours to a few minutes. Additionally, the company invested a lot of effort to make things self-service for developers. "Onboarding a new service doesn't require <a href="https://www.atlassian.com/software/jira">Jira</a> tickets or meeting with three different teams," says Lacerte. Today, the company sees 1,600 deployments per week, compared to 1-30 before. The company also achieved cost savings by moving its marketplace and billing monoliths to Kubernetes from legacy EC2 hosts as well as by leveraging autoscaling, as traffic is higher during business hours.</p>
</div>
</div>
<section class="section3">
<div class="fullcol">
From the beginning, Lacerte says, "My idea was: Lets create an environment where teams can deploy their services faster, and they will say, Okay, I dont want to build in the monolith anymore. I want to build a service." (Lacerte left the company in 2019.)<br><br>
Working with the operations team, Lacertes group got more control and access to the companys <a href="https://aws.amazon.com/">AWS infrastructure</a>, and started prototyping several orchestration technologies. "Back then, Kubernetes was a little underground, unknown," he says. "But we looked at the community, the number of pull requests, the velocity on GitHub, and we saw it was getting traction. And we found that it was much easier for us to manage than the other technologies."
They spun up the first few services on Kubernetes using <a href="https://www.chef.io/">Chef</a> and <a href="https://www.terraform.io/">Terraform</a> provisioning, and as more services were added, more automation was, too. "We have clusters around the world—in Korea, in Australia, in Germany, and in the U.S.," says Lacerte. "Automation is critical for us." Theyre now largely using <a href="https://github.com/kubernetes/kops">Kops</a>, and are looking at managed Kubernetes offerings from several cloud providers.<br><br>
Today, though the monolith still exists, there are fewer and fewer commits and features. All teams are deploying on the new infrastructure, and services are the norm. AppDirect now has more than 50 microservices in production and 15 Kubernetes clusters deployed on AWS and on premise around the world.<br><br>
Lacertes strategy ultimately worked because of the very real impact the Kubernetes platform has had to deployment time. Due to less dependency on custom-made, brittle shell scripts with SCP commands, time to deploy a new version has shrunk from 4 hours to a few minutes. Additionally, the company invested a lot of effort to make things self-service for developers. "Onboarding a new service doesnt require <a href="https://www.atlassian.com/software/jira">Jira</a> tickets or meeting with three different teams," says Lacerte. Today, the company sees 1,600 deployments per week, compared to 1-30 before.
</div>
</section>
<div class="banner4" style="background-image: url('/images/case-studies/appdirect/banner4.jpg');width:100%;">
<div class="banner4text">
"I think our velocity would have slowed down a lot if we didnt have this new infrastructure."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Pierre-Alexandre Lacerte, Director of Software Development, AppDirect</span>
</div>
</div>
{{< case-studies/quote author="Alexandre Gervais, Staff Software Developer, AppDirect" >}}
"It was an immense engineering culture shift, but the benefits are undeniable in terms of scale and speed."
{{< /case-studies/quote >}}
<section class="section5" style="padding:0px !important">
{{< case-studies/lead >}}
With its end-to-end commerce platform for cloud-based products and services, <a href="https://www.appdirect.com/">AppDirect</a> has been helping organizations such as Comcast and GoDaddy simplify the digital supply chain since 2009.
{{< /case-studies/lead >}}
<div class="fullcol">
Additionally, the Kubernetes platform has helped support the engineering teams 10x growth over the past few years. "Ownership, a core value of AppDirect, reflects in our ability to ship services independently of our monolith code base," says Staff Software Developer Alexandre Gervais, who worked with Lacerte on the initiative. "Small teams now own critical parts of our business domain model, and they operate in their decoupled domain of expertise, with limited knowledge of the entire codebase. This reduces and isolates some of the complexity." Coupled with the fact that they were continually adding new features, Lacerte says, "I think our velocity would have slowed down a lot if we didnt have this new infrastructure."
The company also achieved cost savings by moving its marketplace and billing monoliths to Kubernetes from legacy EC2 hosts as well as by leveraging autoscaling, as traffic is higher during business hours.<br><br>
AppDirects cloud native stack also includes <a href="https://grpc.io/">gRPC</a> and <a href="https://www.fluentd.org/">Fluentd</a>, and the team is currently working on setting up <a href="https://opencensus.io/">OpenCensus</a>. The platform already has <a href="https://prometheus.io/">Prometheus</a> integrated, so "when teams deploy their service, they have their notifications, alerts and configurations," says Lacerte. "For example, in the test environment, I want to get a message on Slack, and in production, I want a <a href="https://slack.com/">Slack</a> message and I also want to get paged. We have integration with pager duty. Teams have more ownership on their services."
<p>When Director of Software Development Pierre-Alexandre Lacerte started working there in 2014, the company had a monolith application deployed on a "tomcat infrastructure, and the whole release process was complex for what it should be," he says. "There were a lot of manual steps involved, with one engineer building a feature then creating a pull request, and a QA or another engineer validating the feature. Then it gets merged and someone else will take care of the deployment. So we had bottlenecks in the pipeline to ship a feature to production."</p>
</div>
<p>At the same time, the engineering team of 40 was growing, and the company wanted to add an increasing number of features to its products. As a member of the platform team, Lacerte began hearing from multiple teams that wanted to deploy applications using different frameworks and languages, from <a href="https://nodejs.org/">Node.js</a> to <a href="http://spring.io/projects/spring-boot">Spring Boot Java</a>. He soon realized that in order to both support growth and increase velocity, the company needed a better infrastructure, and a system in which teams are autonomous, can do their own deploys, and be responsible for their services in production.</p>
<div class="banner5" >
<div class="banner5text">
"We moved from a culture limited to pushing code in a branch to exciting new responsibilities outside of the code base: deployment of features and configurations; monitoring of application and business metrics; and on-call support in case of outages. It was an immense engineering culture shift, but the benefits are undeniable in terms of scale and speed."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Pierre-Alexandre Lacerte, Director of Software Development, AppDirect</span></div>
</div>
{{< case-studies/quote
image="/images/case-studies/appdirect/banner3.jpg"
author="Alexandre Gervais, Staff Software Developer, AppDirect"
>}}
"We made the right decisions at the right time. Kubernetes and the cloud native technologies are now seen as the de facto ecosystem. We know where to focus our efforts in order to tackle the new wave of challenges we face as we scale out. The community is so active and vibrant, which is a great complement to our awesome internal team."
{{< /case-studies/quote >}}
<div class="fullcol">
That of course also means more responsibility. "We asked engineers to expand their horizons," says Gervais. "We moved from a culture limited to pushing code in a branch to exciting new responsibilities outside of the code base: deployment of features and configurations; monitoring of application and business metrics; and on-call support in case of outages. It was an immense engineering culture shift, but the benefits are undeniable in terms of scale and speed." <br><br>
As the engineering ranks continue to grow, the platform team has a new challenge, of making sure that the Kubernetes platform is accessible and easily utilized by everyone. "How can we make sure that when we add more people to our team that they are efficient, productive, and know how to ramp up on the platform?" Lacerte says. So we have the evangelists, the documentation, some project examples. We do demos, we have AMA sessions. Were trying different strategies to get everyones attention."<br><br>
Three and a half years into their Kubernetes journey, Gervais feels AppDirect "made the right decisions at the right time," he says. "Kubernetes and the cloud native technologies are now seen as the de facto ecosystem. We know where to focus our efforts in order to tackle the new wave of challenges we face as we scale out. The community is so active and vibrant, which is a great complement to our awesome internal team. Going forward, our focus will really be geared towards benefiting from the ecosystem by providing added business value in our day-to-day operations."
<p>From the beginning, Lacerte says, "My idea was: Let's create an environment where teams can deploy their services faster, and they will say, 'Okay, I don't want to build in the monolith anymore. I want to build a service.'" (Lacerte left the company in 2019.)</p>
<p>Working with the operations team, Lacerte's group got more control and access to the company's <a href="https://aws.amazon.com/">AWS infrastructure</a>, and started prototyping several orchestration technologies. "Back then, Kubernetes was a little underground, unknown," he says. "But we looked at the community, the number of pull requests, the velocity on GitHub, and we saw it was getting traction. And we found that it was much easier for us to manage than the other technologies."</p>
</div>
</section>
<p>They spun up the first few services on Kubernetes using <a href="https://www.chef.io/">Chef</a> and <a href="https://www.terraform.io/">Terraform</a> provisioning, and as more services were added, more automation was, too. "We have clusters around the world—in Korea, in Australia, in Germany, and in the U.S.," says Lacerte. "Automation is critical for us." They're now largely using <a href="https://github.com/kubernetes/kops">Kops</a>, and are looking at managed Kubernetes offerings from several cloud providers.</p>
<p>Today, though the monolith still exists, there are fewer and fewer commits and features. All teams are deploying on the new infrastructure, and services are the norm. AppDirect now has more than 50 microservices in production and 15 Kubernetes clusters deployed on AWS and on premise around the world.</p>
<p>Lacerte's strategy ultimately worked because of the very real impact the Kubernetes platform has had to deployment time. Due to less dependency on custom-made, brittle shell scripts with SCP commands, time to deploy a new version has shrunk from 4 hours to a few minutes. Additionally, the company invested a lot of effort to make things self-service for developers. "Onboarding a new service doesn't require <a href="https://www.atlassian.com/software/jira">Jira</a> tickets or meeting with three different teams," says Lacerte. Today, the company sees 1,600 deployments per week, compared to 1-30 before.</p>
{{< case-studies/quote
image="/images/case-studies/appdirect/banner4.jpg"
author="Pierre-Alexandre Lacerte, Director of Software Development, AppDirect"
>}}
"I think our velocity would have slowed down a lot if we didn't have this new infrastructure."
{{< /case-studies/quote >}}
<p>Additionally, the Kubernetes platform has helped support the engineering team's 10x growth over the past few years. "Ownership, a core value of AppDirect, reflects in our ability to ship services independently of our monolith code base," says Staff Software Developer Alexandre Gervais, who worked with Lacerte on the initiative. "Small teams now own critical parts of our business domain model, and they operate in their decoupled domain of expertise, with limited knowledge of the entire codebase. This reduces and isolates some of the complexity." Coupled with the fact that they were continually adding new features, Lacerte says, "I think our velocity would have slowed down a lot if we didn't have this new infrastructure."</p>
<p>The company also achieved cost savings by moving its marketplace and billing monoliths to Kubernetes from legacy EC2 hosts as well as by leveraging autoscaling, as traffic is higher during business hours.</p>
<p>AppDirect's cloud native stack also includes <a href="https://grpc.io/">gRPC</a> and <a href="https://www.fluentd.org/">Fluentd</a>, and the team is currently working on setting up <a href="https://opencensus.io/">OpenCensus</a>. The platform already has <a href="https://prometheus.io/">Prometheus</a> integrated, so "when teams deploy their service, they have their notifications, alerts and configurations," says Lacerte. "For example, in the test environment, I want to get a message on Slack, and in production, I want a <a href="https://slack.com/">Slack</a> message and I also want to get paged. We have integration with pager duty. Teams have more ownership on their services."</p>
{{< case-studies/quote author="Pierre-Alexandre Lacerte, Director of Software Development, AppDirect" >}}
"We moved from a culture limited to 'pushing code in a branch' to exciting new responsibilities outside of the code base: deployment of features and configurations; monitoring of application and business metrics; and on-call support in case of outages. It was an immense engineering culture shift, but the benefits are undeniable in terms of scale and speed."
{{< /case-studies/quote >}}
<p>That of course also means more responsibility. "We asked engineers to expand their horizons," says Gervais. "We moved from a culture limited to 'pushing code in a branch' to exciting new responsibilities outside of the code base: deployment of features and configurations; monitoring of application and business metrics; and on-call support in case of outages. It was an immense engineering culture shift, but the benefits are undeniable in terms of scale and speed."</p>
<p>As the engineering ranks continue to grow, the platform team has a new challenge, of making sure that the Kubernetes platform is accessible and easily utilized by everyone. "How can we make sure that when we add more people to our team that they are efficient, productive, and know how to ramp up on the platform?" Lacerte says. So we have the evangelists, the documentation, some project examples. We do demos, we have AMA sessions. We're trying different strategies to get everyone's attention."</p>
<p>Three and a half years into their Kubernetes journey, Gervais feels AppDirect "made the right decisions at the right time," he says. "Kubernetes and the cloud native technologies are now seen as the de facto ecosystem. We know where to focus our efforts in order to tackle the new wave of challenges we face as we scale out. The community is so active and vibrant, which is a great complement to our awesome internal team. Going forward, our focus will really be geared towards benefiting from the ecosystem by providing added business value in our day-to-day operations."</p>
+54 -79
View File
@@ -3,107 +3,82 @@ title: Babylon Case Study
linkTitle: Babylon
case_study_styles: true
cid: caseStudies
css: /css/case-studies-gradient.css
logo: babylon_featured_logo.svg
featured: true
weight: 1
quote: >
Kubernetes is a great platform for machine learning because it comes with all the scheduling and scalability that you need.
new_case_study_styles: true
heading_background: /images/case-studies/babylon/banner4.jpg
heading_title_text: Babylon
use_gradient_overlay: true
subheading: >
AppDirect: How Cloud Native Is Enabling Babylon's Medical AI Innovations
case_study_details:
- Company: Babylon
- Location: United Kingdom
- Industry: AI, Healthcare
---
<h2>Challenge</h2>
<div class="article image overlay" style="background-image: url('/images/case-studies/babylon/banner4.jpg')">
<h1> CASE STUDY: Babylon</h1>
<div class="subhead">How Cloud Native Is Enabling Babylons Medical AI Innovations</div>
</div>
<p>A large number of Babylon's products leverage machine learning and artificial intelligence, and in 2019, there wasn't enough computing power in-house to run a particular experiment. The company was also growing (from 100 to 1,600 in three years) and planning expansion into other countries.</p>
<div class="details">
Company &nbsp;<b>Babylon</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>United Kingdom</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>AI, Healthcare</b>
</div>
<h2>Solution</h2>
<hr>
<section class="section1">
<div class="colsgradient">
<div class="col1">
<h2>Challenge</h2>
A large number of Babylons products leverage machine learning and artificial intelligence, and in 2019, there wasnt enough computing power in-house to run a particular experiment. The company was also growing (from 100 to 1,600 in three years) and planning expansion into other countries.
<h2>Solution</h2>
Babylon had migrated its user-facing applications to a Kubernetes platform in 2018, so the infrastructure team turned to Kubeflow, a toolkit for machine learning on Kubernetes. “We tried to create a Kubernetes core server, we deployed Kubeflow, and we orchestrated the whole experiment, which ended up being a really good success,” says AI Infrastructure Lead Jérémie Vallée. The team began building a self-service AI training platform on top of Kubernetes.
<p>Babylon had migrated its user-facing applications to a Kubernetes platform in 2018, so the infrastructure team turned to Kubeflow, a toolkit for machine learning on Kubernetes. "We tried to create a Kubernetes core server, we deployed Kubeflow, and we orchestrated the whole experiment, which ended up being a really good success," says AI Infrastructure Lead Jérémie Vallée. The team began building a self-service AI training platform on top of Kubernetes.</p>
<h2>Impact</h2>
Instead of waiting hours or days to be able to compute, teams can get access instantaneously. Clinical validations used to take 10 hours; now they are done in under 20 minutes. The portability of the cloud native platform has also enabled Babylon to expand into other countries.</div>
</div>
</section>
<div class="article image overlay" style="background-image: url('/images/case-studies/babylon/banner1.jpg');">
<div class="quotetext">
“Kubernetes is a great platform for machine learning because it comes with all the scheduling and scalability that you need.”
<p><div class="quoteauthortext">- JÉRÉMIE VALLÉE, AI INFRASTRUCTURE LEAD AT BABYLON</div></p>
</div>
</div>
<p>Instead of waiting hours or days to be able to compute, teams can get access instantaneously. Clinical validations used to take 10 hours; now they are done in under 20 minutes. The portability of the cloud native platform has also enabled Babylon to expand into other countries.</p>
<section class="section2">
<div class="fullcol">
<h4>Babylons mission is to put accessible and affordable healthcare services in the hands of every person on earth.</h4>
{{< case-studies/quote
image="/images/case-studies/babylon/banner1.jpg"
author="JÉRÉMIE VALLÉE, AI INFRASTRUCTURE LEAD AT BABYLON"
>}}
"Kubernetes is a great platform for machine learning because it comes with all the scheduling and scalability that you need."
{{< /case-studies/quote >}}
<p>Since its launch in the U.K. in 2013, the startup has facilitated millions of digital consultations around the world. In the U.K., patients were typically waiting a week or two for a doctors appointment. Through Babylons NHS service, GP at Hand—which has more than 75,000 registered patients—39% get an appointment through their phone within 30 minutes, and 89% within 6 hours. </p>
{{< case-studies/lead >}}
Babylon's mission is to put accessible and affordable healthcare services in the hands of every person on earth.
{{< /case-studies/lead >}}
<p>Thats just the start. “We try to combine different types of technology with the medical expertise that we have in-house to build products that will help patients manage and understand their health, and also help doctors be more efficient at what they do,” says Jérémie Vallée, AI Infrastructure Lead at Babylon. </p>
<p>Since its launch in the U.K. in 2013, the startup has facilitated millions of digital consultations around the world. In the U.K., patients were typically waiting a week or two for a doctor's appointment. Through Babylon's NHS service, GP at Hand—which has more than 75,000 registered patients—39% get an appointment through their phone within 30 minutes, and 89% within 6 hours.</p>
<p>A large number of these products leverage machine learning and artificial intelligence, and in 2019, researchers hit a pain point. “We have some servers in-house where our researchers were doing a lot of AI experiments and some training of models, and we came to a point where we didnt have enough compute in-house to run a particular experiment,” says Vallée. </p>
<p>
Babylon had migrated its user-facing applications to a Kubernetes platform in 2018, “and we had a lot of Kubernetes knowledge thanks to the migration,” he adds. To optimize some of the models that had been created, the team turned to Kubeflow, a toolkit for machine learning on Kubernetes. “We tried to create a Kubernetes core server, we deployed Kubeflow, and we orchestrated the whole experiment, which ended up being a really good success,” he says.</p>
<p>
Based on that experience, Vallées team was tasked with building a self-service platform to help Babylons AI teams become more efficient, and by extension help get products to market faster. The main requirements: (1) the ability to give researchers and engineers access to the compute they needed, regardless of the size of the experiments they may need to run; (2) a way to provide teams with the best tools that they needed to do their work, on demand and in a centralized way; and (3) the training platform had to be close to the data that was being managed, because of the companys expansion into different countries.</p>
<p>That's just the start. "We try to combine different types of technology with the medical expertise that we have in-house to build products that will help patients manage and understand their health, and also help doctors be more efficient at what they do," says Jérémie Vallée, AI Infrastructure Lead at Babylon. </p>
<p>A large number of these products leverage machine learning and artificial intelligence, and in 2019, researchers hit a pain point. "We have some servers in-house where our researchers were doing a lot of AI experiments and some training of models, and we came to a point where we didn't have enough compute in-house to run a particular experiment," says Vallée. </p>
</div>
</section>
<p>Babylon had migrated its user-facing applications to a Kubernetes platform in 2018, "and we had a lot of Kubernetes knowledge thanks to the migration," he adds. To optimize some of the models that had been created, the team turned to Kubeflow, a toolkit for machine learning on Kubernetes. "We tried to create a Kubernetes core server, we deployed Kubeflow, and we orchestrated the whole experiment, which ended up being a really good success," he says.</p>
<div class="greybanner">
<div class="greyquotetext">
“Delivering a self-service platform where users are empowered to run their own workload has enabled our data scientist community to do hyper parameter tuning and general algorithm development without any cloud skill and without the help of platform engineers, thus accelerating our innovation.”<p><div class="quoteauthortext">- CAROLINE HARGROVE, CHIEF TECHNOLOGY OFFICER AT BABYLON</div></p>
</div>
</div>
<p>Based on that experience, Vallée's team was tasked with building a self-service platform to help Babylon's AI teams become more efficient, and by extension help get products to market faster. The main requirements: (1) the ability to give researchers and engineers access to the compute they needed, regardless of the size of the experiments they may need to run; (2) a way to provide teams with the best tools that they needed to do their work, on demand and in a centralized way; and (3) the training platform had to be close to the data that was being managed, because of the company's expansion into different countries.</p>
<section class="section3">
<div class="fullcol">
<p>
Kubernetes was an enabler on every count. “Kubernetes is a great platform for machine learning because it comes with all the scheduling and scalability that you need,” says Vallée. The need to keep data in every country in which Babylon operates requires a multi-region, multi-cloud strategy, and some countries might not even have a public cloud provider at all. “We wanted to make this platform portable so that we can run training jobs anywhere,” he says. “Kubernetes offered a base layer that allows you to deploy the platform outside of the cloud provider, and then deploy whatever tooling you need. That was a very good selling point for us.” </p>
<p>
Once the team decided to build the Babylon AI Research platform on top of Kubernetes, they referred to the Cloud Native Landscape to build out the stack: Prometheus and Grafana for monitoring; an Istio service mesh to control the network on the training platform and control what access all of the workflows would have; Helm to deploy the stack; and Flux to manage the GitOps part of the pipeline. </p>
<p>
The cloud native AI platform has had a huge impact at Babylon. The first research projects run on the platform mostly involved machine learning and natural language processing. These experiments required a huge amount of compute—1600 CPU, 3.2 TB RAM—which was much more than Babylon had in-house. Plus, access to compute used to take hours, or sometimes even days, depending on how busy the platform team was. “Now, with Kubernetes and the self-service platform that we provide, its pretty much instantaneous,” says Vallée. </p>
<p>
Another important type of work thats done on the platform is clinical validation for new applications such as Babylons Symptom Checker, which calculates the probability of a disease given the evidence input by the user. “Being in healthcare, we want all of our models to be safe before theyre going to hit production,” says Vallée. Using Argo for GitOps “enabled us to scale the process massively.” </p>
{{< case-studies/quote author="CAROLINE HARGROVE, CHIEF TECHNOLOGY OFFICER AT BABYLON" >}}
"Delivering a self-service platform where users are empowered to run their own workload has enabled our data scientist community to do hyper parameter tuning and general algorithm development without any cloud skill and without the help of platform engineers, thus accelerating our innovation."
{{< /case-studies/quote >}}
</p>
</div>
</section>
<p>Kubernetes was an enabler on every count. "Kubernetes is a great platform for machine learning because it comes with all the scheduling and scalability that you need," says Vallée. The need to keep data in every country in which Babylon operates requires a multi-region, multi-cloud strategy, and some countries might not even have a public cloud provider at all. "We wanted to make this platform portable so that we can run training jobs anywhere," he says. "Kubernetes offered a base layer that allows you to deploy the platform outside of the cloud provider, and then deploy whatever tooling you need. That was a very good selling point for us."</p>
<p>Once the team decided to build the Babylon AI Research platform on top of Kubernetes, they referred to the Cloud Native Landscape to build out the stack: Prometheus and Grafana for monitoring; an Istio service mesh to control the network on the training platform and control what access all of the workflows would have; Helm to deploy the stack; and Flux to manage the GitOps part of the pipeline.</p>
<div class="article image overlay" style="background-image: url('/images/case-studies/babylon/banner2.jpg');">
<div class="quotetext">
“Giving a Kubernetes-based platform to our data scientists has meant increased security, increased innovation through empowerment, and a more affordable health service as our cloud engineers are building an experience that is used by hundreds on a daily basis, rather than supporting specific bespoke use cases.” <p><div class="quoteauthortext">- JEAN MARIE FERDEGUE, DIRECTOR OF PLATFORM OPERATIONS AT BABYLON</div></p>
</div>
</div>
<p>The cloud native AI platform has had a huge impact at Babylon. The first research projects run on the platform mostly involved machine learning and natural language processing. These experiments required a huge amount of compute—1600 CPU, 3.2 TB RAM—which was much more than Babylon had in-house. Plus, access to compute used to take hours, or sometimes even days, depending on how busy the platform team was. "Now, with Kubernetes and the self-service platform that we provide, it's pretty much instantaneous," says Vallée.</p>
<section class="section5">
<div class="fullcol">
<p>
Researchers used to have to wait up to 10 hours to get results on new versions of their models. With Kubernetes, that time is now down to under 20 minutes. Plus, previously they could only run one clinical validation at a time, now they can run many parallel ones if they need to—a huge benefit considering that in the past three years, Babylon has grown from 100 to 1,600 employees. </p>
<p>
“Delivering a self-service platform where users are empowered to run their own workload has enabled our data scientist community to do hyper parameter tuning and general algorithm development without any cloud skill and without the help of platform engineers, thus accelerating our innovation,” says Chief Technology Officer Caroline Hargrove.</p>
<p>
Adds Director of Platform Operations Jean Marie Ferdegue: “Giving a Kubernetes-based platform to our data scientists has meant increased security, increased innovation through empowerment, and a more affordable health service as our cloud engineers are building an experience that is used by hundreds on a daily basis, rather than supporting specific bespoke use cases.” </p>
<p>
Plus, as Babylon continues to expand, “it will be very easy to onboard new countries,” says Vallée. “Fifteen months ago when we deployed this platform, we had one big environment in the U.K., but now we have one in Canada, we have one in Asia, and we have one coming in the U.S. This is one of the things that Kubernetes and the other cloud native projects have enabled for us.”
</p>
<p>
Babylons road map for cloud native involves onboarding all of the companys AI efforts to the platform. Increasingly, that includes AI services of care. “I think this is going to be an interesting field where AI and healthcare meet,” Vallée says. “Its kind of a complex problem and theres a lot of issues around this. So with our platform, we want to say, What can we do to make this less painful for our developers and machine learning engineers?’”
</p>
</div>
</section>
</body>
<p>Another important type of work that's done on the platform is clinical validation for new applications such as Babylon's Symptom Checker, which calculates the probability of a disease given the evidence input by the user. "Being in healthcare, we want all of our models to be safe before they're going to hit production," says Vallée. Using Argo for GitOps "enabled us to scale the process massively."</p>
{{< case-studies/quote
image="/images/case-studies/babylon/banner2.jpg"
author="JEAN MARIE FERDEGUE, DIRECTOR OF PLATFORM OPERATIONS AT BABYLON"
>}}
"Giving a Kubernetes-based platform to our data scientists has meant increased security, increased innovation through empowerment, and a more affordable health service as our cloud engineers are building an experience that is used by hundreds on a daily basis, rather than supporting specific bespoke use cases."
{{< /case-studies/quote >}}
<p>Researchers used to have to wait up to 10 hours to get results on new versions of their models. With Kubernetes, that time is now down to under 20 minutes. Plus, previously they could only run one clinical validation at a time, now they can run many parallel ones if they need to—a huge benefit considering that in the past three years, Babylon has grown from 100 to 1,600 employees.</p>
<p>"Delivering a self-service platform where users are empowered to run their own workload has enabled our data scientist community to do hyper parameter tuning and general algorithm development without any cloud skill and without the help of platform engineers, thus accelerating our innovation," says Chief Technology Officer Caroline Hargrove.</p>
<p>Adds Director of Platform Operations Jean Marie Ferdegue: "Giving a Kubernetes-based platform to our data scientists has meant increased security, increased innovation through empowerment, and a more affordable health service as our cloud engineers are building an experience that is used by hundreds on a daily basis, rather than supporting specific bespoke use cases."</p>
<p>Plus, as Babylon continues to expand, "it will be very easy to onboard new countries," says Vallée. "Fifteen months ago when we deployed this platform, we had one big environment in the U.K., but now we have one in Canada, we have one in Asia, and we have one coming in the U.S. This is one of the things that Kubernetes and the other cloud native projects have enabled for us."</p>
<p>Babylon's road map for cloud native involves onboarding all of the company's AI efforts to the platform. Increasingly, that includes AI services of care. "I think this is going to be an interesting field where AI and healthcare meet," Vallée says. "It's kind of a complex problem and there's a lot of issues around this. So with our platform, we want to say, 'What can we do to make this less painful for our developers and machine learning engineers?'"</p>
+67 -80
View File
@@ -1,98 +1,85 @@
---
title: BlaBlaCar Case Study
case_study_styles: true
cid: caseStudies
css: /css/style_blablacar.css
new_case_study_styles: true
heading_background: /images/case-studies/blablacar/banner1.jpg
heading_title_logo: /images/blablacar_logo.png
subheading: >
Turning to Containerization to Support Millions of Rideshares
case_study_details:
- Company: BlaBlaCar
- Location: Paris, France
- Industry: Ridesharing Company
---
<div class="banner1">
<h1> CASE STUDY:<img src="/images/blablacar_logo.png" class="header_logo"><br /> <div class="subhead">Turning to Containerization to Support Millions of Rideshares</div></h1>
<h2>Challenge</h2>
</div>
<p>The world's largest long-distance carpooling community, <a href="https://www.blablacar.com/">BlaBlaCar</a>, connects 40 million members across 22 countries. The company has been experiencing exponential growth since 2012 and needed its infrastructure to keep up. "When you're thinking about doubling the number of servers, you start thinking, 'What should I do to be more efficient?'" says Simon Lallemand, Infrastructure Engineer at BlaBlaCar. "The answer is not to hire more and more people just to deal with the servers and installation." The team knew they had to scale the platform, but wanted to stay on their own bare metal servers.</p>
<div class="details">
Company &nbsp;<b>BlaBlaCar</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Paris, France</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Ridesharing Company</b>
</div>
<h2>Solution</h2>
<hr />
<section class="section1">
<div class="cols">
<div class="col1">
<h2>Challenge</h2>
The worlds largest long-distance carpooling community, <a href="https://www.blablacar.com/">BlaBlaCar</a>, connects 40 million members across 22 countries. The company has been experiencing exponential growth since 2012 and needed its infrastructure to keep up. "When youre thinking about doubling the number of servers, you start thinking, What should I do to be more efficient?" says Simon Lallemand, Infrastructure Engineer at BlaBlaCar. "The answer is not to hire more and more people just to deal with the servers and installation." The team knew they had to scale the platform, but wanted to stay on their own bare metal servers.
<br />
<br />
<h2>Solution</h2>
Opting not to shift to cloud virtualization or use a private cloud on their own servers, the BlaBlaCar team became early adopters of containerization, using the CoreOs runtime <a href="https://coreos.com/rkt">rkt</a>, initially deployed using <a href="https://coreos.com/fleet/docs/latest/launching-containers-fleet.html">fleet</a> cluster manager. Last year, the company switched to <a href="http://kubernetes.io/">Kubernetes</a> orchestration, and now also uses <a href="https://prometheus.io/">Prometheus</a> for monitoring.
</div>
<p>Opting not to shift to cloud virtualization or use a private cloud on their own servers, the BlaBlaCar team became early adopters of containerization, using the CoreOs runtime <a href="https://coreos.com/rkt">rkt</a>, initially deployed using <a href="https://coreos.com/fleet/docs/latest/launching-containers-fleet.html">fleet</a> cluster manager. Last year, the company switched to <a href="http://kubernetes.io/">Kubernetes</a> orchestration, and now also uses <a href="https://prometheus.io/">Prometheus</a> for monitoring.</p>
<div class="col2">
<h2>Impact</h2>
"Before using containers, it would take sometimes a day, sometimes two, just to create a new service," says Lallemand. "With all the tooling that we made around the containers, copying a new service now is a matter of minutes. Its really a huge gain. We are better at capacity planning in our data center because we have fewer constraints due to this abstraction between the services and the hardware we run on. For the developers, it also means they can focus only on the features that theyre developing, and not on the infrastructure."
</div>
</div>
</section>
<div class="banner2">
<div class="banner2text">
"When youre switching to this cloud-native model and running everything in containers, you have to make sure that at any moment you can reboot without any downtime and without losing traffic. [With Kubernetes] our infrastructure is much more resilient and we have better availability than before."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br />- Simon Lallemand, Infrastructure Engineer at BlaBlaCar</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>For the 40 million users of <a href="https://www.blablacar.com/">BlaBlaCar</a>, its easy to find strangers headed in the same direction to share rides and costs. You can even choose how much "bla bla" chatter you want from a long-distance ride mate.</h2>
Behind the scenes, though, the infrastructure was falling woefully behind the rider communitys exponential growth. Founded in 2006, the company hit its current stride around 2012. "Our infrastructure was very traditional," says Infrastructure Engineer Simon Lallemand, who began working at the company in 2014. "In the beginning, it was a bit chaotic because we had to [grow] fast. But then comes the time when you have to design things to make it manageable."<br /><br />
By 2015, the company had about 50 bare metal servers. The team was using a <a href="https://www.mysql.com/">MySQL</a> database and <a href="http://php.net/">PHP</a>, but, Lallemand says, "it was a very static way." They also utilized the configuration management system, <a href="https://www.chef.io/chef/">Chef</a>, but had little automation in its process. "When youre thinking about doubling the number of servers, you start thinking, What should I do to be more efficient?" says Lallemand. "The answer is not to hire more and more people just to deal with the servers and installation."<br /><br />
Instead, BlaBlaCar began its cloud-native journey but wasnt sure which route to take. "We could either decide to go into cloud virtualization or even use a private cloud on our own servers," says Lallemand. "But going into the cloud meant we had to make a lot of changes in our application work, and we were just not ready to make the switch from on premise to the cloud." They wanted to keep the great performance they got on bare metal, so they didnt want to go to virtualization on premise.<br /><br />
The solution: containerization. This was early 2015 and containers were still relatively new. "It was a bold move at the time," says Lallemand. "We decided that the next servers that we would buy in the new data center would all be the same model, so we could outsource the maintenance of the servers. And we decided to go with containers and with <a href="https://coreos.com/">CoreOS</a> Container Linux as an abstraction for this hardware. It seemed future-proof to go with containers because we could see what companies were already doing with containers."
</div>
</section>
<p>"Before using containers, it would take sometimes a day, sometimes two, just to create a new service," says Lallemand. "With all the tooling that we made around the containers, copying a new service now is a matter of minutes. It's really a huge gain. We are better at capacity planning in our data center because we have fewer constraints due to this abstraction between the services and the hardware we run on. For the developers, it also means they can focus only on the features that they're developing, and not on the infrastructure."</p>
<div class="banner3">
<div class="banner3text">
"With all the tooling that we made around the containers, copying a new service is a matter of minutes. Its a huge gain. For the developers, it means they can focus only on the features that theyre developing and not on the infrastructure or the hour they would test their code, or the hour that it would get deployed."
</div>
</div>
{{< case-studies/quote author="Simon Lallemand, Infrastructure Engineer at BlaBlaCar" >}}
"When you're switching to this cloud-native model and running everything in containers, you have to make sure that at any moment you can reboot without any downtime and without losing traffic. [With Kubernetes] our infrastructure is much more resilient and we have better availability than before."
{{< /case-studies/quote >}}
<section class="section3">
<div class="fullcol">
Next, they needed to choose a runtime for the containers, but "there were very few deployments in production at that time," says Lallemand. They experimented with <a href="https://www.docker.com/">Docker</a> but decided to go with <a href="https://coreos.com/rkt">rkt</a>. Lallemand explains that for BlaBlaCar, it was "much simpler to integrate things that are on rkt." At the time, the project was still pre-v1.0, so "we could speak with the developers of rkt and give them feedback. It was an advantage." Plus, he notes, rkt was very stable, even at this early stage.<br /><br />
Once those decisions were made that summer, the company came up with a plan for implementation. First, they formed a task force to create a workflow that would be tested by three of the 10 members on Lallemands team. But they took care to run regular workshops with all 10 members to make sure everyone was on board. "When youre focused on your product sometimes you forget if its really user friendly, whether other people can manage to create containers too," Lallemand says. "So we did a lot of iterations to find a good workflow."<br /><br />
After establishing the workflow, Lallemand says with a smile that "we had this strange idea that we should try the most difficult thing first. Because if it works, it will work for everything." So the first project the team decided to containerize was the database. "Nobody did that at the time, and there were really no existing tools for what we wanted to do, including building container images," he says. So the team created their own tools, such as <a href="https://github.com/blablacar/dgr">dgr</a>, which builds container images so that the whole team has a common framework to build on the same images with the same standards. They also revamped the service-discovery tools <a href="https://github.com/airbnb/nerve">Nerve</a> and <a href="http://airbnb.io/projects/synapse/">Synapse</a>; their versions, <a href="https://github.com/blablacar/go-nerve">Go-Nerve</a> and <a href="https://github.com/blablacar/go-synapse">Go-Synapse</a>, were written in Go and built to be more efficient and include new features. All of these tools were open-sourced.<br /><br />
At the same time, the company was working to migrate its entire platform to containers with a deadline set for Christmas 2015. With all the work being done in parallel, BlaBlaCar was able to get about 80 percent of its production into containers by its deadline with live traffic running on containers during December. (Its now at 100 percent.) "Its a really busy time for traffic," says Lallemand. "We knew that by using those new servers with containers, it would help us handle the traffic."<br /><br />
In the middle of that peak season for carpooling, everything worked well. "The biggest impact that we had was for the deployment of new services," says Lallemand. "Before using containers, we had to first deploy a new server and create configurations with Chef. It would take sometimes a day, sometimes two, just to create a new service. And with all the tooling that we made around the containers, copying a new service is a matter of minutes. So its really a huge gain. For the developers, it means they can focus only on the features that theyre developing and not on the infrastructure or the hour they would test their code, or the hour that it would get deployed."
</div>
</section>
{{< case-studies/lead >}}
For the 40 million users of <a href="https://www.blablacar.com/">BlaBlaCar</a>, it's easy to find strangers headed in the same direction to share rides and costs. You can even choose how much "bla bla" chatter you want from a long-distance ride mate.
{{< /case-studies/lead >}}
<div class="banner4">
<div class="banner4text">
"We realized that there was a really strong community around it [Kubernetes], which meant we would not have to maintain a lot of tools of our own," says Lallemand. "It was better if we could contribute to some bigger project like Kubernetes."
</div>
</div>
<p>Behind the scenes, though, the infrastructure was falling woefully behind the rider community's exponential growth. Founded in 2006, the company hit its current stride around 2012. "Our infrastructure was very traditional," says Infrastructure Engineer Simon Lallemand, who began working at the company in 2014. "In the beginning, it was a bit chaotic because we had to [grow] fast. But then comes the time when you have to design things to make it manageable."</p>
<section class="section4">
<div class="fullcol">
In order to meet their self-imposed deadline, one of the decisions they made was to not do any "orchestration magic" for containers in the first production alignment. Instead, they used the basic <a href="https://coreos.com/fleet/docs/latest/launching-containers-fleet.html">fleet</a> tool from CoreOS to deploy their containers. (They did build a tool called <a href="https://github.com/blablacar/ggn">GGN</a>, which theyve open-sourced, to make it more manageable for their system engineers to use.)<br /><br />
Still, the team knew that theyd want more orchestration. "Our tool was doing a pretty good job, but at some point you want to give more autonomy to the developer team," Lallemand says. "We also realized that we dont want to be the single point of contact for developers when they want to launch new services." By the summer of 2016, they found their answer in <a href="http://kubernetes.io/">Kubernetes</a>, which had just begun supporting rkt implementation.<br /><br />
After discussing their needs with their contacts at CoreOS and Google, they were convinced that Kubernetes would work for BlaBlaCar. "We realized that there was a really strong community around it, which meant we would not have to maintain a lot of tools of our own," says Lallemand. "It was better if we could contribute to some bigger project like Kubernetes." They also started using <a href="https://prometheus.io/">Prometheus</a>, as they were looking for "service-oriented monitoring that could be updated nightly." Production on Kubernetes began in December 2016. "We like to do crazy stuff around Christmas," he adds with a laugh.<br /><br />
BlaBlaCar now has about 3,000 pods, with 1200 of them running on Kubernetes. Lallemand leads a "foundations team" of 25 members who take care of the networks, databases and systems for about 100 developers. There have been some challenges getting to this point. "The rkt implementation is still not 100 percent finished," Lallemand points out. "Its really good, but there are some features still missing. We have questions about how we do things with stateful services, like databases. We know how we will be migrating some of the services; some of the others are a bit more complicated to deal with. But the Kubernetes community is making a lot of progress on that part."<br /><br />
The team is particularly happy that theyre now able to plan capacity better in the companys data center. "We have fewer constraints since we have this abstraction between the services and the hardware we run on," says Lallemand. "If we lose a server because theres a hardware problem on it, we just move the containers onto another server. Its much more efficient. We do that by just changing a line in the configuration file. And with Kubernetes, it should be automatic, so we would have nothing to do."
</div>
</section>
<p>By 2015, the company had about 50 bare metal servers. The team was using a <a href="https://www.mysql.com/">MySQL</a> database and <a href="http://php.net/">PHP</a>, but, Lallemand says, "it was a very static way." They also utilized the configuration management system, <a href="https://www.chef.io/chef/">Chef</a>, but had little automation in its process. "When you're thinking about doubling the number of servers, you start thinking, 'What should I do to be more efficient?'" says Lallemand. "The answer is not to hire more and more people just to deal with the servers and installation."</p>
<div class="banner5">
<div class="banner5text">
"If we lose a server because theres a hardware problem on it, we just move the containers onto another server. Its much more efficient. We do that by just changing a line in the configuration file. With Kubernetes, it should be automatic, so we would have nothing to do."
</div>
</div>
<p>Instead, BlaBlaCar began its cloud-native journey but wasn't sure which route to take. "We could either decide to go into cloud virtualization or even use a private cloud on our own servers," says Lallemand. "But going into the cloud meant we had to make a lot of changes in our application work, and we were just not ready to make the switch from on premise to the cloud." They wanted to keep the great performance they got on bare metal, so they didn't want to go to virtualization on premise.</p>
<section class="section5">
<div class="fullcol">
And these advances ultimately trickle down to BlaBlaCars users. "We have improved availability overall on our website," says Lallemand. "When youre switching to this cloud-native model with running everything in containers, you have to make sure that you can at any moment reboot a server or a data container without any downtime, without losing traffic. So now our infrastructure is much more resilient and we have better availability than before."<br /><br />
Within BlaBlaCars technology department, the cloud-native journey has created some profound changes. Lallemand thinks that the regular meetings during the conception stage and the training sessions during implementation helped. "After that everybody took part in the migration process," he says. "Then we split the organization into different tribes’—teams that gather developers, product managers, data analysts, all the different jobs, to work on a specific part of the product. Before, they were organized by function. The idea is to give all these tribes access to the infrastructure directly in a self-service way without having to ask. These people are really autonomous. They have responsibility of that part of the product, and they can make decisions faster." <br /><br />
This DevOps transformation turned out to be a positive one for the companys staffers. "The team was very excited about the DevOps transformation because it was new, and we were working to make things more reliable, more future-proof," says Lallemand. "We like doing things that very few people are doing, other than the internet giants." <br /><br />
With these changes already making an impact, BlaBlaCar is looking to split up more and more of its application into services. "I dont say microservices because theyre not so micro," Lallemand says. "If we can split the responsibilities between the development teams, it would be easier to manage and more reliable, because we can easily add and remove services if one fails. You can handle it easily, instead of adding a big monolith that we still have." <br /><br />
When Lallemand speaks to other European companies curious about what BlaBlaCar has done with its infrastructure, he tells them to come along for the ride. "I tell them that its such a pleasure to deal with the infrastructure that we have today compared to what we had before," he says. "They just need to keep in mind their real motive, whether its flexibility in development or reliability or so on, and then go step by step towards reaching those objectives. Thats what weve done. Its important not to do technology for the sake of technology. Do it for a purpose. Our focus was on helping the developers."
</div>
</section>
<p>The solution: containerization. This was early 2015 and containers were still relatively new. "It was a bold move at the time," says Lallemand. "We decided that the next servers that we would buy in the new data center would all be the same model, so we could outsource the maintenance of the servers. And we decided to go with containers and with <a href="https://coreos.com/">CoreOS</a> Container Linux as an abstraction for this hardware. It seemed future-proof to go with containers because we could see what companies were already doing with containers."</p>
{{< case-studies/quote image="/images/case-studies/blablacar/banner3.jpg">}}
"With all the tooling that we made around the containers, copying a new service is a matter of minutes. It's a huge gain. For the developers, it means they can focus only on the features that they're developing and not on the infrastructure or the hour they would test their code, or the hour that it would get deployed."
{{< /case-studies/quote >}}
<p>Next, they needed to choose a runtime for the containers, but "there were very few deployments in production at that time," says Lallemand. They experimented with <a href="https://www.docker.com/">Docker</a> but decided to go with <a href="https://coreos.com/rkt">rkt</a>. Lallemand explains that for BlaBlaCar, it was "much simpler to integrate things that are on rkt." At the time, the project was still pre-v1.0, so "we could speak with the developers of rkt and give them feedback. It was an advantage." Plus, he notes, rkt was very stable, even at this early stage.</p>
<p>Once those decisions were made that summer, the company came up with a plan for implementation. First, they formed a task force to create a workflow that would be tested by three of the 10 members on Lallemand's team. But they took care to run regular workshops with all 10 members to make sure everyone was on board. "When you're focused on your product sometimes you forget if it's really user friendly, whether other people can manage to create containers too," Lallemand says. "So we did a lot of iterations to find a good workflow."</p>
<p>After establishing the workflow, Lallemand says with a smile that "we had this strange idea that we should try the most difficult thing first. Because if it works, it will work for everything." So the first project the team decided to containerize was the database. "Nobody did that at the time, and there were really no existing tools for what we wanted to do, including building container images," he says. So the team created their own tools, such as <a href="https://github.com/blablacar/dgr">dgr</a>, which builds container images so that the whole team has a common framework to build on the same images with the same standards. They also revamped the service-discovery tools <a href="https://github.com/airbnb/nerve">Nerve</a> and <a href="http://airbnb.io/projects/synapse/">Synapse</a>; their versions, <a href="https://github.com/blablacar/go-nerve">Go-Nerve</a> and <a href="https://github.com/blablacar/go-synapse">Go-Synapse</a>, were written in Go and built to be more efficient and include new features. All of these tools were open-sourced.</p>
<p>At the same time, the company was working to migrate its entire platform to containers with a deadline set for Christmas 2015. With all the work being done in parallel, BlaBlaCar was able to get about 80 percent of its production into containers by its deadline with live traffic running on containers during December. (It's now at 100 percent.) "It's a really busy time for traffic," says Lallemand. "We knew that by using those new servers with containers, it would help us handle the traffic."</p>
<p>In the middle of that peak season for carpooling, everything worked well. "The biggest impact that we had was for the deployment of new services," says Lallemand. "Before using containers, we had to first deploy a new server and create configurations with Chef. It would take sometimes a day, sometimes two, just to create a new service. And with all the tooling that we made around the containers, copying a new service is a matter of minutes. So it's really a huge gain. For the developers, it means they can focus only on the features that they're developing and not on the infrastructure or the hour they would test their code, or the hour that it would get deployed."</p>
{{< case-studies/quote image="/images/case-studies/blablacar/banner4.jpg" >}}
"We realized that there was a really strong community around it [Kubernetes], which meant we would not have to maintain a lot of tools of our own," says Lallemand. "It was better if we could contribute to some bigger project like Kubernetes."
{{< /case-studies/quote >}}
<p>In order to meet their self-imposed deadline, one of the decisions they made was to not do any "orchestration magic" for containers in the first production alignment. Instead, they used the basic <a href="https://coreos.com/fleet/docs/latest/launching-containers-fleet.html">fleet</a> tool from CoreOS to deploy their containers. (They did build a tool called <a href="https://github.com/blablacar/ggn">GGN</a>, which they've open-sourced, to make it more manageable for their system engineers to use.)</p>
<p>Still, the team knew that they'd want more orchestration. "Our tool was doing a pretty good job, but at some point you want to give more autonomy to the developer team," Lallemand says. "We also realized that we don't want to be the single point of contact for developers when they want to launch new services." By the summer of 2016, they found their answer in <a href="http://kubernetes.io/">Kubernetes</a>, which had just begun supporting rkt implementation.</p>
<p>After discussing their needs with their contacts at CoreOS and Google, they were convinced that Kubernetes would work for BlaBlaCar. "We realized that there was a really strong community around it, which meant we would not have to maintain a lot of tools of our own," says Lallemand. "It was better if we could contribute to some bigger project like Kubernetes." They also started using <a href="https://prometheus.io/">Prometheus</a>, as they were looking for "service-oriented monitoring that could be updated nightly." Production on Kubernetes began in December 2016. "We like to do crazy stuff around Christmas," he adds with a laugh.</p>
<p>BlaBlaCar now has about 3,000 pods, with 1200 of them running on Kubernetes. Lallemand leads a "foundations team" of 25 members who take care of the networks, databases and systems for about 100 developers. There have been some challenges getting to this point. "The rkt implementation is still not 100 percent finished," Lallemand points out. "It's really good, but there are some features still missing. We have questions about how we do things with stateful services, like databases. We know how we will be migrating some of the services; some of the others are a bit more complicated to deal with. But the Kubernetes community is making a lot of progress on that part."</p>
<p>The team is particularly happy that they're now able to plan capacity better in the company's data center. "We have fewer constraints since we have this abstraction between the services and the hardware we run on," says Lallemand. "If we lose a server because there's a hardware problem on it, we just move the containers onto another server. It's much more efficient. We do that by just changing a line in the configuration file. And with Kubernetes, it should be automatic, so we would have nothing to do."</p>
{{< case-studies/quote >}}
"If we lose a server because there's a hardware problem on it, we just move the containers onto another server. It's much more efficient. We do that by just changing a line in the configuration file. With Kubernetes, it should be automatic, so we would have nothing to do."
{{< /case-studies/quote >}}
<p>And these advances ultimately trickle down to BlaBlaCar's users. "We have improved availability overall on our website," says Lallemand. "When you're switching to this cloud-native model with running everything in containers, you have to make sure that you can at any moment reboot a server or a data container without any downtime, without losing traffic. So now our infrastructure is much more resilient and we have better availability than before."</p>
<p>Within BlaBlaCar's technology department, the cloud-native journey has created some profound changes. Lallemand thinks that the regular meetings during the conception stage and the training sessions during implementation helped. "After that everybody took part in the migration process," he says. "Then we split the organization into different 'tribes'—teams that gather developers, product managers, data analysts, all the different jobs, to work on a specific part of the product. Before, they were organized by function. The idea is to give all these tribes access to the infrastructure directly in a self-service way without having to ask. These people are really autonomous. They have responsibility of that part of the product, and they can make decisions faster."</p>
<p>This DevOps transformation turned out to be a positive one for the company's staffers. "The team was very excited about the DevOps transformation because it was new, and we were working to make things more reliable, more future-proof," says Lallemand. "We like doing things that very few people are doing, other than the internet giants."</p>
<p>With these changes already making an impact, BlaBlaCar is looking to split up more and more of its application into services. "I don't say microservices because they're not so micro," Lallemand says. "If we can split the responsibilities between the development teams, it would be easier to manage and more reliable, because we can easily add and remove services if one fails. You can handle it easily, instead of adding a big monolith that we still have."</p>
<p>When Lallemand speaks to other European companies curious about what BlaBlaCar has done with its infrastructure, he tells them to come along for the ride. "I tell them that it's such a pleasure to deal with the infrastructure that we have today compared to what we had before," he says. "They just need to keep in mind their real motive, whether it's flexibility in development or reliability or so on, and then go step by step towards reaching those objectives. That's what we've done. It's important not to do technology for the sake of technology. Do it for a purpose. Our focus was on helping the developers."</p>
+55 -84
View File
@@ -1,112 +1,83 @@
---
title: BlackRock Case Study
case_study_styles: true
cid: caseStudies
css: /css/style_blackrock.css
new_case_study_styles: true
heading_background: /images/case-studies/blackrock/banner1.jpg
heading_title_logo: /images/blackrock_logo.png
subheading: >
Rolling Out Kubernetes in Production in 100 Days
case_study_details:
- Company: BlackRock
- Location: New York, NY
- Industry: Financial Services
---
<div class="banner1">
<h1> CASE STUDY: <img src="/images/blackrock_logo.png" class="header_logo"><br>
<div class="subhead">Rolling Out Kubernetes in Production in 100 Days</div>
</h1>
<h2>Challenge</h2>
</div>
<p>The world's largest asset manager, <a href="https://www.blackrock.com/investing">BlackRock</a> operates a very controlled static deployment scheme, which has allowed for scalability over the years. But in their data science division, there was a need for more dynamic access to resources. "We want to be able to give every investor access to data science, meaning <a href="https://www.python.org">Python</a> notebooks, or even something much more advanced, like a MapReduce engine based on <a href="https://spark.apache.org">Spark</a>," says Michael Francis, a Managing Director in BlackRock's Product Group, which runs the company's investment management platform. "Managing complex Python installations on users' desktops is really hard because everyone ends up with slightly different environments. We have existing environments that do these things, but we needed to make it real, expansive and scalable. Being able to spin that up on demand, tear it down, make that much more dynamic, became a critical thought process for us. It's not so much that we had to solve our main core production problem, it's how do we extend that? How do we evolve?"</p>
<div class="details">
Company &nbsp;<b>BlackRock</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>New York, NY</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Financial Services</b>
</div>
<h2>Solution</h2>
<hr>
<p>Drawing from what they learned during a pilot done last year using <a href="https://www.docker.com">Docker</a> environments, Francis put together a cross-sectional team of 20 to build an investor research web app using <a href="https://kubernetes.io">Kubernetes</a> with the goal of getting it into production within one quarter.</p>
<section class="section1">
<div class="cols">
<div class="col1">
<h2>Challenge</h2>
The worlds largest asset manager, <a href="https://www.blackrock.com/investing">BlackRock</a> operates a very controlled static deployment scheme, which has allowed for scalability over the years. But in their data science division, there was a need for more dynamic access to resources. "We want to be able to give every investor access to data science, meaning <a href="https://www.python.org">Python</a> notebooks, or even something much more advanced, like a MapReduce engine based on <a href="https://spark.apache.org">Spark</a>," says Michael Francis, a Managing Director in BlackRocks Product Group, which runs the companys investment management platform. "Managing complex Python installations on users desktops is really hard because everyone ends up with slightly different environments. We have existing environments that do these things, but we needed to make it real, expansive and scalable. Being able to spin that up on demand, tear it down, make that much more dynamic, became a critical thought process for us. Its not so much that we had to solve our main core production problem, its how do we extend that? How do we evolve?"
</div>
<div class="col2">
<h2>Solution</h2>
Drawing from what they learned during a pilot done last year using <a href="https://www.docker.com">Docker</a> environments, Francis put together a cross-sectional team of 20 to build an investor research web app using <a href="https://kubernetes.io">Kubernetes</a> with the goal of getting it into production within one quarter.
<br><br>
<h2>Impact</h2>
"Our goal was: How do you give people tools rapidly without having to install them on their desktop?" says Francis. And the team hit the goal within 100 days. Francis is pleased with the results and says, "Were going to use this infrastructure for lots of other application workloads as time goes on. Its not just data science; its this style of application that needs the dynamism. But I think were 6-12 months away from making a [large scale] decision. We need to gain experience of running the system in production, we need to understand failure modes and how best to manage operational issues. Whats interesting is that just having this technology there is changing the way our developers are starting to think about their future development."
</div>
</div>
<p>"Our goal was: How do you give people tools rapidly without having to install them on their desktop?" says Francis. And the team hit the goal within 100 days. Francis is pleased with the results and says, "We're going to use this infrastructure for lots of other application workloads as time goes on. It's not just data science; it's this style of application that needs the dynamism. But I think we're 6-12 months away from making a [large scale] decision. We need to gain experience of running the system in production, we need to understand failure modes and how best to manage operational issues. What's interesting is that just having this technology there is changing the way our developers are starting to think about their future development."</p>
</section>
{{< case-studies/quote author="Michael Francis, Managing Director, BlackRock">}}
"My message to other enterprises like us is you can actually integrate Kubernetes into an existing, well-orchestrated machinery. You don't have to throw out everything you do. And using Kubernetes made a complex problem significantly easier."
{{< /case-studies/quote >}}
<div class="banner2">
<div class="banner2text">
"My message to other enterprises like us is you can actually integrate Kubernetes into an existing, well-orchestrated machinery. You dont have to throw out everything you do. And using Kubernetes made a complex problem significantly easier."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Michael Francis, Managing Director, BlackRock</span>
</div>
</div>
<p>One of the management objectives for BlackRock's Product Group employees in 2017 was to "build cool stuff." Led by Managing Director Michael Francis, a cross-sectional group of 20 did just that: They rolled out a full production Kubernetes environment and released a new investor research web app on it. In 100 days.</p>
<section class="section2">
<p>For a company that's the world's largest asset manager, "just equipment procurement can take 100 days sometimes, let alone from inception to delivery," says Karl Wieman, a Senior System Administrator. "It was an aggressive schedule. But it moved the dial." In fact, the project achieved two goals: It solved a business problem (creating the needed web app) as well as provided real-world, in-production experience with Kubernetes, a cloud-native technology that the company was eager to explore. "It's not so much that we had to solve our main core production problem, it's how do we extend that? How do we evolve?" says Francis. The ultimate success of this project, beyond delivering the app, lies in the fact that "we've managed to integrate a radically new thought process into a controlled infrastructure that we didn't want to change."</p>
<div class="fullcol">
One of the management objectives for BlackRocks Product Group employees in 2017 was to "build cool stuff." Led by Managing Director Michael Francis, a cross-sectional group of 20 did just that: They rolled out a full production Kubernetes environment and released a new investor research web app on it. In 100 days.<br><br>
For a company thats the worlds largest asset manager, "just equipment procurement can take 100 days sometimes, let alone from inception to delivery," says Karl Wieman, a Senior System Administrator. "It was an aggressive schedule. But it moved the dial."
In fact, the project achieved two goals: It solved a business problem (creating the needed web app) as well as provided real-world, in-production experience with Kubernetes, a cloud-native technology that the company was eager to explore. "Its not so much that we had to solve our main core production problem, its how do we extend that? How do we evolve?" says Francis. The ultimate success of this project, beyond delivering the app, lies in the fact that "weve managed to integrate a radically new thought process into a controlled infrastructure that we didnt want to change."<br><br>
After all, in its three decades of existence, BlackRock has "a very well-established environment for managing our compute resources," says Francis. "We manage large cluster processes on machines, so we do a lot of orchestration and management for our main production processes in a way thats very cloudish in concept. Were able to manage them in a very controlled, static deployment scheme, and that has given us a huge amount of scalability."<br><br>
Though that works well for the core production, the company has found that some data science workloads require more dynamic access to resources. "Its a very bursty process," says Francis, who is head of data for the companys Aladdin investment management platform division.<br><br>
Aladdin, which connects the people, information and technology needed for money management in real time, is used internally and is also sold as a platform to other asset managers and insurance companies. "We want to be able to give every investor access to data science, meaning <a href="https://www.python.org">Python</a> notebooks, or even something much more advanced, like a MapReduce engine based on <a href="https://spark.apache.org">Spark</a>," says Francis. But "managing complex Python installations on users desktops is really hard because everyone ends up with slightly different environments. Docker allows us to flatten that environment."
</div>
</section>
<p>After all, in its three decades of existence, BlackRock has "a very well-established environment for managing our compute resources," says Francis. "We manage large cluster processes on machines, so we do a lot of orchestration and management for our main production processes in a way that's very cloudish in concept. We're able to manage them in a very controlled, static deployment scheme, and that has given us a huge amount of scalability."</p>
<div class="banner3">
<div class="banner3text">
"We manage large cluster processes on machines, so we do a lot of orchestration and management for our main production processes in a way thats very cloudish in concept. Were able to manage them in a very controlled, static deployment scheme, and that has given us a huge amount of scalability."
</div>
</div>
<p>Though that works well for the core production, the company has found that some data science workloads require more dynamic access to resources. "It's a very bursty process," says Francis, who is head of data for the company's Aladdin investment management platform division.</p>
<section class="section3">
<div class="fullcol">
Still, challenges remain. "If you have a shared cluster, you get this storming herd problem where everyone wants to do the same thing at the same time," says Francis. "You could put limits on it, but youd have to build an infrastructure to define limits for our processes, and the Python notebooks werent really designed for that. We have existing environments that do these things, but we needed to make it real, expansive, and scalable. Being able to spin that up on demand, tear it down, and make that much more dynamic, became a critical thought process for us."<br><br>
Made up of managers from technology, infrastructure, production operations, development and information security, Franciss team was able to look at the problem holistically and come up with a solution that made sense for BlackRock. "Our initial straw man was that we were going to build everything using <a href="https://www.ansible.com">Ansible</a> and run it all using some completely different distributed environment," says Francis. "That would have been absolutely the wrong thing to do. Had we gone off on our own as the dev team and developed this solution, it would have been a very different product. And it would have been very expensive. We would not have gone down the route of running under our existing orchestration system. Because we dont understand it. These guys [in operations and infrastructure] understand it. Having the multidisciplinary team allowed us to get to the right solutions and that actually meant we didnt build anywhere near the amount we thought we were going to end up building."<br><br>
In search of a solution in which they could manage usage on a user-by-user level, Franciss team gravitated to Red Hats <a href="https://www.openshift.com">OpenShift</a> Kubernetes offering. The company had already experimented with other cloud-native environments, but the team liked that Kubernetes was open source, and "we felt the winds were blowing in the direction of Kubernetes long term," says Francis. "Typically we make technology choices that we believe are going to be here in 5-10 years time, in some form. And right now, in this space, Kubernetes feels like the one thats going to be there." Adds Uri Morris, Vice President of Production Operations: "When you see that the non-Google committers to Kubernetes overtook the Google committers, thats an indicator of the momentum."<br><br>
Once that decision was made, the major challenge was figuring out how to make Kubernetes work within BlackRocks existing framework. "Its about understanding how we can operate, manage and support a platform like this, in addition to tacking it onto our existing technology platform," says Project Manager Michael Maskallis. "All the controls we have in place, the change management process, the software development lifecycle, onboarding processes we go through—how can we do all these things?"<br><br>
The first (anticipated) speed bump was working around issues behind BlackRocks corporate firewalls. "One of our challenges is there are no firewalls in most open source software," says Francis. "So almost all install scripts fail in some bizarre way, and pulling down packages doesnt necessarily work." The team ran into these types of problems using <a href="/docs/getting-started-guides/minikube/">Minikube</a> and did a few small pushes back to the open source project.
<p>Aladdin, which connects the people, information and technology needed for money management in real time, is used internally and is also sold as a platform to other asset managers and insurance companies. "We want to be able to give every investor access to data science, meaning <a href="https://www.python.org">Python</a> notebooks, or even something much more advanced, like a MapReduce engine based on <a href="https://spark.apache.org">Spark</a>," says Francis. But "managing complex Python installations on users' desktops is really hard because everyone ends up with slightly different environments. Docker allows us to flatten that environment."</p>
{{< case-studies/quote image="/images/case-studies/blackrock/banner3.jpg">}}
"We manage large cluster processes on machines, so we do a lot of orchestration and management for our main production processes in a way that's very cloudish in concept. We're able to manage them in a very controlled, static deployment scheme, and that has given us a huge amount of scalability."
{{< /case-studies/quote >}}
</div>
</section>
<p>Still, challenges remain. "If you have a shared cluster, you get this storming herd problem where everyone wants to do the same thing at the same time," says Francis. "You could put limits on it, but you'd have to build an infrastructure to define limits for our processes, and the Python notebooks weren't really designed for that. We have existing environments that do these things, but we needed to make it real, expansive, and scalable. Being able to spin that up on demand, tear it down, and make that much more dynamic, became a critical thought process for us."</p>
<div class="banner4">
<div class="banner4text">
"Typically we make technology choices that we believe are going to be here in 5-10 years time, in some form. And right now, in this space, Kubernetes feels like the one thats going to be there."
</div>
</div>
<p>Made up of managers from technology, infrastructure, production operations, development and information security, Francis's team was able to look at the problem holistically and come up with a solution that made sense for BlackRock. "Our initial straw man was that we were going to build everything using <a href="https://www.ansible.com">Ansible</a> and run it all using some completely different distributed environment," says Francis. "That would have been absolutely the wrong thing to do. Had we gone off on our own as the dev team and developed this solution, it would have been a very different product. And it would have been very expensive. We would not have gone down the route of running under our existing orchestration system. Because we don't understand it. These guys [in operations and infrastructure] understand it. Having the multidisciplinary team allowed us to get to the right solutions and that actually meant we didn't build anywhere near the amount we thought we were going to end up building."</p>
<section class="section4">
<div class="fullcol">
There were also questions about service discovery. "You can think of Aladdin as a cloud of services with APIs between them that allows us to build applications rapidly," says Francis. "Its all on a proprietary message bus, which gives us all sorts of advantages but at the same time, how does that play in a third party [platform]?"<br><br>
Another issue they had to navigate was that in BlackRocks existing system, the messaging protocol has different instances in the different development, test and production environments. While Kubernetes enables a more DevOps-style model, it didnt make sense for BlackRock. "I think what we are very proud of is that the ability for us to push into production is still incredibly rapid in this [new] infrastructure, but we have the control points in place, and we didnt have to disrupt everything," says Francis. "A lot of the cost of this development was thinking how best to leverage our internal tools. So it was less costly than we actually thought it was going to be."<br><br>
The project leveraged tools associated with the messaging bus, for example. "The way that the Kubernetes cluster will talk to our internal messaging platform is through a gateway program, and this gateway program already has built-in checks and throttles," says Morris. "We can use them to control and potentially throttle the requests coming in from Kubernetess very elastic infrastructure to the production infrastructure. Well continue to go in that direction. It enables us to scale as we need to from the operational perspective."<br><br>
The solution also had to be complementary with BlackRocks centralized operational support team structure. "The core infrastructure components of Kubernetes are hooked into our existing orchestration framework, which means that anyone in our support team has both control and visibility to the cluster using the existing operational tools," Morris explains. "That means that I dont need to hire more people."<br><br>
With those points established, the team created a procedure for the project: "We rolled this out first to a development environment, then moved on to a testing environment and then eventually to two production environments, in that sequential order," says Maskallis. "That drove a lot of our learning curve. We have all these moving parts, the software components on the infrastructure side, the software components with Kubernetes directly, the interconnectivity with the rest of the environment that we operate here at BlackRock, and how we connect all these pieces. If we came across issues, we fixed them, and then moved on to the different environments to replicate that until we eventually ended up in our production environment where this particular cluster is supposed to live."<br><br>
The team had weekly one-hour working sessions with all the members (who are located around the world) participating, and smaller breakout or deep-dive meetings focusing on specific technical details. Possible solutions would be reported back to the group and debated the following week. "I think what made it a successful experiment was people had to work to learn, and they shared their experiences with others," says Vice President and Software Developer Fouad Semaan. Then, Francis says, "We gave our engineers the space to do what theyre good at. This hasnt been top-down."
<p>In search of a solution in which they could manage usage on a user-by-user level, Francis's team gravitated to Red Hat's <a href="https://www.openshift.com">OpenShift</a> Kubernetes offering. The company had already experimented with other cloud-native environments, but the team liked that Kubernetes was open source, and "we felt the winds were blowing in the direction of Kubernetes long term," says Francis. "Typically we make technology choices that we believe are going to be here in 5-10 years' time, in some form. And right now, in this space, Kubernetes feels like the one that's going to be there." Adds Uri Morris, Vice President of Production Operations: "When you see that the non-Google committers to Kubernetes overtook the Google committers, that's an indicator of the momentum."</p>
<p>Once that decision was made, the major challenge was figuring out how to make Kubernetes work within BlackRock's existing framework. "It's about understanding how we can operate, manage and support a platform like this, in addition to tacking it onto our existing technology platform," says Project Manager Michael Maskallis. "All the controls we have in place, the change management process, the software development lifecycle, onboarding processes we go through—how can we do all these things?"</p>
</div>
</section>
<p>The first (anticipated) speed bump was working around issues behind BlackRock's corporate firewalls. "One of our challenges is there are no firewalls in most open source software," says Francis. "So almost all install scripts fail in some bizarre way, and pulling down packages doesn't necessarily work." The team ran into these types of problems using <a href="/docs/getting-started-guides/minikube/">Minikube</a> and did a few small pushes back to the open source project.</p>
<div class="banner5">
<div class="banner5text">
"The core infrastructure components of Kubernetes are hooked into our existing orchestration framework, which means that anyone in our support team has both control and visibility to the cluster using the existing operational tools. That means that I dont need to hire more people."
{{< case-studies/quote image="/images/case-studies/blackrock/banner4.jpg">}}
"Typically we make technology choices that we believe are going to be here in 5-10 years' time, in some form. And right now, in this space, Kubernetes feels like the one that's going to be there."
{{< /case-studies/quote >}}
</div>
</div>
<p>There were also questions about service discovery. "You can think of Aladdin as a cloud of services with APIs between them that allows us to build applications rapidly," says Francis. "It's all on a proprietary message bus, which gives us all sorts of advantages but at the same time, how does that play in a third party [platform]?"</p>
<section class="section5">
<div class="fullcol">
They were led by one key axiom: To stay focused and avoid scope creep. This meant that they wouldnt use features that werent in the core of Kubernetes and Docker. But if there was a real need, theyd build the features themselves. Luckily, Francis says, "Because of the rapidity of the development, a lot of things we thought we would have to build ourselves have been rolled into the core product. [The package manager<a href="https://helm.sh"> Helm</a> is one example]. People have similar problems."<br><br>
By the end of the 100 days, the app was up and running for internal BlackRock users. The initial capacity of 30 users was hit within hours, and quickly increased to 150. "People were immediately all over it," says Francis. In the next phase of this project, they are planning to scale up the cluster to have more capacity.<br><br>
Even more importantly, they now have in-production experience with Kubernetes that they can continue to build on—and a complete framework for rolling out new applications. "Were going to use this infrastructure for lots of other application workloads as time goes on. Its not just data science; its this style of application that needs the dynamism," says Francis. "Is it the right place to move our core production processes onto? It might be. Were not at a point where we can say yes or no, but we felt that having real production experience with something like Kubernetes at some form and scale would allow us to understand that. I think were 6-12 months away from making a [large scale] decision. We need to gain experience of running the system in production, we need to understand failure modes and how best to manage operational issues."<br><br>
For other big companies considering a project like this, Francis says commitment and dedication are key: "We got the signoff from [senior management] from day one, with the commitment that we were able to get the right people. If I had to isolate what makes something complex like this succeed, I would say senior hands-on people who can actually drive it make a huge difference." With that in place, he adds, "My message to other enterprises like us is you can actually integrate Kubernetes into an existing, well-orchestrated machinery. You dont have to throw out everything you do. And using Kubernetes made a complex problem significantly easier."
<p>Another issue they had to navigate was that in BlackRock's existing system, the messaging protocol has different instances in the different development, test and production environments. While Kubernetes enables a more DevOps-style model, it didn't make sense for BlackRock. "I think what we are very proud of is that the ability for us to push into production is still incredibly rapid in this [new] infrastructure, but we have the control points in place, and we didn't have to disrupt everything," says Francis. "A lot of the cost of this development was thinking how best to leverage our internal tools. So it was less costly than we actually thought it was going to be."</p>
</div>
</section>
<p>The project leveraged tools associated with the messaging bus, for example. "The way that the Kubernetes cluster will talk to our internal messaging platform is through a gateway program, and this gateway program already has built-in checks and throttles," says Morris. "We can use them to control and potentially throttle the requests coming in from Kubernetes's very elastic infrastructure to the production infrastructure. We'll continue to go in that direction. It enables us to scale as we need to from the operational perspective."</p>
<p>The solution also had to be complementary with BlackRock's centralized operational support team structure. "The core infrastructure components of Kubernetes are hooked into our existing orchestration framework, which means that anyone in our support team has both control and visibility to the cluster using the existing operational tools," Morris explains. "That means that I don't need to hire more people."</p>
<p>With those points established, the team created a procedure for the project: "We rolled this out first to a development environment, then moved on to a testing environment and then eventually to two production environments, in that sequential order," says Maskallis. "That drove a lot of our learning curve. We have all these moving parts, the software components on the infrastructure side, the software components with Kubernetes directly, the interconnectivity with the rest of the environment that we operate here at BlackRock, and how we connect all these pieces. If we came across issues, we fixed them, and then moved on to the different environments to replicate that until we eventually ended up in our production environment where this particular cluster is supposed to live."</p>
<p>The team had weekly one-hour working sessions with all the members (who are located around the world) participating, and smaller breakout or deep-dive meetings focusing on specific technical details. Possible solutions would be reported back to the group and debated the following week. "I think what made it a successful experiment was people had to work to learn, and they shared their experiences with others," says Vice President and Software Developer Fouad Semaan. Then, Francis says, "We gave our engineers the space to do what they're good at. This hasn't been top-down."</p>
{{< case-studies/quote >}}
"The core infrastructure components of Kubernetes are hooked into our existing orchestration framework, which means that anyone in our support team has both control and visibility to the cluster using the existing operational tools. That means that I don't need to hire more people."
{{< /case-studies/quote >}}
<p>They were led by one key axiom: To stay focused and avoid scope creep. This meant that they wouldn't use features that weren't in the core of Kubernetes and Docker. But if there was a real need, they'd build the features themselves. Luckily, Francis says, "Because of the rapidity of the development, a lot of things we thought we would have to build ourselves have been rolled into the core product. [The package manager<a href="https://helm.sh"> Helm</a> is one example]. People have similar problems."</p>
<p>By the end of the 100 days, the app was up and running for internal BlackRock users. The initial capacity of 30 users was hit within hours, and quickly increased to 150. "People were immediately all over it," says Francis. In the next phase of this project, they are planning to scale up the cluster to have more capacity.</p>
<p>Even more importantly, they now have in-production experience with Kubernetes that they can continue to build on—and a complete framework for rolling out new applications. "We're going to use this infrastructure for lots of other application workloads as time goes on. It's not just data science; it's this style of application that needs the dynamism," says Francis. "Is it the right place to move our core production processes onto? It might be. We're not at a point where we can say yes or no, but we felt that having real production experience with something like Kubernetes at some form and scale would allow us to understand that. I think we're 6-12 months away from making a [large scale] decision. We need to gain experience of running the system in production, we need to understand failure modes and how best to manage operational issues."</p>
<p>For other big companies considering a project like this, Francis says commitment and dedication are key: "We got the signoff from [senior management] from day one, with the commitment that we were able to get the right people. If I had to isolate what makes something complex like this succeed, I would say senior hands-on people who can actually drive it make a huge difference." With that in place, he adds, "My message to other enterprises like us is you can actually integrate Kubernetes into an existing, well-orchestrated machinery. You don't have to throw out everything you do. And using Kubernetes made a complex problem significantly easier."</p>
+61 -92
View File
@@ -3,115 +3,84 @@ title: Booking.com Case Study
linkTitle: Booking.com
case_study_styles: true
cid: caseStudies
css: /css/case-studies-gradient.css
logo: booking.com_featured_logo.png
featured: true
weight: 3
quote: >
We realized that we needed to learn Kubernetes better in order to fully use the potential of it. At that point, we made the shift to build our own Kubernetes platform.
new_case_study_styles: true
heading_background: /images/case-studies/booking/banner1.jpg
heading_title_text: Booking.com
use_gradient_overlay: true
subheading: >
After Learning the Ropes with a Kubernetes Distribution, Booking.com Built a Platform of Its Own
case_study_details:
- Company: Booking.com
- Location: Netherlands
- Industry: Travel
---
<h2>Challenge</h2>
<p>In 2016, Booking.com migrated to an OpenShift platform, which gave product developers faster access to infrastructure. But because Kubernetes was abstracted away from the developers, the infrastructure team became a "knowledge bottleneck" when challenges arose. Trying to scale that support wasn't sustainable.</p>
<div class="article image overlay" style="background-image: url('/images/case-studies/booking/banner1.jpg')">
<h1> CASE STUDY: Booking.com</h1>
<div class="subhead">After Learning the Ropes with a Kubernetes Distribution, Booking.com Built a Platform of Its Own</div>
</div>
<div class="details">
Company &nbsp;<b>Booking.com</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Netherlands</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Travel</b>
</div>
<hr>
<section class="section1">
<div class="colsgradient">
<div class="col1">
<h2>Challenge</h2>
In 2016, Booking.com migrated to an OpenShift platform, which gave product developers faster access to infrastructure. But because Kubernetes was abstracted away from the developers, the infrastructure team became a “knowledge bottleneck” when challenges arose. Trying to scale that support wasnt sustainable.
<h2>Solution</h2>
<p>After a year operating OpenShift, the platform team decided to build its own vanilla Kubernetes platform—and ask developers to learn some Kubernetes in order to use it. "This is not a magical platform," says Ben Tyler, Principal Developer, B Platform Track. "We're not claiming that you can just use it with your eyes closed. Developers need to do some learning, and we're going to do everything we can to make sure they have access to that knowledge."</p>
<h2>Solution</h2>
After a year operating OpenShift, the platform team decided to build its own vanilla Kubernetes platform—and ask developers to learn some Kubernetes in order to use it. “This is not a magical platform,” says Ben Tyler, Principal Developer, B Platform Track. “Were not claiming that you can just use it with your eyes closed. Developers need to do some learning, and were going to do everything we can to make sure they have access to that knowledge.”
<h2>Impact</h2>
Despite the learning curve, theres been a great uptick in adoption of the new Kubernetes platform. Before containers, creating a new service could take a couple of days if the developers understood Puppet, or weeks if they didnt. On the new platform, it can take as few as 10 minutes. About 500 new services were built on the platform in the first 8 months.
</div>
</div>
</section>
<div class="article image overlay" style="background-image: url('/images/case-studies/booking/banner2.jpg');">
<div class="quotetext">
“As our users learn Kubernetes and become more sophisticated Kubernetes users, they put pressure on us to provide a better, more native Kubernetes experience, which is great. Its a super healthy dynamic.”
<p><div class="quoteauthortext">- BEN TYLER, PRINCIPAL DEVELOPER, B PLATFORM TRACK AT BOOKING.COM</div></p>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h4>Booking.com has a long history with Kubernetes: In 2015, a team at the travel platform prototyped a container platform based on Mesos and Marathon.
</h4>
<p>Impressed by what the technology offered, but in need of enterprise features at its scale—the site handles more than 1.5 million room-night reservations a day on average—the team decided to adopt an OpenShift platform.</p>
<p>Despite the learning curve, there's been a great uptick in adoption of the new Kubernetes platform. Before containers, creating a new service could take a couple of days if the developers understood Puppet, or weeks if they didn't. On the new platform, it can take as few as 10 minutes. About 500 new services were built on the platform in the first 8 months.</p>
<p>This platform, which was wrapped in a Heroku-style, high-level CLI interface, “was definitely popular with our product developers,” says Ben Tyler, Principal Developer, B Platform Track. “We gave them faster access to infrastructure.”</p>
{{< case-studies/quote
image="/images/case-studies/booking/banner2.jpg"
author="BEN TYLER, PRINCIPAL DEVELOPER, B PLATFORM TRACK AT BOOKING.COM"
>}}
"As our users learn Kubernetes and become more sophisticated Kubernetes users, they put pressure on us to provide a better, more native Kubernetes experience, which is great. It's a super healthy dynamic."
{{< /case-studies/quote >}}
<p>But, he adds, “anytime something went slightly off the rails, developers didnt have any of the knowledge required to support themselves.”</p>
{{< case-studies/lead >}}
Booking.com has a long history with Kubernetes: In 2015, a team at the travel platform prototyped a container platform based on Mesos and Marathon.
{{< /case-studies/lead >}}
<p>And after a year of operating this platform, the infrastructure team found that it had become “a knowledge bottleneck,” he says. “Most of the developers who used it did not know it was Kubernetes underneath. An application failure and a platform failure both looked like failures of that Heroku-style tool.”</p>
<p>
Scaling the necessary support did not seem feasible or sustainable, so the platform team needed a new solution. The understanding of Kubernetes that they had gained operating the OpenShift platform gave them confidence to build a vanilla Kubernetes platform of their own and customize it to suit the companys needs.</p>
<p>Impressed by what the technology offered, but in need of enterprise features at its scale—the site handles more than 1.5 million room-night reservations a day on average—the team decided to adopt an OpenShift platform.</p>
<p>This platform, which was wrapped in a Heroku-style, high-level CLI interface, "was definitely popular with our product developers," says Ben Tyler, Principal Developer, B Platform Track. "We gave them faster access to infrastructure."</p>
</div>
</section>
<div class="greybanner">
<div class="greyquotetext">
“For entering the landscape, OpenShift was definitely very helpful. It shows you what the technology can do, and it makes it easy for you to use it. After we spent some time on it, we realized that we needed to learn Kubernetes better in order to fully use the potential of it. At that point, we made the shift to build our own Kubernetes platform. We definitely benefit in the long term for taking that step and investing the time in gaining that knowledge.”<p><div class="quoteauthortext">- EDUARD IACOBOAIA, SENIOR SYSTEM ADMINISTRATOR, B PLATFORM TRACK AT BOOKING.COM</div></p>
</div>
</div>
<section class="section3">
<div class="fullcol">
<p>
“For entering the landscape, OpenShift was definitely very helpful,” says Eduard Iacoboaia, Senior System Administrator, B Platform Track. “It shows you what the technology can do, and it makes it easy for you to use it. After we spent some time on it, we realized that we needed to learn Kubernetes better in order to fully use the potential of it. At that point, we made the shift to build our own Kubernetes platform. We definitely benefit in the long term for taking that step and investing the time in gaining that knowledge.” </p>
<p>
Iacoboaias team had customized a lot of OpenShift tools to make them work at Booking.com, and “those integrations points were kind of fragile,” he says. “We spent much more time understanding all the components of Kubernetes, how they work, how they interact with each other.” That research led the team to switch from OpenShifts built-in Ansible playbooks to Puppet deployments, which are used for the rest of Bookings infrastructure. The control plane was also moved from inside the cluster onto bare metal, as the company runs tens of thousands of bare-metal servers and a large infrastructure for running applications on bare metal. (Booking runs Kubernetes in multiple clusters in multiple data centers across the various regions where it has compute.) “We decided to keep it as simple as possible and to also use the tools that we know best,” says Iacoboaia. </p>
<p>
The other big change was that product engineers would have to learn Kubernetes in order to onboard. “This is not a magical platform,” says Tyler. “Were not claiming that you can just use it with your eyes closed. Developers need to do some learning, and were going to do everything we can to make sure they have access to that knowledge.” That includes trainings, blog posts, videos, and Udemy courses. </p>
<p>
Despite the learning curve, theres been a great uptick in adoption of the new Kubernetes platform. “I think the reason weve been able to strike this bargain successfully is that were not asking them to learn a proprietary app system,” says Tyler. “Were asking them to learn something thats open source, where the knowledge is transferable. Theyre investing in their own careers by learning Kubernetes.”</p>
<p>
One clear sign that this strategy has been a success is that in the support channel, when users have questions, other product engineers are jumping in to respond. “I havent seen that kind of community engagement around a particular platform product internally before,” says Tyler. “It helps a lot that its visibly an ecosystem standard outside of the company, so people feel value in investing in that knowledge and sharing it with others, which is really, really powerful.” </p>
<p>But, he adds, "anytime something went slightly off the rails, developers didn't have any of the knowledge required to support themselves."</p>
<p>And after a year of operating this platform, the infrastructure team found that it had become "a knowledge bottleneck," he says. "Most of the developers who used it did not know it was Kubernetes underneath. An application failure and a platform failure both looked like failures of that Heroku-style tool."</p>
</div>
</section>
<div class="article image overlay" style="background-image: url('/images/case-studies/booking/banner3.jpg');">
<div class="quotetext">
“We have a tutorial. You follow the tutorial. Your code is running. Then, its business-logic time. The time to gain access to resources is decreased enormously.” <p><div class="quoteauthortext">- BEN TYLER, PRINCIPAL DEVELOPER, B PLATFORM TRACK AT BOOKING.COM</div></p>
</div>
</div>
<section class="section5">
<div class="fullcol">
<p>
Theres other quantifiable evidence too: Before containers, creating a new service could take a couple of days if the developers understood Puppet, or weeks if they didnt. On the new platform, it takes 10 minutes. “We have a tutorial. You follow the tutorial. Your code is running. Then, its business-logic time,” says Tyler. “The time to gain access to resources is decreased enormously.” About 500 new services were built in the first 8 months on the platform, with hundreds of releases per day. </p>
<p>
The platform offers different “layers of contracts, so to speak,” says Tyler. “At the very base, its just Kubernetes. If youre a pro Kubernetes user, heres a Kubernetes API, just like you get from GKE or AKS. Were trying to be a provider on that same level. But our whole job inside the company is to be a bigger value add than just vanilla infrastructure, so we provide a set of base images for our main stacks, Perl and Java.”
</p>
<p>
And “as our users learn Kubernetes and become more sophisticated Kubernetes users, they put pressure on us to provide a better more native Kubernetes experience, which is great,” says Tyler. “Its a super healthy dynamic.”</p>
<p>
The platform also includes other CNCF technologies, such as Envoy, Helm, and Prometheus. Most of the critical service traffic for Booking.com is routed through Envoy, and Prometheus is used primarily to monitor infrastructure components. Helm is consumed as a packaging standard. The team also developed and open sourced Shipper, an extension for Kubernetes to add more complex rollout strategies and multi-cluster orchestration.
</p>
<p>
To be sure, there have been internal discussions about the wisdom of building a Kubernetes platform from the ground up. “This is not really our core competency—Kubernetes and travel, theyre kind of far apart, right?” says Tyler. “But weve made a couple of bets on CNCF components that have worked out really well for us. Envoy and Kubernetes, in particular, have been really beneficial to our organization. We were able to customize them, either because we could look at the source code or because they had extension points, and we were able to get value out of them very quickly without having to change any paradigms internally.”
</p>
</div>
</section>
</body>
<p>Scaling the necessary support did not seem feasible or sustainable, so the platform team needed a new solution. The understanding of Kubernetes that they had gained operating the OpenShift platform gave them confidence to build a vanilla Kubernetes platform of their own and customize it to suit the company's needs.</p>
{{< case-studies/quote author="EDUARD IACOBOAIA, SENIOR SYSTEM ADMINISTRATOR, B PLATFORM TRACK AT BOOKING.COM" >}}
"For entering the landscape, OpenShift was definitely very helpful. It shows you what the technology can do, and it makes it easy for you to use it. After we spent some time on it, we realized that we needed to learn Kubernetes better in order to fully use the potential of it. At that point, we made the shift to build our own Kubernetes platform. We definitely benefit in the long term for taking that step and investing the time in gaining that knowledge."
{{< /case-studies/quote >}}
<p>"For entering the landscape, OpenShift was definitely very helpful," says Eduard Iacoboaia, Senior System Administrator, B Platform Track. "It shows you what the technology can do, and it makes it easy for you to use it. After we spent some time on it, we realized that we needed to learn Kubernetes better in order to fully use the potential of it. At that point, we made the shift to build our own Kubernetes platform. We definitely benefit in the long term for taking that step and investing the time in gaining that knowledge."</p>
<p>Iacoboaia's team had customized a lot of OpenShift tools to make them work at Booking.com, and "those integrations points were kind of fragile," he says. "We spent much more time understanding all the components of Kubernetes, how they work, how they interact with each other." That research led the team to switch from OpenShift's built-in Ansible playbooks to Puppet deployments, which are used for the rest of Booking's infrastructure. The control plane was also moved from inside the cluster onto bare metal, as the company runs tens of thousands of bare-metal servers and a large infrastructure for running applications on bare metal. (Booking runs Kubernetes in multiple clusters in multiple data centers across the various regions where it has compute.) "We decided to keep it as simple as possible and to also use the tools that we know best," says Iacoboaia.</p>
<p>The other big change was that product engineers would have to learn Kubernetes in order to onboard. "This is not a magical platform," says Tyler. "We're not claiming that you can just use it with your eyes closed. Developers need to do some learning, and we're going to do everything we can to make sure they have access to that knowledge." That includes trainings, blog posts, videos, and Udemy courses.</p>
<p>Despite the learning curve, there's been a great uptick in adoption of the new Kubernetes platform. "I think the reason we've been able to strike this bargain successfully is that we're not asking them to learn a proprietary app system," says Tyler. "We're asking them to learn something that's open source, where the knowledge is transferable. They're investing in their own careers by learning Kubernetes."</p>
<p>One clear sign that this strategy has been a success is that in the support channel, when users have questions, other product engineers are jumping in to respond. "I haven't seen that kind of community engagement around a particular platform product internally before," says Tyler. "It helps a lot that it's visibly an ecosystem standard outside of the company, so people feel value in investing in that knowledge and sharing it with others, which is really, really powerful."</p>
{{< case-studies/quote
image="/images/case-studies/booking/banner3.jpg"
author="BEN TYLER, PRINCIPAL DEVELOPER, B PLATFORM TRACK AT BOOKING.COM"
>}}
"We have a tutorial. You follow the tutorial. Your code is running. Then, it's business-logic time. The time to gain access to resources is decreased enormously."
{{< /case-studies/quote >}}
<p>There's other quantifiable evidence too: Before containers, creating a new service could take a couple of days if the developers understood Puppet, or weeks if they didn't. On the new platform, it takes 10 minutes. "We have a tutorial. You follow the tutorial. Your code is running. Then, it's business-logic time," says Tyler. "The time to gain access to resources is decreased enormously." About 500 new services were built in the first 8 months on the platform, with hundreds of releases per day.</p>
<p>The platform offers different "layers of contracts, so to speak," says Tyler. "At the very base, it's just Kubernetes. If you're a pro Kubernetes user, here's a Kubernetes API, just like you get from GKE or AKS. We're trying to be a provider on that same level. But our whole job inside the company is to be a bigger value add than just vanilla infrastructure, so we provide a set of base images for our main stacks, Perl and Java."</p>
<p>And "as our users learn Kubernetes and become more sophisticated Kubernetes users, they put pressure on us to provide a better more native Kubernetes experience, which is great," says Tyler. "It's a super healthy dynamic."</p>
<p>The platform also includes other CNCF technologies, such as Envoy, Helm, and Prometheus. Most of the critical service traffic for Booking.com is routed through Envoy, and Prometheus is used primarily to monitor infrastructure components. Helm is consumed as a packaging standard. The team also developed and open sourced Shipper, an extension for Kubernetes to add more complex rollout strategies and multi-cluster orchestration.</p>
<p>To be sure, there have been internal discussions about the wisdom of building a Kubernetes platform from the ground up. "This is not really our core competency—Kubernetes and travel, they're kind of far apart, right?" says Tyler. "But we've made a couple of bets on CNCF components that have worked out really well for us. Envoy and Kubernetes, in particular, have been really beneficial to our organization. We were able to customize them, either because we could look at the source code or because they had extension points, and we were able to get value out of them very quickly without having to change any paradigms internally."</p>
+62 -85
View File
@@ -3,101 +3,78 @@ title: Booz Allen Case Study
linkTitle: Booz Allen Hamilton
case_study_styles: true
cid: caseStudies
css: /css/case-studies-gradient.css
logo: booz-allen-featured-logo.svg
featured: true
weight: 2
quote: >
Kubernetes is a great solution for us. It allows us to rapidly iterate on our clients demands.
Kubernetes is a great solution for us. It allows us to rapidly iterate on our clients' demands.
new_case_study_styles: true
heading_background: /images/case-studies/booz-allen/banner4.jpg
heading_title_text: Booz Allen Hamilton
use_gradient_overlay: true
subheading: >
How Booz Allen Hamilton Is Helping Modernize the Federal Government with Kubernetes
case_study_details:
- Company: Booz Allen Hamilton
- Location: United States
- Industry: Government
---
<h2>Challenge</h2>
<div class="article image overlay" style="background-image: url('/images/case-studies/booz-allen/banner4.jpg')">
<h1> CASE STUDY: Booz Allen Hamilton</h1>
<div class="subhead">How Booz Allen Hamilton Is Helping Modernize the Federal Government with Kubernetes</div>
</div>
<div class="details">
Company &nbsp;<b>Booz Allen Hamilton</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>United States</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Government</b>
</div>
<hr>
<section class="section1">
<div class="colsgradient">
<div class="col1">
<h2>Challenge</h2>
In 2017, Booz Allen Hamiltons Strategic Innovation Group worked with the federal government to relaunch the decade-old recreation.gov website, which provides information and real-time booking for more than 100,000 campsites and facilities on federal lands across the country. The infrastructure needed to be agile, reliable, and scalable—as well as repeatable for the other federal agencies that are among Booz Allen Hamiltons customers.
<p>In 2017, Booz Allen Hamilton's Strategic Innovation Group worked with the federal government to relaunch the decade-old recreation.gov website, which provides information and real-time booking for more than 100,000 campsites and facilities on federal lands across the country. The infrastructure needed to be agile, reliable, and scalable—as well as repeatable for the other federal agencies that are among Booz Allen Hamilton's customers.</p>
<h2>Solution</h2>
<p>"The only way that we thought we could be successful with this problem across all the different agencies is to create a microservice architecture and containers, so that we could be very dynamic and very agile to any given agency for whatever requirements that they may have," says Booz Allen Hamilton Senior Lead Technologist Martin Folkoff. To meet those requirements, Folkoff's team looked to Kubernetes for orchestration.</p>
<h2>Solution</h2>
“The only way that we thought we could be successful with this problem across all the different agencies is to create a microservice architecture and containers, so that we could be very dynamic and very agile to any given agency for whatever requirements that they may have,” says Booz Allen Hamilton Senior Lead Technologist Martin Folkoff. To meet those requirements, Folkoffs team looked to Kubernetes for orchestration.
<h2>Impact</h2>
With the recreation.gov Kubernetes platform, changes can be implemented in about 30 minutes, compared to the multiple hours or even days legacy government applications require to review the code, get approval, and deploy the fix. Recreation.gov deploys to production on average 10 times a day. With monitoring, security, and logging built in, developers can create and publish new services to production within a week. Additionally, Folkoff says, “supporting the large, existing monoliths in the government is extremely expensive,” and migrating into a more modern platform has resulted in perhaps 50% cost savings.
</div>
</div>
</section>
<div class="article image overlay" style="background-image: url('/images/case-studies/booz-allen/banner2.jpg');">
<div class="quotetext">
"When theres a regulatory change in an agency, or a legislative change in Congress, or an executive order that changes the way you do business, how do I deploy that and get that out to the people who need it rapidly? At the end of the day, thats the problem were trying to help the government solve with tools like Kubernetes."
<p><div class="quoteauthortext">- JOSH BOYD, CHIEF TECHNOLOGIST AT BOOZ ALLEN HAMILTON</div></p>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h4>The White House launched an IT modernization effort in 2017, and in addition to improving cybersecurity and shifting to the public cloud and a consolidated IT model, “the federal government is looking to provide a better experience to citizens in every way that we interact with the government through every channel,” says Booz Allen Hamilton Senior Lead Technologist Martin Folkoff.</h4>
<p>To that end, Folkoffs Strategic Innovation Group worked with the federal government last year to relaunch the decade-old recreation.gov website, which provides information and real-time booking for more than 100,000 campsites and facilities on federal lands across the country.</p>
<p>With the recreation.gov Kubernetes platform, changes can be implemented in about 30 minutes, compared to the multiple hours or even days legacy government applications require to review the code, get approval, and deploy the fix. Recreation.gov deploys to production on average 10 times a day. With monitoring, security, and logging built in, developers can create and publish new services to production within a week. Additionally, Folkoff says, "supporting the large, existing monoliths in the government is extremely expensive," and migrating into a more modern platform has resulted in perhaps 50% cost savings.</p>
<p>The infrastructure needed to be agile, reliable, and scalable—as well as repeatable for the other federal agencies that are among Booz Allen Hamiltons customers. “The only way that we thought we could be successful with this problem across all the different agencies is to create a microservice architecture, so that we could be very dynamic and very agile to any given agency for whatever requirements that they may have,” says Folkoff.</p>
</div>
</section>
{{< case-studies/quote
image="/images/case-studies/booz-allen/banner2.jpg"
author="JOSH BOYD, CHIEF TECHNOLOGIST AT BOOZ ALLEN HAMILTON"
>}}
"When there's a regulatory change in an agency, or a legislative change in Congress, or an executive order that changes the way you do business, how do I deploy that and get that out to the people who need it rapidly? At the end of the day, that's the problem we're trying to help the government solve with tools like Kubernetes."
{{< /case-studies/quote >}}
<div class="greybanner">
<div class="greyquotetext">
"With CNCF, theres a lot of focus on scale, and so theres a lot of comfort knowing that as the project grows, were going to be comfortable using that tool set."<p><div class="quoteauthortext">- MARTIN FOLKOFF, SENIOR LEAD TECHNOLOGIST AT BOOZ ALLEN HAMILTON</div></p>
</div>
</div>
{{< case-studies/lead >}}
The White House launched an IT modernization effort in 2017, and in addition to improving cybersecurity and shifting to the public cloud and a consolidated IT model, "the federal government is looking to provide a better experience to citizens in every way that we interact with the government through every channel," says Booz Allen Hamilton Senior Lead Technologist Martin Folkoff.
{{< /case-studies/lead >}}
<p>To that end, Folkoff's Strategic Innovation Group worked with the federal government last year to relaunch the decade-old recreation.gov website, which provides information and real-time booking for more than 100,000 campsites and facilities on federal lands across the country.</p>
<p>The infrastructure needed to be agile, reliable, and scalable—as well as repeatable for the other federal agencies that are among Booz Allen Hamilton's customers. "The only way that we thought we could be successful with this problem across all the different agencies is to create a microservice architecture, so that we could be very dynamic and very agile to any given agency for whatever requirements that they may have," says Folkoff.</p>
{{< case-studies/quote author="MARTIN FOLKOFF, SENIOR LEAD TECHNOLOGIST AT BOOZ ALLEN HAMILTON" >}}
"With CNCF, there's a lot of focus on scale, and so there's a lot of comfort knowing that as the project grows, we're going to be comfortable using that tool set."
{{< /case-studies/quote >}}
<p>Booz Allen Hamilton, which has provided consulting services to the federal government for more than a century, introduced microservices, Docker containers, and AWS to its federal agency clients about five years ago. The next logical step was Kubernetes for orchestration. "Knowing that we had to be really agile and really reliable and scalable, we felt that the only technology that we know that can enable those kinds of things are the ones the CNCF provides," Folkoff says. "One of the things that is always important for the government is to make sure that the things that we build really endure. Using technology that is supported across multiple different companies and has strong governance gives people a lot of confidence."</p>
<p>Kubernetes was also aligned with the government's open source and IT modernization initiatives, so there has been an uptick in its usage at federal agencies over the past two years. "Now that Kubernetes is becoming offered as a service by the cloud providers like AWS and Microsoft, we're starting to see even more interest," says Chief Technologist Josh Boyd. Adds Folkoff: "With CNCF, there's a lot of focus on scale, and so there's a lot of comfort knowing that as the project grows, we're going to be comfortable using that tool set."</p>
<p>The greenfield recreation.gov project allowed the team to build a new Kubernetes-enabled site running on AWS, and the migration lasted only a week, when the old site didn't take bookings. "For the actual transition, we just swapped a DNS server, and it only took about 35 seconds between the old site being down and our new site being up and available," Folkoff adds. </p>
<section class="section3">
<div class="fullcol">
<p>
Booz Allen Hamilton, which has provided consulting services to the federal government for more than a century, introduced microservices, Docker containers, and AWS to its federal agency clients about five years ago. The next logical step was Kubernetes for orchestration. “Knowing that we had to be really agile and really reliable and scalable, we felt that the only technology that we know that can enable those kinds of things are the ones the CNCF provides,” Folkoff says. “One of the things that is always important for the government is to make sure that the things that we build really endure. Using technology that is supported across multiple different companies and has strong governance gives people a lot of confidence.”</p>
<p>
Kubernetes was also aligned with the governments open source and IT modernization initiatives, so there has been an uptick in its usage at federal agencies over the past two years. “Now that Kubernetes is becoming offered as a service by the cloud providers like AWS and Microsoft, were starting to see even more interest,” says Chief Technologist Josh Boyd. Adds Folkoff: “With CNCF, theres a lot of focus on scale, and so theres a lot of comfort knowing that as the project grows, were going to be comfortable using that tool set.” </p>
<p>
The greenfield recreation.gov project allowed the team to build a new Kubernetes-enabled site running on AWS, and the migration lasted only a week, when the old site didnt take bookings. “For the actual transition, we just swapped a DNS server, and it only took about 35 seconds between the old site being down and our new site being up and available,” Folkoff adds. </p>
</p>
</div>
</section>
<div class="article image overlay" style="background-image: url('/images/case-studies/booz-allen/banner1.png');">
<div class="quotetext">
"Kubernetes alone enables a dramatic reduction in cost as resources are prioritized to the days event" <p><div class="quoteauthortext">- MARTIN FOLKOFF, SENIOR LEAD TECHNOLOGIST AT BOOZ ALLEN HAMILTON</div></p>
</div>
</div>
<section class="section5">
<div class="fullcol">
<p>
In addition to its work with the Department of Interior for recreation.gov, Booz Allen Hamilton has brought Kubernetes to various Defense, Intelligence, and civilian agencies. Says Boyd: “When theres a regulatory change in an agency, or a legislative change in Congress, or an executive order that changes the way you do business, how do I deploy that and get that out to the people who need it rapidly? At the end of the day, thats the problem were trying to help the government solve with tools like Kubernetes.”</p>
<p>
For recreation.gov, the impact was clear and immediate. With the Kubernetes platform, Folkoff says, “if a new requirement for a permit comes out, we have the ability to design and develop and implement that completely independently of reserving a campsite. It provides a much better experience to users.” Today, changes can be implemented in about 30 minutes, compared to the multiple hours or even days legacy government applications require to review the code, get approval, and deploy the fix. Recreation.gov deploys to production on average 10 times a day. </p>
<p>
Developer velocity has been improved. “When I want to do monitoring or security or logging, I dont have to do anything to my services or my application to enable that anymore,” says Boyd. “I get all of this magic just by being on the Kubernetes platform.” With all of those things built in, developers can create and publish new services to production within one week. </p>
<p>
Additionally, Folkoff says, “supporting the large, existing monoliths in the government is extremely expensive,” and migrating into a more modern platform has resulted in perhaps 50% cost savings. “Kubernetes alone enables a dramatic reduction in cost as resources are prioritized to the days event,” he says. “For example, during a popular campsite release, camping-related services are scaled out while permit services are scaled down.”</p>
<p>
So far, “Kubernetes is a great solution for us,” says Folkoff. “It allows us to rapidly iterate on our clients demands.” Looking ahead, the team sees further adoption of the Kubernetes platform across federal agencies. Says Boyd: “You get the ability for the rapid delivery of business value for your customers. You now have observability into everything that youre doing. You dont have these onesies and twosies unicorn servers anymore. Now everything that you deploy is deployed in the same way, its all instrumented the same way, and its all built and deployed the same way through our CI/CD processes.”</p>
<p>
They also see a push toward re-platforming. “Theres still a lot of legacy workloads out there,” says Boyd. “Weve got the new challenges of greenfield development and integration with legacy systems, but also that brown field of Hey, how do I take this legacy monolith and get it onto a platform where now its instrumented with all the magic of the Kubernetes platform without having to do a whole lot to my application? I think re-platforming is a pretty big use case for the government right now.”</p>
<p>
And given the success that theyve had with Kubernetes so far, Boyd says, “I think at this point that technology is becoming pretty easy to sell.” Adds Folkoff: “People are really excited about being able to deploy, scale, be reliable, and do cheaper maintenance of all of this.”
</p>
</div>
</section>
</body>
{{< case-studies/quote
image="/images/case-studies/booz-allen/banner1.png"
author="MARTIN FOLKOFF, SENIOR LEAD TECHNOLOGIST AT BOOZ ALLEN HAMILTON"
>}}
"Kubernetes alone enables a dramatic reduction in cost as resources are prioritized to the day's event"
{{< /case-studies/quote >}}
<p>In addition to its work with the Department of Interior for recreation.gov, Booz Allen Hamilton has brought Kubernetes to various Defense, Intelligence, and civilian agencies. Says Boyd: "When there's a regulatory change in an agency, or a legislative change in Congress, or an executive order that changes the way you do business, how do I deploy that and get that out to the people who need it rapidly? At the end of the day, that's the problem we're trying to help the government solve with tools like Kubernetes."</p>
<p>For recreation.gov, the impact was clear and immediate. With the Kubernetes platform, Folkoff says, "if a new requirement for a permit comes out, we have the ability to design and develop and implement that completely independently of reserving a campsite. It provides a much better experience to users." Today, changes can be implemented in about 30 minutes, compared to the multiple hours or even days legacy government applications require to review the code, get approval, and deploy the fix. Recreation.gov deploys to production on average 10 times a day.</p>
<p>Developer velocity has been improved. "When I want to do monitoring or security or logging, I don't have to do anything to my services or my application to enable that anymore," says Boyd. "I get all of this magic just by being on the Kubernetes platform." With all of those things built in, developers can create and publish new services to production within one week. </p>
<p>Additionally, Folkoff says, "supporting the large, existing monoliths in the government is extremely expensive," and migrating into a more modern platform has resulted in perhaps 50% cost savings. "Kubernetes alone enables a dramatic reduction in cost as resources are prioritized to the day's event," he says. "For example, during a popular campsite release, camping-related services are scaled out while permit services are scaled down."</p>
<p>So far, "Kubernetes is a great solution for us," says Folkoff. "It allows us to rapidly iterate on our clients' demands." Looking ahead, the team sees further adoption of the Kubernetes platform across federal agencies. Says Boyd: "You get the ability for the rapid delivery of business value for your customers. You now have observability into everything that you're doing. You don't have these onesies and twosies unicorn servers anymore. Now everything that you deploy is deployed in the same way, it's all instrumented the same way, and it's all built and deployed the same way through our CI/CD processes."</p>
<p>They also see a push toward re-platforming. "There's still a lot of legacy workloads out there," says Boyd. "We've got the new challenges of greenfield development and integration with legacy systems, but also that brown field of 'Hey, how do I take this legacy monolith and get it onto a platform where now it's instrumented with all the magic of the Kubernetes platform without having to do a whole lot to my application?' I think re-platforming is a pretty big use case for the government right now."</p>
<p>And given the success that they've had with Kubernetes so far, Boyd says, "I think at this point that technology is becoming pretty easy to sell." Adds Folkoff: "People are really excited about being able to deploy, scale, be reliable, and do cheaper maintenance of all of this."</p>
+59 -75
View File
@@ -3,101 +3,85 @@ title: Bose Case Study
linkTitle: Bose
case_study_styles: true
cid: caseStudies
css: /css/style_case_studies.css
logo: bose_featured_logo.png
featured: false
weight: 2
quote: >
The CNCF Landscape quickly explains whats going on in all the different areas from storage to cloud providers to automation and so forth. This is our shopping cart to build a cloud infrastructure. We can go choose from the different aisles.
The CNCF Landscape quickly explains what's going on in all the different areas from storage to cloud providers to automation and so forth. This is our shopping cart to build a cloud infrastructure. We can go choose from the different aisles.
new_case_study_styles: true
heading_background: /images/case-studies/bose/banner1.jpg
heading_title_logo: /images/bose_logo.png
subheading: >
Bose: Supporting Rapid Development for Millions of IoT Products With Kubernetes
case_study_details:
- Company: Bose Corporation
- Location: Framingham, Massachusetts
- Industry: Consumer Electronics
---
<div class="banner1" style="background-image: url('/images/case-studies/bose/banner1.jpg')">
<h1> CASE STUDY:<img src="/images/bose_logo.png" class="header_logo" style="width:20%;margin-bottom:-1.2%"><br> <div class="subhead" style="margin-top:1%">Bose: Supporting Rapid Development for Millions of IoT Products With Kubernetes
<h2>Challenge</h2>
</div></h1>
<p>A household name in high-quality audio equipment, <a href="https://www.bose.com/en_us/index.html">Bose</a> has offered connected products for more than five years, and as that demand grew, the infrastructure had to change to support it. "We needed to provide a mechanism for developers to rapidly prototype and deploy services all the way to production pretty fast," says Lead Cloud Engineer Josh West. In 2016, the company decided to start building a platform from scratch. The primary goal: "To be one to two steps ahead of the different product groups so that we are never scrambling to catch up with their scale," says Cloud Architecture Manager Dylan O'Mahony.</p>
</div>
<h2>Solution</h2>
<div class="details">
Company &nbsp;<b>Bose Corporation</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Framingham, Massachusetts
</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Consumer Electronics</b>
</div>
<p>From the beginning, the team knew it wanted a microservices architecture. After evaluating and prototyping a couple of orchestration solutions, the team decided to adopt <a href="https://kubernetes.io/">Kubernetes</a> for its scaled IoT Platform-as-a-Service running on AWS. The platform, which also incorporated Prometheus monitoring, launched in production in 2017, serving over 3 million connected products from the get-go. Bose has since adopted a number of other CNCF technologies, including <a href="https://www.fluentd.org/">Fluentd</a>, <a href="https://coredns.io/">CoreDNS</a>, <a href="https://www.jaegertracing.io/">Jaeger</a>, and <a href="https://opentracing.io/">OpenTracing</a>.</p>
<hr>
<section class="section1">
<div class="cols">
<div class="col1" style="width:100%"">
<h2>Challenge</h2>
A household name in high-quality audio equipment, <a href="https://www.bose.com/en_us/index.html">Bose</a> has offered connected products for more than five years, and as that demand grew, the infrastructure had to change to support it. "We needed to provide a mechanism for developers to rapidly prototype and deploy services all the way to production pretty fast,” says Lead Cloud Engineer Josh West. In 2016, the company decided to start building a platform from scratch. The primary goal: "To be one to two steps ahead of the different product groups so that we are never scrambling to catch up with their scale,” says Cloud Architecture Manager Dylan OMahony.
<br><br>
<h2>Solution</h2>
From the beginning, the team knew it wanted a microservices architecture. After evaluating and prototyping a couple of orchestration solutions, the team decided to adopt <a href="https://kubernetes.io/">Kubernetes</a> for its scaled IoT Platform-as-a-Service running on AWS. The platform, which also incorporated Prometheus monitoring, launched in production in 2017, serving over 3 million connected products from the get-go. Bose has since adopted a number of other CNCF technologies, including <a href="https://www.fluentd.org/">Fluentd</a>, <a href="https://coredns.io/">CoreDNS</a>, <a href="https://www.jaegertracing.io/">Jaeger</a>, and <a href="https://opentracing.io/">OpenTracing</a>.
<br><br>
<h2>Impact</h2>
With about 100 engineers onboarded, the platform is now enabling 30,000 non-production deployments across dozens of microservices per year. In 2018, there were 1250+ production deployments. Just one production cluster holds 1,800 namespaces and 340 worker nodes. "We had a brand new service taken from concept through coding and deployment all the way to production, including hardening, security testing and so forth, in less than two and a half weeks,” says OMahony.
</div>
</div>
</section>
<div class="banner2">
<div class="banner2text">
"At Bose were building an IoT platform that has enabled our physical products. If it werent for Kubernetes and the rest of the CNCF projects being free open source software with such a strong community, we would never have achieved scale, or even gotten to launch&nbsp;on&nbsp;schedule."
<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Josh West, Lead Cloud Engineer, Bose</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>A household name in high-quality audio equipment, <a href="https://www.bose.com/en_us/index.html">Bose</a> has offered connected products for more than five years, and as that demand grew, the infrastructure had to change to support it. </h2>
"We needed to provide a mechanism for developers to rapidly prototype and deploy services all the way to production pretty fast,” says Lead Cloud Engineer Josh West. "There were a lot of cloud capabilities we wanted to provide to support our audio equipment and experiences.”<br><br>
In 2016, the company decided to start building an IoT platform from scratch. The primary goal: "To be one to two steps ahead of the different product groups so that we are never scrambling to catch up with their scale,” says Cloud Architecture Manager Dylan OMahony. "If they release a new connected product, we want to be already well ahead of being able to handle whatever scale that theyre going to throw at us.”<br><br>
From the beginning, the team knew it wanted a microservices architecture and platform as a service. After evaluating and prototyping orchestration solutions, including Mesos and Docker Swarm, the team decided to adopt <a href="https://kubernetes.io/">Kubernetes</a> for its platform running on AWS. Kubernetes was still in 1.5, but already the technology could do much of what the team wanted and needed for the present and the future. For West, that meant having storage and network handled. OMahony points to Kubernetes portability in case Bose decides to go multi-cloud.<br><br>
"Bose is a company that looks out for the long term,” says West. "Going with a quick commercial off-the-shelf solution mightve worked for that point in time, but it would not have carried us forward, which is what we needed from Kubernetes and the CNCF.”
<p>With about 100 engineers onboarded, the platform is now enabling 30,000 non-production deployments across dozens of microservices per year. In 2018, there were 1250+ production deployments. Just one production cluster holds 1,800 namespaces and 340 worker nodes. "We had a brand new service taken from concept through coding and deployment all the way to production, including hardening, security testing and so forth, in less than two and a half weeks," says O'Mahony.</p>
{{< case-studies/quote author="Josh West, Lead Cloud Engineer, Bose" >}}
"At Bose we're building an IoT platform that has enabled our physical products. If it weren't for Kubernetes and the rest of the CNCF projects being free open source software with such a strong community, we would never have achieved scale, or even gotten to launch on schedule."
{{< /case-studies/quote >}}
</div>
</section>
<div class="banner3" style="background-image: url('/images/case-studies/bose/banner3.jpg')">
<div class="banner3text">
"Everybody on the team thinks in terms of automation, leaning out the processes, getting things done as quickly as possible. When you step back and look at what it means for a 50-plus-year-old speaker company to have that sort of culture, it really is quite incredible, and I think the tools that we use and the foundation that weve built with them is a huge piece of that."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Dylan OMahony, Cloud Architecture Manager, Bose</span>
{{< case-studies/lead >}}
A household name in high-quality audio equipment, <a href="https://www.bose.com/en_us/index.html">Bose</a> has offered connected products for more than five years, and as that demand grew, the infrastructure had to change to support it.
{{< /case-studies/lead >}}
</div>
</div>
<section class="section3">
<div class="fullcol">
The team spent time working on choosing tooling to make the experience easier for developers. "Our developers interact with tools provided by our Ops team, and the Ops team run all of their tooling on top of Kubernetes,” says OMahony. "We try not to make direct Kubernetes access the only way. In fact, ideally, our developers wouldnt even need to know that theyre running on Kubernetes.”<br><br>
The platform, which also incorporated <a href="https://prometheus.io/">Prometheus</a> monitoring from the beginning, backdoored its way into production in 2017, serving over 3 million connected products from the get-go. "Even though the speakers and the products that we were designing this platform for were still quite a ways away from being launched, we did have some connected speakers on the market,” says OMahony. "We basically started to point certain features of those speakers and the apps that go with those speakers to this platform.”<br><br>
Today, just one of Boses production clusters holds 1,800 namespaces/discrete services and 340 nodes. With about 100 engineers now onboarded, the platform infrastructure is now enabling 30,000 non-production deployments across dozens of microservices per year. In 2018, there were 1250+ production deployments.. Its a staggering improvement over some of Boses previous deployment processes, which supported far fewer deployments and services.
<p>"We needed to provide a mechanism for developers to rapidly prototype and deploy services all the way to production pretty fast," says Lead Cloud Engineer Josh West. "There were a lot of cloud capabilities we wanted to provide to support our audio equipment and experiences."</p>
</div>
</section>
<div class="banner4" style="background-image: url('/images/case-studies/bose/banner4.jpg');width:100%">
<div class="banner4text">
"The CNCF Landscape quickly explains whats going on in all the different areas from storage to cloud providers to automation and so forth. This is our shopping cart to build a cloud infrastructure. We can go choose from the different aisles." <br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Josh West, Lead Cloud Engineer, Bose</span>
</div>
</div>
<p>In 2016, the company decided to start building an IoT platform from scratch. The primary goal: "To be one to two steps ahead of the different product groups so that we are never scrambling to catch up with their scale," says Cloud Architecture Manager Dylan O'Mahony. "If they release a new connected product, we want to be already well ahead of being able to handle whatever scale that they're going to throw at us."</p>
<section class="section5" style="padding:0px !important">
<div class="fullcol">
"We had a brand new service deployed from concept through coding and deployment all the way to production, including hardening, security testing and so forth, in less than two and a half weeks,” says OMahony. "Everybody thinks in terms of automation, leaning out the processes, getting things done as quickly as possible. When you step back and look at what it means for a 50-plus-year-old speaker company to have that sort of culture, it really is quite incredible, and I think the tools that we use and the foundation that weve built is a huge piece of that.”<br><br>
Many of those technologies—such as <a href="https://www.fluentd.org/">Fluentd</a>, <a href="https://coredns.io/">CoreDNS</a>, <a href="https://www.jaegertracing.io/">Jaeger</a>, and <a href="https://opentracing.io/">OpenTracing</a>—come from the <a href="https://landscape.cncf.io/">CNCF Landscape</a>, which West and OMahony have relied upon throughout Boses cloud native journey. "The CNCF Landscape quickly explains whats going on in all the different areas from storage to cloud providers to automation and so forth,” says West. "This is our shopping cart to build a cloud infrastructure. We can go choose from the different aisles.” <br><br>
And, he adds, "If it werent for Kubernetes and the rest of the CNCF projects being free open source software with such a strong community, we would never have achieved scale, or even gotten to launch on schedule.”<br><br>
Another benefit of going cloud native: "We are even attracting much more talent into Bose because were so involved with the <a href="http://careers.bose.com">CNCF Landscape</a>,” says West. (Yes, theyre hiring.) "Its just enabled so many people to do so many great things and really brought Bose into the future of cloud.”
<p>From the beginning, the team knew it wanted a microservices architecture and platform as a service. After evaluating and prototyping orchestration solutions, including Mesos and Docker Swarm, the team decided to adopt <a href="https://kubernetes.io/">Kubernetes</a> for its platform running on AWS. Kubernetes was still in 1.5, but already the technology could do much of what the team wanted and needed for the present and the future. For West, that meant having storage and network handled. O'Mahony points to Kubernetes' portability in case Bose decides to go multi-cloud.</p>
<p>"Bose is a company that looks out for the long term," says West. "Going with a quick commercial off-the-shelf solution might've worked for that point in time, but it would not have carried us forward, which is what we needed from Kubernetes and the CNCF."</p>
</div>
{{< case-studies/quote
image="/images/case-studies/bose/banner3.jpg"
author="Dylan O'Mahony, Cloud Architecture Manager, Bose"
>}}
"Everybody on the team thinks in terms of automation, leaning out the processes, getting things done as quickly as possible. When you step back and look at what it means for a 50-plus-year-old speaker company to have that sort of culture, it really is quite incredible, and I think the tools that we use and the foundation that we've built with them is a huge piece of that."
{{< /case-studies/quote >}}
<div class="banner5" >
<div class="banner5text">
"We have a lot going on to support many more of our business units at Bose in addition to the consumer electronics division, which we currently do. Its only because of the cloud native landscape and the tools and the features that are available that we can provide such a fantastic cloud platform for all the developers and divisions that are trying to enable some pretty amazing experiences."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Dylan OMahony, Cloud Architecture Manager, Bose</span></div>
</div>
<p>The team spent time working on choosing tooling to make the experience easier for developers. "Our developers interact with tools provided by our Ops team, and the Ops team run all of their tooling on top of Kubernetes," says O'Mahony. "We try not to make direct Kubernetes access the only way. In fact, ideally, our developers wouldn't even need to know that they're running on Kubernetes."</p>
<div class="fullcol">
In the coming year, the team wants to work on service mesh and serverless, as well as expansion around the world. "Getting our latency down by going multi-region is going to be a big focus for us,” says OMahony. "In order to make sure that our customers in Japan, Australia, and everywhere else are having a good experience, we want to have points of presence closer to them. Its never been done at Bose before.”<br><br>
That wont stop them, because the team is all about lofty goals. "We want to get to billions of connected products!” says West. "We have a lot going on to support many more of our business units at Bose in addition to the consumer electronics division, which we currently do. Its only because of the cloud native landscape and the tools and the features that are available that we can provide such a fantastic cloud platform for all the developers and divisions that are trying to enable some pretty amazing experiences.”<br><br>
In fact, given the scale the platform is already supporting, says OMahony, "doing anything other than Kubernetes, I think, would be folly at this point.”
<p>The platform, which also incorporated <a href="https://prometheus.io/">Prometheus</a> monitoring from the beginning, backdoored its way into production in 2017, serving over 3 million connected products from the get-go. "Even though the speakers and the products that we were designing this platform for were still quite a ways away from being launched, we did have some connected speakers on the market," says O'Mahony. "We basically started to point certain features of those speakers and the apps that go with those speakers to this platform."</p>
<p>Today, just one of Bose's production clusters holds 1,800 namespaces/discrete services and 340 nodes. With about 100 engineers now onboarded, the platform infrastructure is now enabling 30,000 non-production deployments across dozens of microservices per year. In 2018, there were 1250+ production deployments.. It's a staggering improvement over some of Bose's previous deployment processes, which supported far fewer deployments and services.</p>
</div>
</section>
</body>
</html>
{{< case-studies/quote
image="/images/case-studies/bose/banner4.jpg"
author="Josh West, Lead Cloud Engineer, Bose"
>}}
"The CNCF Landscape quickly explains what's going on in all the different areas from storage to cloud providers to automation and so forth. This is our shopping cart to build a cloud infrastructure. We can go choose from the different aisles."
{{< /case-studies/quote >}}
<p>"We had a brand new service deployed from concept through coding and deployment all the way to production, including hardening, security testing and so forth, in less than two and a half weeks," says O'Mahony. "Everybody thinks in terms of automation, leaning out the processes, getting things done as quickly as possible. When you step back and look at what it means for a 50-plus-year-old speaker company to have that sort of culture, it really is quite incredible, and I think the tools that we use and the foundation that we've built is a huge piece of that."</p>
<p>Many of those technologies—such as <a href="https://www.fluentd.org/">Fluentd</a>, <a href="https://coredns.io/">CoreDNS</a>, <a href="https://www.jaegertracing.io/">Jaeger</a>, and <a href="https://opentracing.io/">OpenTracing</a>—come from the <a href="https://landscape.cncf.io/">CNCF Landscape</a>, which West and O'Mahony have relied upon throughout Bose's cloud native journey. "The CNCF Landscape quickly explains what's going on in all the different areas from storage to cloud providers to automation and so forth," says West. "This is our shopping cart to build a cloud infrastructure. We can go choose from the different aisles."</p>
<p>And, he adds, "If it weren't for Kubernetes and the rest of the CNCF projects being free open source software with such a strong community, we would never have achieved scale, or even gotten to launch on schedule."</p>
<p>Another benefit of going cloud native: "We are even attracting much more talent into Bose because we're so involved with the <a href="http://careers.bose.com">CNCF Landscape</a>," says West. (Yes, they're hiring.) "It's just enabled so many people to do so many great things and really brought Bose into the future of cloud."</p>
{{< case-studies/quote author="Dylan O'Mahony, Cloud Architecture Manager, Bose" >}}
"We have a lot going on to support many more of our business units at Bose in addition to the consumer electronics division, which we currently do. It's only because of the cloud native landscape and the tools and the features that are available that we can provide such a fantastic cloud platform for all the developers and divisions that are trying to enable some pretty amazing experiences."
{{< /case-studies/quote >}}
<p>In the coming year, the team wants to work on service mesh and serverless, as well as expansion around the world. "Getting our latency down by going multi-region is going to be a big focus for us," says O'Mahony. "In order to make sure that our customers in Japan, Australia, and everywhere else are having a good experience, we want to have points of presence closer to them. It's never been done at Bose before."</p>
<p>That won't stop them, because the team is all about lofty goals. "We want to get to billions of connected products!" says West. "We have a lot going on to support many more of our business units at Bose in addition to the consumer electronics division, which we currently do. It's only because of the cloud native landscape and the tools and the features that are available that we can provide such a fantastic cloud platform for all the developers and divisions that are trying to enable some pretty amazing experiences."</p>
<p>In fact, given the scale the platform is already supporting, says O'Mahony, "doing anything other than Kubernetes, I think, would be folly at this point."</p>
+70 -84
View File
@@ -2,113 +2,99 @@
title: Box Case Study
case_study_styles: true
cid: caseStudies
css: /css/style_box.css
video: https://www.youtube.com/embed/of45hYbkIZs?autoplay=1
quote: >
Kubernetes has the opportunity to be the new cloud platform. The amount of innovation that's going to come from being able to standardize on Kubernetes as a platform is incredibly exciting - more exciting than anything I've seen in the last 10 years of working on the cloud.
new_case_study_styles: true
heading_background: /images/case-studies/box/banner1.jpg
heading_title_logo: /images/box_logo.png
subheading: >
An Early Adopter Envisions a New Cloud Platform
case_study_details:
- Company: Box
- Location: Redwood City, California
- Industry: Technology
---
<div class="banner1">
<h1>CASE STUDY: <img src="/images/box_logo.png" width="10%" style="margin-bottom:-6px"><br>
<div class="subhead">An Early Adopter Envisions
a New Cloud Platform</div>
</h1>
</div>
<h2>Challenge</h2>
<p>Founded in 2005, the enterprise content management company allows its more than 50 million users to manage content in the cloud. <a href="https://www.box.com/home">Box</a> was built primarily with bare metal inside the company's own data centers, with a monolithic PHP code base. As the company was expanding globally, it needed to focus on "how we run our workload across many different cloud infrastructures from bare metal to public cloud," says Sam Ghods, Cofounder and Services Architect of Box. "It's been a huge challenge because of different clouds, especially bare metal, have very different interfaces."</p>
<div class="details">
Company &nbsp;<b>Box</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Redwood City, California</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Technology</b>
</div>
<h2>Solution</h2>
<hr>
<p>Over the past couple of years, Box has been decomposing its infrastructure into microservices, and became an early adopter of, as well as contributor to, <a href="http://kubernetes.io/">Kubernetes</a> container orchestration. Kubernetes, Ghods says, has allowed Box's developers to "target a universal set of concepts that are portable across all clouds."</p>
<section class="section1">
<h2>Impact</h2>
<div class="cols">
<div class="col1">
<p>"Before Kubernetes," Ghods says, "our infrastructure was so antiquated it was taking us more than six months to deploy a new microservice. Today, a new microservice takes less than five days to deploy. And we're working on getting it to an hour."</p>
<h2>Challenge</h2>
Founded in 2005, the enterprise content management company allows its more than 50 million users to manage content in the cloud. <a href="https://www.box.com/home">Box</a> was built primarily with bare metal inside the companys own data centers, with a monolithic PHP code base. As the company was expanding globally, it needed to focus on "how we run our workload across many different cloud infrastructures from bare metal to public cloud," says Sam Ghods, Cofounder and Services Architect of Box. "Its been a huge challenge because of different clouds, especially bare metal, have very different interfaces."
<br>
</div>
{{< case-studies/quote author="SAM GHOUDS, CO-FOUNDER AND SERVICES ARCHITECT OF BOX" >}}
"We looked at a lot of different options, but Kubernetes really stood out....the fact that on day one it was designed to run on bare metal just as well as Google Cloud meant that we could actually migrate to it inside of our data centers, and then use those same tools and concepts to run across public cloud providers as&nbsp;well."
{{< /case-studies/quote >}}
<div class="col2">
<h2>Solution</h2>
Over the past couple of years, Box has been decomposing its infrastructure into microservices, and became an early adopter of, as well as contributor to, <a href="http://kubernetes.io/">Kubernetes</a> container orchestration. Kubernetes, Ghods says, has allowed Boxs developers to "target a universal set of concepts that are portable across all clouds."<br><br>
{{< case-studies/lead >}}
In the summer of 2014, Box was feeling the pain of a decade's worth of hardware and software infrastructure that wasn't keeping up with the company's needs.
{{< /case-studies/lead >}}
<h2>Impact</h2>
"Before Kubernetes," Ghods says, "our infrastructure was so antiquated it was taking us more than six months to deploy a new microservice. Today, a new microservice takes less than five days to deploy. And were working on getting it to an hour."
</div>
</div>
<p>A platform that allows its more than 50 million users (including governments and big businesses like <a href="https://www.ge.com/">General Electric</a>) to manage and share content in the cloud, Box was originally a <a href="http://php.net/">PHP</a> monolith of millions of lines of code built exclusively with bare metal inside of its own data centers. It had already begun to slowly chip away at the monolith, decomposing it into microservices. And "as we've been expanding into regions around the globe, and as the public cloud wars have been heating up, we've been focusing a lot more on figuring out how we run our workload across many different environments and many different cloud infrastructure providers," says Box Cofounder and Services Architect Sam Ghods. "It's been a huge challenge thus far because of all these different providers, especially bare metal, have very different interfaces and ways in which you work with them."</p>
</section>
<p>Box's cloud native journey accelerated that June, when Ghods attended <a href="https://www.docker.com/events/dockercon">DockerCon</a>. The company had come to the realization that it could no longer run its applications only off bare metal, and was researching containerizing with Docker, virtualizing with OpenStack, and supporting public cloud.</p>
<div class="banner2">
<div class="banner2text">
"We looked at a lot of different options, but Kubernetes really stood out....the fact that on day one it was designed to run on bare metal just as well as Google Cloud meant that we could actually migrate to it inside of our data centers, and then use those same tools and concepts to run across public cloud providers as&nbsp;well."<br><br><span style="font-size:15px;letter-spacing:0.08em">- SAM GHOUDS, CO-FOUNDER AND SERVICES ARCHITECT OF BOX</span>
</div>
</div>
<p>At that conference, Google announced the release of its Kubernetes container management system, and Ghods was won over. "We looked at a lot of different options, but Kubernetes really stood out, especially because of the incredibly strong team of <a href="https://research.google.com/pubs/pub43438.html">Borg</a> veterans and the vision of having a completely infrastructure-agnostic way of being able to run cloud software," he says, referencing Google's internal container orchestrator Borg. "The fact that on day one it was designed to run on bare metal just as well as <a href="https://cloud.google.com/">Google Cloud</a> meant that we could actually migrate to it inside of our data centers, and then use those same tools and concepts to run across public cloud providers as well."</p>
<section class="section2">
<p>Another plus: Ghods liked that <a href="https://kubernetes.io/">Kubernetes</a> has a universal set of API objects like pod, service, replica set and deployment object, which created a consistent surface to build tooling against. "Even PaaS layers like <a href="https://www.openshift.com/">OpenShift</a> or <a href="http://deis.io/">Deis</a> that build on top of Kubernetes still treat those objects as first-class principles," he says. "We were excited about having these abstractions shared across the entire ecosystem, which would result in a lot more momentum than we saw in other potential solutions."</p>
<div class="fullcol">
<h2>In the summer of 2014, Box was feeling the pain of a decades worth of hardware and software infrastructure that wasnt keeping up with the companys needs.</h2>
<p>Box deployed Kubernetes in a cluster in a production data center just six months later. Kubernetes was then still pre-beta, on version 0.11. They started small: The very first thing Ghods's team ran on Kubernetes was a Box API checker that confirms Box is up. "That was just to write and deploy some software to get the whole pipeline functioning," he says. Next came some daemons that process jobs, which was "nice and safe because if they experienced any interruptions, we wouldn't fail synchronous incoming requests from customers."</p>
A platform that allows its more than 50 million users (including governments and big businesses like <a href="https://www.ge.com/">General Electric</a>) to manage and share content in the cloud, Box was originally a <a href="http://php.net/">PHP</a> monolith of millions of lines of code built exclusively with bare metal inside of its own data centers. It had already begun to slowly chip away at the monolith, decomposing it into microservices. And "as weve been expanding into regions around the globe, and as the public cloud wars have been heating up, weve been focusing a lot more on figuring out how we run our workload across many different environments and many different cloud infrastructure providers," says Box Cofounder and Services Architect Sam Ghods. "Its been a huge challenge thus far because of all these different providers, especially bare metal, have very different interfaces and ways in which you work with them."<br><br>
Boxs cloud native journey accelerated that June, when Ghods attended <a href="https://www.docker.com/events/dockercon">DockerCon</a>. The company had come to the realization that it could no longer run its applications only off bare metal, and was researching containerizing with Docker, virtualizing with OpenStack, and supporting public cloud.<br><br>
At that conference, Google announced the release of its Kubernetes container management system, and Ghods was won over. "We looked at a lot of different options, but Kubernetes really stood out, especially because of the incredibly strong team of <a href="https://research.google.com/pubs/pub43438.html">Borg</a> veterans and the vision of having a completely infrastructure-agnostic way of being able to run cloud software," he says, referencing Googles internal container orchestrator Borg. "The fact that on day one it was designed to run on bare metal just as well as <a href="https://cloud.google.com/">Google Cloud</a> meant that we could actually migrate to it inside of our data centers, and then use those same tools and concepts to run across public cloud providers as well."<br><br>
Another plus: Ghods liked that <a href="https://kubernetes.io/">Kubernetes</a> has a universal set of API objects like pod, service, replica set and deployment object, which created a consistent surface to build tooling against. "Even PaaS layers like <a href="https://www.openshift.com/">OpenShift</a> or <a href="http://deis.io/">Deis</a> that build on top of Kubernetes still treat those objects as first-class principles," he says. "We were excited about having these abstractions shared across the entire ecosystem, which would result in a lot more momentum than we saw in other potential solutions."<br><br>
Box deployed Kubernetes in a cluster in a production data center just six months later. Kubernetes was then still pre-beta, on version 0.11. They started small: The very first thing Ghodss team ran on Kubernetes was a Box API checker that confirms Box is up. "That was just to write and deploy some software to get the whole pipeline functioning," he says. Next came some daemons that process jobs, which was "nice and safe because if they experienced any interruptions, we wouldnt fail synchronous incoming requests from customers."
{{< case-studies/quote image="/images/case-studies/box/banner3.jpg">}}
"As we've been expanding into regions around the globe, and as the public cloud wars have been heating up, we've been focusing a lot more on figuring out how we [can have Kubernetes help] run our workload across many different environments and many different cloud infrastructure providers."
{{< /case-studies/quote >}}
</div>
</section>
<p>The first live service, which the team could route to and ask for information, was launched a few months later. At that point, Ghods says, "We were comfortable with the stability of the Kubernetes cluster. We started to port some services over, then we would increase the cluster size and port a few more, and that's ended up to about 100 servers in each data center that are dedicated purely to Kubernetes. And that's going to be expanding a lot over the next 12 months, probably too many hundreds if not thousands."</p>
<div class="banner3">
<div class="banner3text">
"As weve been expanding into regions around the globe, and as the public cloud wars have been heating up, weve been focusing a lot more on figuring out how we [can have Kubernetes help] run our workload across many different environments and many different cloud infrastructure providers."
</div>
</div>
<p>While observing teams who began to use Kubernetes for their microservices, "we immediately saw an uptick in the number of microservices being released," Ghods&nbsp;notes. "There was clearly a pent-up demand for a better way of building software through microservices, and the increase in agility helped our developers be more productive and make better architectural choices."</p>
<section class="section3">
<div class="fullcol">
The first live service, which the team could route to and ask for information, was launched a few months later. At that point, Ghods says, "We were comfortable with the stability of the Kubernetes cluster. We started to port some services over, then we would increase the cluster size and port a few more, and thats ended up to about 100 servers in each data center that are dedicated purely to Kubernetes. And thats going to be expanding a lot over the next 12 months, probably too many hundreds if not thousands."<br><br>
While observing teams who began to use Kubernetes for their microservices, "we immediately saw an uptick in the number of microservices being released," Ghods&nbsp;notes. "There was clearly a pent-up demand for a better way of building software through microservices, and the increase in agility helped our developers be more productive and make better architectural choices."
<br><br><div class="quote">"There was clearly a pent-up demand for a better way of building software through microservices, and the increase in agility helped our developers be more productive and make better architectural choices."</div><br>
Ghods reflects that as early adopters, Box had a different journey from what companies experience now. "We were definitely lock step with waiting for certain things to stabilize or features to get released," he says. "In the early days we were doing a lot of contributions [to components such as kubectl apply] and waiting for Kubernetes to release each of them, and then wed upgrade, contribute more, and go back and forth several times. The entire project took about 18 months from our first real deployment on Kubernetes to having general availability. If we did that exact same thing today, it would probably be no more than six."<br><br>
In any case, Box didnt have to make too many modifications to Kubernetes for it to work for the company. "The vast majority of the work our team has done to implement Kubernetes at Box has been making it work inside of our existing (and often legacy) infrastructure," says Ghods, "such as upgrading our base operating system from RHEL6 to RHEL7 or integrating it into <a href="https://www.nagios.org/">Nagios</a>, our monitoring infrastructure. But overall Kubernetes has been remarkably flexible with fitting into many of our constraints, and weve been running it very successfully on our bare metal infrastructure."<br><br>
Perhaps the bigger challenge for Box was a cultural one. "Kubernetes, and cloud native in general, represents a pretty big paradigm shift, and its not very incremental," Ghods says. "Were essentially making this pitch that Kubernetes is going to solve everything because it does things the right way and everything is just suddenly better. But its important to keep in mind that its not nearly as proven as many other solutions out there. You cant say how long this or that company took to do it because there just arent that many yet. Our team had to really fight for resources because our project was a bit of a moonshot."
</div>
</section>
{{< case-studies/lead >}}
"There was clearly a pent-up demand for a better way of building software through microservices, and the increase in agility helped our developers be more productive and make better architectural choices."
{{< /case-studies/lead >}}
<div class="banner4">
<div class="banner4text">
"The vast majority of the work our team has done to implement Kubernetes at Box has been making it work inside of our existing [and often legacy] infrastructure....overall Kubernetes has been remarkably flexible with fitting into many of our constraints, and weve been running it very successfully on our bare metal infrastructure."
</div>
</div>
<p>Ghods reflects that as early adopters, Box had a different journey from what companies experience now. "We were definitely lock step with waiting for certain things to stabilize or features to get released," he says. "In the early days we were doing a lot of contributions [to components such as kubectl apply] and waiting for Kubernetes to release each of them, and then we'd upgrade, contribute more, and go back and forth several times. The entire project took about 18 months from our first real deployment on Kubernetes to having general availability. If we did that exact same thing today, it would probably be no more than six."</p>
<section class="section4">
<div class="fullcol">
Having learned from experience, Ghods offers these two pieces of advice for companies going through similar challenges:
<h2>1. Deliver early and often.</h2> Service discovery was a huge problem for Box, and the team had to decide whether to build an interim solution or wait for Kubernetes to natively satisfy Boxs unique requirements. After much debate, "we just started focusing on delivering something that works, and then dealing with potentially migrating to a more native solution later," Ghods says. "The above-all-else target for the team should always be to serve real production use cases on the infrastructure, no matter how trivial. This helps keep the momentum going both for the team itself and for the organizational perception of the project." </br></br>
<h2>2. Keep an open mind about what your company has to abstract away from developers and what it&nbsp;doesnt.</h2> Early on, the team built an abstraction on top of Docker files to help ensure that images had the right security updates.
This turned out to be superfluous work, since container images are considered immutable and you can easily scan them post-build to ensure they do not contain vulnerabilities. Because managing infrastructure through containerization is such a discontinuous leap, its better to start by interacting directly with the native tools and learning their unique advantages and caveats. An abstraction should be built only after a practical need for it arises.</br></br>
In the end, the impact has been powerful. "Before Kubernetes," Ghods says, "our infrastructure was so antiquated it was taking us more than six months to deploy a new microservice. Now a new microservice takes less than five days to deploy. And were working on getting it to an hour. Granted, much of that six months was due to how broken our systems were, but bare metal is intrinsically a difficult platform to support unless you have a system like Kubernetes to help manage&nbsp;it."</br></br>
By Ghodss estimate, Box is still several years away from his goal of being a 90-plus percent Kubernetes shop. "Were very far along on having a mission-critical, stable Kubernetes deployment that provides a lot of value," he says. "Right now about five percent of all of our compute runs on Kubernetes, and I think in the next six months well likely be between 20 to 50 percent. Were working hard on enabling all stateless service use cases, and shift our focus to stateful services after&nbsp;that."
</div>
</section>
<p>In any case, Box didn't have to make too many modifications to Kubernetes for it to work for the company. "The vast majority of the work our team has done to implement Kubernetes at Box has been making it work inside of our existing (and often legacy) infrastructure," says Ghods, "such as upgrading our base operating system from RHEL6 to RHEL7 or integrating it into <a href="https://www.nagios.org/">Nagios</a>, our monitoring infrastructure. But overall Kubernetes has been remarkably flexible with fitting into many of our constraints, and we've been running it very successfully on our bare metal infrastructure."</p>
<div class="banner5">
<div class="banner5text">
"Ghods predicts that Kubernetes has the opportunity to be the new cloud platform. '...because its a never-before-seen level of automation and intelligence surrounding infrastructure that is portable and agnostic to every way you can run your infrastructure.'"
</div>
</div>
<p>Perhaps the bigger challenge for Box was a cultural one. "Kubernetes, and cloud native in general, represents a pretty big paradigm shift, and it's not very incremental," Ghods says. "We're essentially making this pitch that Kubernetes is going to solve everything because it does things the right way and everything is just suddenly better. But it's important to keep in mind that it's not nearly as proven as many other solutions out there. You can't say how long this or that company took to do it because there just aren't that many yet. Our team had to really fight for resources because our project was a bit of a moonshot."</p>
<section class="section5">
<div class="fullcol">
In fact, thats what he envisions across the industry: Ghods predicts that Kubernetes has the opportunity to be the new cloud platform. Kubernetes provides an API consistent across different cloud platforms including bare metal, and "I dont think people have seen the full potential of whats possible when you can program against one single interface," he says. "The same way <a href="https://aws.amazon.com/">AWS</a> changed infrastructure so that you dont have to think about servers or cabinets or networking equipment anymore, Kubernetes enables you to focus exclusively on the containers that youre running, which is pretty exciting. Thats the vision."</br></br>
Ghods points to projects that are already in development or recently released for Kubernetes as a cloud platform: cluster federation, the Dashboard UI, and <a href="https://coreos.com/">CoreOS</a>s etcd operator. "I honestly believe its the most exciting thing Ive seen in cloud infrastructure," he says, "because its a never-before-seen level of automation and intelligence surrounding infrastructure that is portable and agnostic to every way you can run your infrastructure."</br></br>
Box, with its early decision to use bare metal, embarked on its Kubernetes journey out of necessity. But Ghods says that even if companies dont have to be agnostic about cloud providers today, Kubernetes may soon become the industry standard, as more and more tooling and extensions are built around the API.</br></br>
"The same way it doesnt make sense to deviate from Linux because its such a standard," Ghods says, "I think Kubernetes is going down the same path. It is still early days—the documentation still needs work and the user experience for writing and publishing specs to the Kubernetes clusters is still rough. When youre on the cutting edge you can expect to bleed a little. But the bottom line is, this is where the industry is going. Three to five years from now its really going to be shocking if you run your infrastructure any other way."
</div>
</section>
{{< case-studies/quote image="/images/case-studies/box/banner4.jpg">}}
"The vast majority of the work our team has done to implement Kubernetes at Box has been making it work inside of our existing [and often legacy] infrastructure....overall Kubernetes has been remarkably flexible with fitting into many of our constraints, and we've been running it very successfully on our bare metal infrastructure."
{{< /case-studies/quote >}}
<p>Having learned from experience, Ghods offers these two pieces of advice for companies going through similar challenges:</p>
{{< case-studies/lead >}}
1. Deliver early and often.
{{< /case-studies/lead >}}
<p>Service discovery was a huge problem for Box, and the team had to decide whether to build an interim solution or wait for Kubernetes to natively satisfy Box's unique requirements. After much debate, "we just started focusing on delivering something that works, and then dealing with potentially migrating to a more native solution later," Ghods says. "The above-all-else target for the team should always be to serve real production use cases on the infrastructure, no matter how trivial. This helps keep the momentum going both for the team itself and for the organizational perception of the project."</p>
{{< case-studies/lead >}}
2. Keep an open mind about what your company has to abstract away from developers and what it doesn't.
{{< /case-studies/lead >}}
<p>Early on, the team built an abstraction on top of Docker files to help ensure that images had the right security updates. This turned out to be superfluous work, since container images are considered immutable and you can easily scan them post-build to ensure they do not contain vulnerabilities. Because managing infrastructure through containerization is such a discontinuous leap, it's better to start by interacting directly with the native tools and learning their unique advantages and caveats. An abstraction should be built only after a practical need for it arises.</p>
<p>In the end, the impact has been powerful. "Before Kubernetes," Ghods says, "our infrastructure was so antiquated it was taking us more than six months to deploy a new microservice. Now a new microservice takes less than five days to deploy. And we're working on getting it to an hour. Granted, much of that six months was due to how broken our systems were, but bare metal is intrinsically a difficult platform to support unless you have a system like Kubernetes to help manage it."</p>
<p>By Ghods's estimate, Box is still several years away from his goal of being a 90-plus percent Kubernetes shop. "We're very far along on having a mission-critical, stable Kubernetes deployment that provides a lot of value," he says. "Right now about five percent of all of our compute runs on Kubernetes, and I think in the next six months we'll likely be between 20 to 50 percent. We're working hard on enabling all stateless service use cases, and shift our focus to stateful services after that."</p>
{{< case-studies/quote >}}
"Ghods predicts that Kubernetes has the opportunity to be the new cloud platform. '...because it's a never-before-seen level of automation and intelligence surrounding infrastructure that is portable and agnostic to every way you can run your infrastructure.'"
{{< /case-studies/quote >}}
<p>In fact, that's what he envisions across the industry: Ghods predicts that Kubernetes has the opportunity to be the new cloud platform. Kubernetes provides an API consistent across different cloud platforms including bare metal, and "I don't think people have seen the full potential of what's possible when you can program against one single interface," he says. "The same way <a href="https://aws.amazon.com/">AWS</a> changed infrastructure so that you don't have to think about servers or cabinets or networking equipment anymore, Kubernetes enables you to focus exclusively on the containers that you're running, which is pretty exciting. That's the vision."</p>
<p>Ghods points to projects that are already in development or recently released for Kubernetes as a cloud platform: cluster federation, the Dashboard UI, and <a href="https://coreos.com/">CoreOS</a>'s etcd operator. "I honestly believe it's the most exciting thing I've seen in cloud infrastructure," he says, "because it's a never-before-seen level of automation and intelligence surrounding infrastructure that is portable and agnostic to every way you can run your infrastructure."</p>
<p>Box, with its early decision to use bare metal, embarked on its Kubernetes journey out of necessity. But Ghods says that even if companies don't have to be agnostic about cloud providers today, Kubernetes may soon become the industry standard, as more and more tooling and extensions are built around the API.</p>
<p>"The same way it doesn't make sense to deviate from Linux because it's such a standard," Ghods says, "I think Kubernetes is going down the same path. It is still early days—the documentation still needs work and the user experience for writing and publishing specs to the Kubernetes clusters is still rough. When you're on the cutting edge you can expect to bleed a little. But the bottom line is, this is where the industry is going. Three to five years from now it's really going to be shocking if you run your infrastructure any other way."</p>
+62 -91
View File
@@ -1,112 +1,83 @@
---
title: Buffer Case Study
case_study_styles: true
cid: caseStudies
css: /css/style_buffer.css
new_case_study_styles: true
heading_background: /images/case-studies/buffer/banner3.jpg
heading_title_logo: /images/buffer.png
subheading: >
Making Deployments Easy for a Small, Distributed Team
case_study_details:
- Company: Buffer
- Location: Around the World
- Industry: Social Media Technology
---
<div class="banner1">
<h1>CASE STUDY: <img src="/images/buffer.png" width="18%" style="margin-bottom:-5px;margin-left:10px;"><br>
<div class="subhead">Making Deployments Easy for a Small, Distributed Team</div>
</h1>
</div>
<h2>Challenge</h2>
<div class="details">
Company&nbsp;<b>Buffer</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Around the World</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Social Media Technology</b>
</div>
<p>With a small but fully distributed team of 80 working across almost a dozen time zones, Buffer—which offers social media management to agencies and marketers—was looking to solve its "classic monolithic code base problem," says Architect Dan Farrelly. "We wanted to have the kind of liquid infrastructure where a developer could create an app and deploy it and scale it horizontally as necessary."</p>
<hr>
<h2>Solution</h2>
<section class="section1">
<div class="cols">
<div class="col1">
<p>Embracing containerization, Buffer moved its infrastructure from Amazon Web Services' Elastic Beanstalk to Docker on AWS, orchestrated with Kubernetes.</p>
<h2>Challenge</h2>
With a small but fully distributed team of 80 working across almost a dozen time zones, Buffer—which offers social media management to agencies and marketers—was looking to solve its "classic monolithic code base problem," says Architect Dan Farrelly. "We wanted to have the kind of liquid infrastructure where a developer could create an app and deploy it and scale it horizontally as&nbsp;necessary."
</div>
<div class="col2">
<h2>Solution</h2>
Embracing containerization, Buffer moved its infrastructure from Amazon Web Services Elastic Beanstalk to Docker on AWS, orchestrated with&nbsp;Kubernetes.
<br>
<br>
<h2>Impact</h2>
The new system "leveled up our ability with deployment and rolling out new changes," says Farrelly. "Building something on your computer and knowing that its going to work has shortened things up a lot. Our feedback cycles are a lot faster now&nbsp;too."
</div>
</div>
</section>
<div class="banner2">
<div class="banner2text">
"Its amazing that we can use the Kubernetes solution off the shelf with our team. And it just keeps getting better. Before we even know that we need something, its there in the next release or its coming in the next few months."<br><br><span style="font-size:16px;letter-spacing:2px;">- DAN FARRELLY, BUFFER ARCHITECT</span>
</div>
</div>
<p>The new system "leveled up our ability with deployment and rolling out new changes," says Farrelly. "Building something on your computer and knowing that it's going to work has shortened things up a lot. Our feedback cycles are a lot faster now too."</p>
<section class="section2">
<div class="fullcol">
<h2>Dan Farrelly uses a carpentry analogy to explain the problem his company, <a href="https://buffer.com">Buffer</a>, began having as its team of developers grew over the past few years.</h2>
{{< case-studies/quote author="DAN FARRELLY, BUFFER ARCHITECT" >}}
"It's amazing that we can use the Kubernetes solution off the shelf with our team. And it just keeps getting better. Before we even know that we need something, it's there in the next release or it's coming in the next few months."
{{< /case-studies/quote >}}
"If youre building a table by yourself, its fine," the companys architect says. "If you bring in a second person to work on the table, maybe that person can start sanding the legs while youre sanding the top. But when you bring a third or fourth person in, someone should probably work on a different table." Needing to work on more and more different tables led Buffer on a path toward microservices and containerization made possible by Kubernetes.<br><br>
Since around 2012, Buffer had already been using <a href="https://aws.amazon.com/elasticbeanstalk/">Elastic Beanstalk</a>, the orchestration service for deploying infrastructure offered by <a href="https://aws.amazon.com">Amazon Web Services</a>. "We were deploying a single monolithic <a href="http://php.net/manual/en/intro-whatis.php">PHP</a> application, and it was the same application across five or six environments," says Farrelly. "We were very much a product-driven company. It was all about shipping new features quickly and getting things out the door, and if something was not broken, we didnt spend too much time on it. If things were getting a little bit slow, wed maybe use a faster server or just scale up one instance, and it would be good enough. Wed move on."<br><br>
But things came to a head in 2016. With the growing number of committers on staff, Farrelly and Buffers then-CTO, Sunil Sadasivan, decided it was time to re-architect and rethink their infrastructure. "It was a classic monolithic code base problem," says Farrelly.<br><br>Some of the companys team was already successfully using <a href="https://www.docker.com">Docker</a> in their development environment, but the only application running on Docker in production was a marketing website that didnt see real user traffic. They wanted to go further with Docker, and the next step was looking at options for&nbsp;orchestration.
</div>
</section>
{{< case-studies/lead >}}
Dan Farrelly uses a carpentry analogy to explain the problem his company, <a href="https://buffer.com">Buffer</a>, began having as its team of developers grew over the past few years.
{{< /case-studies/lead >}}
<div class="banner3">
<div class="banner3text">
And all the things Kubernetes did well suited Buffers needs. "We wanted to have the kind of liquid infrastructure where a developer could create an app and deploy it and scale it horizontally as necessary," says Farrelly. "We quickly used some scripts to set up a couple of test clusters, we built some small proof-of-concept applications in containers, and we deployed things within an hour. We had very little experience in running containers in production. It was amazing how quickly we could get a handle on it&nbsp;[Kubernetes]."
</div>
</div>
<p>"If you're building a table by yourself, it's fine," the company's architect says. "If you bring in a second person to work on the table, maybe that person can start sanding the legs while you're sanding the top. But when you bring a third or fourth person in, someone should probably work on a different table." Needing to work on more and more different tables led Buffer on a path toward microservices and containerization made possible by Kubernetes.</p>
<section class="section3">
<div class="fullcol">
First they considered <a href="https://mesosphere.com">Mesosphere</a>, <a href="https://dcos.io">DC/OS</a> and <a href="https://aws.amazon.com/ecs/">Amazon Elastic Container Service</a> (which their data systems team was already using for some data pipeline jobs). While they were impressed by these offerings, they ultimately went with Kubernetes. "We run on AWS still, so spinning up, creating services and creating load balancers on demand for us without having to configure them manually was a great way for our team to get into this," says Farrelly. "We didnt need to figure out how to configure this or that, especially coming from a former Elastic Beanstalk environment that gave us an automatically-configured load balancer. I really liked Kubernetes controls of the command line. It just took care of ports. It was a lot more flexible. Kubernetes was designed for doing what it does, so it does it very well."<br><br>
And all the things Kubernetes did well suited Buffers needs. "We wanted to have the kind of liquid infrastructure where a developer could create an app and deploy it and scale it horizontally as necessary," says Farrelly. "We quickly used some scripts to set up a couple of test clusters, we built some small proof-of-concept applications in containers, and we deployed things within an hour. We had very little experience in running containers in production. It was amazing how quickly we could get a handle on it [Kubernetes]."<br><br>
Above all, it provided a powerful solution for one of the companys most distinguishing characteristics: their remote team thats spread across a dozen different time zones. "The people with deep knowledge of our infrastructure live in time zones different from our peak traffic time zones, and most of our product engineers live in other places," says Farrelly. "So we really wanted something where anybody could get a grasp of the system early on and utilize it, and not have to worry that the deploy engineer is asleep. Otherwise people would sit around for 12 to 24 hours for something. Its been really cool to see people moving much faster."
<br><br>
With a relatively small engineering team—just 25 people, and only a handful working on infrastructure, with the majority front-end developers—Buffer needed "something robust for them to deploy whatever they wanted," says Farrelly. Before, "it was only a couple of people who knew how to set up everything in the old way. With this system, it was easy to review documentation and get something out extremely quickly. It lowers the bar for us to get everything in production. We don't have the big team to build all these tools or manage the infrastructure like other larger companies&nbsp;might."
</div>
</section>
<p>Since around 2012, Buffer had already been using <a href="https://aws.amazon.com/elasticbeanstalk/">Elastic Beanstalk</a>, the orchestration service for deploying infrastructure offered by <a href="https://aws.amazon.com">Amazon Web Services</a>. "We were deploying a single monolithic <a href="http://php.net/manual/en/intro-whatis.php">PHP</a> application, and it was the same application across five or six environments," says Farrelly. "We were very much a product-driven company. It was all about shipping new features quickly and getting things out the door, and if something was not broken, we didn't spend too much time on it. If things were getting a little bit slow, we'd maybe use a faster server or just scale up one instance, and it would be good enough. We'd move on."</p>
<div class="banner4">
<div class="banner4text">
"In our old way of working, the feedback loop was a lot longer, and it was delicate because if you deployed something, the risk was high to potentially break something else," Farrelly says. "With the kind of deploys that we built around Kubernetes, we were able to detect bugs and fix them, and get them deployed super fast. The second someone is fixing [a bug], its out the&nbsp;door."
</div>
</div>
<p>But things came to a head in 2016. With the growing number of committers on staff, Farrelly and Buffer's then-CTO, Sunil Sadasivan, decided it was time to re-architect and rethink their infrastructure. "It was a classic monolithic code base problem," says Farrelly.<br><br>Some of the company's team was already successfully using <a href="https://www.docker.com">Docker</a> in their development environment, but the only application running on Docker in production was a marketing website that didn't see real user traffic. They wanted to go further with Docker, and the next step was looking at options for orchestration.</p>
<section class="section4">
<div class="fullcol">
To help with this, Buffer developers wrote a deploy bot that wraps the Kubernetes deploy process and can be used by every team. "Before, our data analysts would update, say, a <a href="https://www.python.org">Python</a> analysis script and have to wait for the lead on that team to click the button and deploy it," Farrelly explains. "Now our data analysts can make a change, enter a <a href="https://slack.com">Slack</a> command, /deploy, and it goes out instantly. They dont need to wait on these slow turnaround times. They dont even know where its running; it doesnt matter."
<br><br>
One of the first applications the team built from scratch using Kubernetes was a new image resizing service. As a social media management tool that allows marketing teams to collaborate on posts and send updates across multiple social media profiles and networks, Buffer has to be able to resize photographs as needed to meet the varying limitations of size and format posed by different social networks. "We always had these hacked together solutions," says Farrelly.
<br><br>
To create this new service, one of the senior product engineers was assigned to learn Docker and Kubernetes, then build the service, test it, deploy it and monitor it—which he was able to do relatively quickly. "In our old way of working, the feedback loop was a lot longer, and it was delicate because if you deployed something, the risk was high to potentially break something else," Farrelly says. "With the kind of deploys that we built around Kubernetes, we were able to detect bugs and fix them, and get them deployed super fast. The second someone is fixing [a bug], its out the door."
<br><br>
Plus, unlike with their old system, they could scale things horizontally with one command. "As we rolled it out," Farrelly says, "we could anticipate and just click a button. This allowed us to deal with the demand that our users were placing on the system and easily scale it to handle it."
<br><br>
Another thing they werent able to do before was a canary deploy. This new capability "made us so much more confident in deploying big changes," says Farrelly. "Before, it took a lot of testing, which is still good, but it was also a lot of fingers crossed. And this is something that gets run 800,000 times a day, the core of our business. If it doesnt work, our business doesnt work. In a Kubernetes world, I can do a canary deploy to test it for 1 percent and I can shut it down very quickly if it isnt working. This has leveled up our ability to deploy and roll out new changes quickly while reducing&nbsp;risk."
{{< case-studies/quote image="/images/case-studies/buffer/banner1.jpg" >}}
And all the things Kubernetes did well suited Buffer's needs. "We wanted to have the kind of liquid infrastructure where a developer could create an app and deploy it and scale it horizontally as necessary," says Farrelly. "We quickly used some scripts to set up a couple of test clusters, we built some small proof-of-concept applications in containers, and we deployed things within an hour. We had very little experience in running containers in production. It was amazing how quickly we could get a handle on it [Kubernetes]."
{{< /case-studies/quote >}}
</div>
</section>
<p>First they considered <a href="https://mesosphere.com">Mesosphere</a>, <a href="https://dcos.io">DC/OS</a> and <a href="https://aws.amazon.com/ecs/">Amazon Elastic Container Service</a> (which their data systems team was already using for some data pipeline jobs). While they were impressed by these offerings, they ultimately went with Kubernetes. "We run on AWS still, so spinning up, creating services and creating load balancers on demand for us without having to configure them manually was a great way for our team to get into this," says Farrelly. "We didn't need to figure out how to configure this or that, especially coming from a former Elastic Beanstalk environment that gave us an automatically-configured load balancer. I really liked Kubernetes' controls of the command line. It just took care of ports. It was a lot more flexible. Kubernetes was designed for doing what it does, so it does it very well."</p>
<div class="banner5">
<div class="banner5text">
"If you want to run containers in production, with nearly the power that Google uses internally, this [Kubernetes] is a great way to do that," Farrelly says. "Were a relatively small team thats actually running Kubernetes, and weve never run anything like it before. So its more approachable than you might think. Thats the one big thing that I tell people who are experimenting with it. Pick a couple of things, roll it out, kick the tires on this for a couple of months and see how much it can handle. You start learning a lot this&nbsp;way."
</div>
</div>
<p>And all the things Kubernetes did well suited Buffer's needs. "We wanted to have the kind of liquid infrastructure where a developer could create an app and deploy it and scale it horizontally as necessary," says Farrelly. "We quickly used some scripts to set up a couple of test clusters, we built some small proof-of-concept applications in containers, and we deployed things within an hour. We had very little experience in running containers in production. It was amazing how quickly we could get a handle on it [Kubernetes]."</p>
<section class="section5">
<div class="fullcol">
By October 2016, 54 percent of Buffers traffic was going through their Kubernetes cluster. "Theres a lot of our legacy functionality that still runs alright, and those parts might move to Kubernetes or stay in our old setup forever," says Farrelly. But the company made the commitment at that time that going forward, "all new development, all new features, will be running on Kubernetes."
<br><br>
The plan for 2017 is to move all the legacy applications to a new Kubernetes cluster, and run everything theyve pulled out of their old infrastructure, plus the new services theyre developing in Kubernetes, on another cluster. "I want to bring all the benefits that weve seen on our early services to everyone on the team," says Farrelly.
<br><br>
<h2>For Buffers engineers, its an exciting process. "Every time were deploying a new service, we need to figure out: OK, whats the architecture? How do these services communicate? Whats the best way to build this service?" Farrelly says. "And then we use the different features that Kubernetes has to glue all the pieces together. Its enabling us to experiment as were learning how to design a service-oriented architecture. Before, we just wouldnt have been able to do it. This is actually giving us a blank white board so we can do whatever we want on it."
</h2>
Part of that blank slate is the flexibility that Kubernetes offers should the time come when Buffer may want or need to change its cloud. "Its cloud agnostic so maybe one day we could switch to Google or somewhere else," Farrelly says. "Were very deep in Amazon but its nice to know we could move away if we need to."
<br><br>
At this point, the team at Buffer cant imagine running their infrastructure any other way—and theyre happy to spread the word. "If you want to run containers in production, with nearly the power that Google uses internally, this [Kubernetes] is a great way to do that," Farrelly says. "Were a relatively small team thats actually running Kubernetes, and weve never run anything like it before. So its more approachable than you might think. Thats the one big thing that I tell people who are experimenting with it. Pick a couple of things, roll it out, kick the tires on this for a couple of months and see how much it can handle. You start learning a lot this&nbsp;way."
<br><br>
</div>
</section>
<p>Above all, it provided a powerful solution for one of the company's most distinguishing characteristics: their remote team that's spread across a dozen different time zones. "The people with deep knowledge of our infrastructure live in time zones different from our peak traffic time zones, and most of our product engineers live in other places," says Farrelly. "So we really wanted something where anybody could get a grasp of the system early on and utilize it, and not have to worry that the deploy engineer is asleep. Otherwise people would sit around for 12 to 24 hours for something. It's been really cool to see people moving much faster."</p>
<p>With a relatively small engineering team—just 25 people, and only a handful working on infrastructure, with the majority front-end developers—Buffer needed "something robust for them to deploy whatever they wanted," says Farrelly. Before, "it was only a couple of people who knew how to set up everything in the old way. With this system, it was easy to review documentation and get something out extremely quickly. It lowers the bar for us to get everything in production. We don't have the big team to build all these tools or manage the infrastructure like other larger companies might."</p>
{{< case-studies/quote image="/images/case-studies/buffer/banner4.jpg" >}}
"In our old way of working, the feedback loop was a lot longer, and it was delicate because if you deployed something, the risk was high to potentially break something else," Farrelly says. "With the kind of deploys that we built around Kubernetes, we were able to detect bugs and fix them, and get them deployed super fast. The second someone is fixing [a bug], it's out the door."
{{< /case-studies/quote >}}
<p>To help with this, Buffer developers wrote a deploy bot that wraps the Kubernetes deploy process and can be used by every team. "Before, our data analysts would update, say, a <a href="https://www.python.org">Python</a> analysis script and have to wait for the lead on that team to click the button and deploy it," Farrelly explains. "Now our data analysts can make a change, enter a <a href="https://slack.com">Slack</a> command, '/deploy,' and it goes out instantly. They don't need to wait on these slow turnaround times. They don't even know where it's running; it doesn't matter."</p>
<p>One of the first applications the team built from scratch using Kubernetes was a new image resizing service. As a social media management tool that allows marketing teams to collaborate on posts and send updates across multiple social media profiles and networks, Buffer has to be able to resize photographs as needed to meet the varying limitations of size and format posed by different social networks. "We always had these hacked together solutions," says Farrelly.</p>
<p>To create this new service, one of the senior product engineers was assigned to learn Docker and Kubernetes, then build the service, test it, deploy it and monitor it—which he was able to do relatively quickly. "In our old way of working, the feedback loop was a lot longer, and it was delicate because if you deployed something, the risk was high to potentially break something else," Farrelly says. "With the kind of deploys that we built around Kubernetes, we were able to detect bugs and fix them, and get them deployed super fast. The second someone is fixing [a bug], it's out the door."</p>
<p>Plus, unlike with their old system, they could scale things horizontally with one command. "As we rolled it out," Farrelly says, "we could anticipate and just click a button. This allowed us to deal with the demand that our users were placing on the system and easily scale it to handle it."</p>
<p>Another thing they weren't able to do before was a canary deploy. This new capability "made us so much more confident in deploying big changes," says Farrelly. "Before, it took a lot of testing, which is still good, but it was also a lot of 'fingers crossed.' And this is something that gets run 800,000 times a day, the core of our business. If it doesn't work, our business doesn't work. In a Kubernetes world, I can do a canary deploy to test it for 1 percent and I can shut it down very quickly if it isn't working. This has leveled up our ability to deploy and roll out new changes quickly while reducing risk."</p>
{{< case-studies/quote >}}
"If you want to run containers in production, with nearly the power that Google uses internally, this [Kubernetes] is a great way to do that," Farrelly says. "We're a relatively small team that's actually running Kubernetes, and we've never run anything like it before. So it's more approachable than you might think. That's the one big thing that I tell people who are experimenting with it. Pick a couple of things, roll it out, kick the tires on this for a couple of months and see how much it can handle. You start learning a lot this way."
{{< /case-studies/quote >}}
<p>By October 2016, 54 percent of Buffer's traffic was going through their Kubernetes cluster. "There's a lot of our legacy functionality that still runs alright, and those parts might move to Kubernetes or stay in our old setup forever," says Farrelly. But the company made the commitment at that time that going forward, "all new development, all new features, will be running on Kubernetes."</p>
<p>The plan for 2017 is to move all the legacy applications to a new Kubernetes cluster, and run everything they've pulled out of their old infrastructure, plus the new services they're developing in Kubernetes, on another cluster. "I want to bring all the benefits that we've seen on our early services to everyone on the team," says Farrelly.</p>
{{< case-studies/lead >}}
For Buffer's engineers, it's an exciting process. "Every time we're deploying a new service, we need to figure out: OK, what's the architecture? How do these services communicate? What's the best way to build this service?" Farrelly says. "And then we use the different features that Kubernetes has to glue all the pieces together. It's enabling us to experiment as we're learning how to design a service-oriented architecture. Before, we just wouldn't have been able to do it. This is actually giving us a blank white board so we can do whatever we want on it."
{{< /case-studies/lead >}}
<p>Part of that blank slate is the flexibility that Kubernetes offers should the time come when Buffer may want or need to change its cloud. "It's cloud agnostic so maybe one day we could switch to Google or somewhere else," Farrelly says. "We're very deep in Amazon but it's nice to know we could move away if we need to."</p>
<p>At this point, the team at Buffer can't imagine running their infrastructure any other way—and they're happy to spread the word. "If you want to run containers in production, with nearly the power that Google uses internally, this [Kubernetes] is a great way to do that," Farrelly says. "We're a relatively small team that's actually running Kubernetes, and we've never run anything like it before. So it's more approachable than you might think. That's the one big thing that I tell people who are experimenting with it. Pick a couple of things, roll it out, kick the tires on this for a couple of months and see how much it can handle. You start learning a lot this way."</p>
+48 -82
View File
@@ -2,95 +2,61 @@
title: Capital One Case Study
case_study_styles: true
cid: caseStudies
css: /css/style_case_studies.css
new_case_study_styles: true
heading_background: /images/case-studies/capitalone/banner1.jpg
heading_title_logo: /images/capitalone-logo.png
subheading: >
Supporting Fast Decisioning Applications with Kubernetes
case_study_details:
- Company: Capital One
- Location: McLean, Virginia
- Industry: Retail banking
---
<div class="banner1 desktop" style="background-image: url('/images/case-studies/capitalone/banner1.jpg')">
<h1> CASE STUDY:<img src="/images/capitalone-logo.png" style="margin-bottom:-2%" class="header_logo"><br> <div class="subhead">Supporting Fast Decisioning Applications with Kubernetes
<h2>Challenge</h2>
</div></h1>
<p>The team set out to build a provisioning platform for <a href="https://www.capitalone.com/">Capital One</a> applications deployed on AWS that use streaming, big-data decisioning, and machine learning. One of these applications handles millions of transactions a day; some deal with critical functions like fraud detection and credit decisioning. The key considerations: resilience and speed—as well as full rehydration of the cluster from base AMIs.</p>
</div>
<h2>Solution</h2>
<div class="details">
Company &nbsp;<b>Capital One</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>McLean, Virginia</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Retail banking</b>
</div>
<hr>
<section class="section1">
<div class="cols">
<div class="col1">
<h2>Challenge</h2>
The team set out to build a provisioning platform for <a href="https://www.capitalone.com/">Capital One</a> applications deployed on AWS that use streaming, big-data decisioning, and machine learning. One of these applications handles millions of transactions a day; some deal with critical functions like fraud detection and credit decisioning. The key considerations: resilience and speed—as well as full rehydration of the cluster from base AMIs.
<br>
<h2>Solution</h2>
The decision to run <a href="https://kubernetes.io/">Kubernetes</a> "is very strategic for us," says John Swift, Senior Director Software Engineering. "We use Kubernetes as a substrate or an operating system, if you will. Theres a degree of affinity in our product development."
</div>
<div class="col2">
<p>The decision to run <a href="https://kubernetes.io/">Kubernetes</a> "is very strategic for us," says John Swift, Senior Director Software Engineering. "We use Kubernetes as a substrate or an operating system, if you will. There's a degree of affinity in our product development."</p>
<h2>Impact</h2>
"Kubernetes is a significant productivity multiplier," says Lead Software Engineer Keith Gasser, adding that to run the platform without Kubernetes would "easily see our costs triple, quadruple what they are now for the amount of pure AWS expense." Time to market has been improved as well: "Now, a team can come to us and we can have them up and running with a basic decisioning app in a fortnight, which before would have taken a whole quarter, if not longer." Deployments increased by several orders of magnitude. Plus, the rehydration/cluster-rebuild process, which took a significant part of a day to do manually, now takes a couple hours with Kubernetes automation and declarative configuration.
<p>"Kubernetes is a significant productivity multiplier," says Lead Software Engineer Keith Gasser, adding that to run the platform without Kubernetes would "easily see our costs triple, quadruple what they are now for the amount of pure AWS expense." Time to market has been improved as well: "Now, a team can come to us and we can have them up and running with a basic decisioning app in a fortnight, which before would have taken a whole quarter, if not longer." Deployments increased by several orders of magnitude. Plus, the rehydration/cluster-rebuild process, which took a significant part of a day to do manually, now takes a couple hours with Kubernetes automation and declarative configuration.</p>
{{< case-studies/quote author="Jamil Jadallah, Scrum Master" >}}
<iframe width="560" height="315" src="https://www.youtube.com/embed/UHVW01ksg-s" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
<br>
"With the scalability, the management, the coordination, Kubernetes really empowers us and gives us more time back than we had before."
{{< /case-studies/quote >}}
<p>As a top 10 U.S. retail bank, Capital One has applications that handle millions of transactions a day. Big-data decisioning—for fraud detection, credit approvals and beyond—is core to the business. To support the teams that build applications with those functions for the bank, the cloud team led by Senior Director Software Engineering John Swift embraced Kubernetes for its provisioning platform. "Kubernetes and its entire ecosystem are very strategic for us," says Swift. "We use Kubernetes as a substrate or an operating system, if you will. There's a degree of affinity in our product development."</p>
<p>Almost two years ago, the team embarked on this journey by first working with Docker. Then came Kubernetes. "We wanted to put streaming services into Kubernetes as one feature of the workloads for fast decisioning, and to be able to do batch alongside it," says Lead Software Engineer Keith Gasser. "Once the data is streamed and batched, there are so many tool sets in <a href="https://flink.apache.org/">Flink</a> that we use for decisioning. We want to provide the tools in the same ecosystem, in a consistent way, rather than have a large custom snowflake ecosystem where every tool needs its own custom deployment. Kubernetes gives us the ability to bring all of these together, so the richness of the open source and even the license community dealing with big data can be corralled."</p>
{{< case-studies/quote image="/images/case-studies/capitalone/banner3.jpg" >}}
"We want to provide the tools in the same ecosystem, in a consistent way, rather than have a large custom snowflake ecosystem where every tool needs its own custom deployment. Kubernetes gives us the ability to bring all of these together, so the richness of the open source and even the license community dealing with big data can be corralled."
{{< /case-studies/quote >}}
<p>In this first year, the impact has already been great. "Time to market is really huge for us," says Gasser. "Especially with fraud, you have to be very nimble in the way you respond to threats in the marketplace—being able to add and push new rules, detect new patterns of behavior, detect anomalies in account and transaction flows." With Kubernetes, "a team can come to us and we can have them up and running with a basic decisioning app in a fortnight, which before would have taken a whole quarter, if not longer. Kubernetes is a manifold productivity multiplier."</p>
<p>Teams now have the tools to be autonomous in their deployments, and as a result, deployments have increased by two orders of magnitude. "And that was with just seven dedicated resources, without needing a whole group sitting there watching everything," says Scrum Master Jamil Jadallah. "That's a huge cost savings. With the scalability, the management, the coordination, Kubernetes really empowers us and gives us more time back than we had before."</p>
{{< case-studies/quote image="/images/case-studies/capitalone/banner4.jpg" >}}
With Kubernetes, "a team can come to us and we can have them up and running with a basic decisioning app in a fortnight, which before would have taken a whole quarter, if not longer. Kubernetes is a manifold productivity multiplier."
{{< /case-studies/quote >}}
<p>Kubernetes has also been a great time-saver for Capital One's required period "rehydration" of clusters from base AMIs. To minimize the attack vulnerability profile for applications in the cloud, "Our entire clusters get rebuilt from scratch periodically, with new fresh instances and virtual server images that are patched with the latest and greatest security patches," says Gasser. This process used to take the better part of a day, and personnel, to do manually. It's now a quick Kubernetes job.</p>
<p>Savings extend to both capital and operating expenses. "It takes very little to get into Kubernetes because it's all open source," Gasser points out. "We went the DIY route for building our cluster, and we definitely like the flexibility of being able to embrace the latest from the community immediately without waiting for a downstream company to do it. There's capex related to those licenses that we don't have to pay for. Moreover, there's capex savings for us from some of the proprietary software that we get to sunset in our particular domain. So that goes onto our ledger in a positive way as well." (Some of those open source technologies include Prometheus, Fluentd, gRPC, Istio, CNI, and Envoy.)</p>
{{< case-studies/quote >}}
"If we had to do all of this without Kubernetes, on underlying cloud services, I could easily see our costs triple, quadruple what they are now for the amount of pure AWS expense. That doesn't account for personnel to deploy and maintain all the additional infrastructure."
{{< /case-studies/quote >}}
</div>
<p>And on the opex side, Gasser says, the savings are high. "We run dozens of services, we have scores of pods, many daemon sets, and since we're data-driven, we take advantage of EBS-backed volume claims for all of our stateful services. If we had to do all of this without Kubernetes, on underlying cloud services, I could easily see our costs triple, quadruple what they are now for the amount of pure AWS expense. That doesn't account for personnel to deploy and maintain all the additional infrastructure."</p>
</div>
</section>
<div class="banner2">
<div class="banner2text">
<iframe width="560" height="315" src="https://www.youtube.com/embed/UHVW01ksg-s" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe><br><br>
"With the scalability, the management, the coordination, Kubernetes really empowers us and gives us more time back than we had before." <span style="font-size:16px;text-transform:uppercase">— Jamil Jadallah, Scrum Master</span>
</div>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2></h2>
As a top 10 U.S. retail bank, Capital One has applications that handle millions of transactions a day. Big-data decisioning—for fraud detection, credit approvals and beyond—is core to the business. To support the teams that build applications with those functions for the bank, the cloud team led by Senior Director Software Engineering John Swift embraced Kubernetes for its provisioning platform. "Kubernetes and its entire ecosystem are very strategic for us," says Swift. "We use Kubernetes as a substrate or an operating system, if you will. Theres a degree of affinity in our product development."<br><br>
Almost two years ago, the team embarked on this journey by first working with Docker. Then came Kubernetes. "We wanted to put streaming services into Kubernetes as one feature of the workloads for fast decisioning, and to be able to do batch alongside it," says Lead Software Engineer Keith Gasser. "Once the data is streamed and batched, there are so many tool sets in <a href="https://flink.apache.org/">Flink</a> that we use for decisioning. We want to provide the tools in the same ecosystem, in a consistent way, rather than have a large custom snowflake ecosystem where every tool needs its own custom deployment. Kubernetes gives us the ability to bring all of these together, so the richness of the open source and even the license community dealing with big data can be corralled."
</div>
</section>
<div class="banner3" style="background-image: url('/images/case-studies/capitalone/banner3.jpg')">
<div class="banner3text">
"We want to provide the tools in the same ecosystem, in a consistent way, rather than have a large custom snowflake ecosystem where every tool needs its own custom deployment. Kubernetes gives us the ability to bring all of these together, so the richness of the open source and even the license community dealing with big data can be corralled."
</div>
</div>
<section class="section3">
<div class="fullcol">
In this first year, the impact has already been great. "Time to market is really huge for us," says Gasser. "Especially with fraud, you have to be very nimble in the way you respond to threats in the marketplace—being able to add and push new rules, detect new patterns of behavior, detect anomalies in account and transaction flows." With Kubernetes, "a team can come to us and we can have them up and running with a basic decisioning app in a fortnight, which before would have taken a whole quarter, if not longer. Kubernetes is a manifold productivity multiplier."<br><br>
Teams now have the tools to be autonomous in their deployments, and as a result, deployments have increased by two orders of magnitude. "And that was with just seven dedicated resources, without needing a whole group sitting there watching everything," says Scrum Master Jamil Jadallah. "Thats a huge cost savings. With the scalability, the management, the coordination, Kubernetes really empowers us and gives us more time back than we had before."
</div>
</section>
<div class="banner4" style="background-image: url('/images/case-studies/capitalone/banner4.jpg')">
<div class="banner4text">
With Kubernetes, "a team can come to us and we can have them up and running with a basic decisioning app in a fortnight, which before would have taken a whole quarter, if not longer. Kubernetes is a manifold productivity multiplier."
</div>
</div>
<section class="section5" style="padding:0px !important">
<div class="fullcol">
Kubernetes has also been a great time-saver for Capital Ones required period "rehydration" of clusters from base AMIs. To minimize the attack vulnerability profile for applications in the cloud, "Our entire clusters get rebuilt from scratch periodically, with new fresh instances and virtual server images that are patched with the latest and greatest security patches," says Gasser. This process used to take the better part of a day, and personnel, to do manually. Its now a quick Kubernetes job.<br><br>
Savings extend to both capital and operating expenses. "It takes very little to get into Kubernetes because its all open source," Gasser points out. "We went the DIY route for building our cluster, and we definitely like the flexibility of being able to embrace the latest from the community immediately without waiting for a downstream company to do it. Theres capex related to those licenses that we dont have to pay for. Moreover, theres capex savings for us from some of the proprietary software that we get to sunset in our particular domain. So that goes onto our ledger in a positive way as well." (Some of those open source technologies include Prometheus, Fluentd, gRPC, Istio, CNI, and Envoy.)
</div>
<div class="banner5">
<div class="banner5text">
"If we had to do all of this without Kubernetes, on underlying cloud services, I could easily see our costs triple, quadruple what they are now for the amount of pure AWS expense. That doesnt account for personnel to deploy and maintain all the additional infrastructure."
</div>
</div>
<div class="fullcol">
And on the opex side, Gasser says, the savings are high. "We run dozens of services, we have scores of pods, many daemon sets, and since were data-driven, we take advantage of EBS-backed volume claims for all of our stateful services. If we had to do all of this without Kubernetes, on underlying cloud services, I could easily see our costs triple, quadruple what they are now for the amount of pure AWS expense. That doesnt account for personnel to deploy and maintain all the additional infrastructure."<br><br>
The team is confident that the benefits will continue to multiply—without a steep learning curve for the engineers being exposed to the new technology. "As we onboard additional tenants in this ecosystem, I think the need for folks to understand Kubernetes may not necessarily go up. In fact, I think it goes down, and thats good," says Gasser. "Because that really demonstrates the scalability of the technology. You start to reap the benefits, and they can concentrate on all the features they need to build for great decisioning in the business— fraud decisions, credit decisions—and not have to worry about, Is my AWS server broken? Is my pod not running?"
</div>
</section>
<p>The team is confident that the benefits will continue to multiply—without a steep learning curve for the engineers being exposed to the new technology. "As we onboard additional tenants in this ecosystem, I think the need for folks to understand Kubernetes may not necessarily go up. In fact, I think it goes down, and that's good," says Gasser. "Because that really demonstrates the scalability of the technology. You start to reap the benefits, and they can concentrate on all the features they need to build for great decisioning in the business— fraud decisions, credit decisions—and not have to worry about, 'Is my AWS server broken? Is my pod not running?'"</p>
+58 -70
View File
@@ -3,91 +3,79 @@ title: CERN Case Study
linkTitle: cern
case_study_styles: true
cid: caseStudies
css: /css/style_case_studies.css
logo: cern_featured_logo.png
new_case_study_styles: true
heading_background: /images/case-studies/cern/banner1.jpg
heading_title_text: CERN
subheading: >
CERN: Processing Petabytes of Data More Efficiently with Kubernetes
case_study_details:
- Company: CERN
- Location: Geneva, Switzerland
- Industry: Particle physics research
---
<div class="banner1" style="background-image: url('/images/case-studies/cern/banner1.jpg')">
<h1> CASE STUDY: CERN<br> <div class="subhead" style="margin-top:1%">CERN: Processing Petabytes of Data More Efficiently with Kubernetes
<h2>Challenge</h2>
</div></h1>
<p>At CERN, the European Organization for Nuclear Research, physicists conduct experiments to learn about fundamental science. In its particle accelerators, "we accelerate protons to very high energy, close to the speed of light, and we make the two beams of protons collide," says CERN Software Engineer Ricardo Rocha. "The end result is a lot of data that we have to process." CERN currently stores 330 petabytes of data in its data centers, and an upgrade of its accelerators expected in the next few years will drive that number up by 10x. Additionally, the organization experiences extreme peaks in its workloads during periods prior to big conferences, and needs its infrastructure to scale to those peaks. "We want to have a more hybrid infrastructure, where we have our on premise infrastructure but can make use of public clouds temporarily when these peaks come up," says Rocha. "We've been looking to new technologies that can help improve our efficiency in our infrastructure so that we can dedicate more of our resources to the actual processing of the data."</p>
</div>
<h2>Solution</h2>
<div class="details">
Company &nbsp;<b>CERN</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Geneva, Switzerland
</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Particle physics research</b>
</div>
<p>CERN's technology team embraced containerization and cloud native practices, choosing Kubernetes for orchestration, Helm for deployment, Prometheus for monitoring, and CoreDNS for DNS resolution inside the clusters. Kubernetes federation has allowed the organization to run some production workloads both on premise and in public clouds.</p>
<hr>
<section class="section1">
<div class="cols">
<div class="col1" style="width:100%"">
<h2>Challenge</h2>
At CERN, the European Organization for Nuclear Research, physicists conduct experiments to learn about fundamental science. In its particle accelerators, "we accelerate protons to very high energy, close to the speed of light, and we make the two beams of protons collide," says CERN Software Engineer Ricardo Rocha. "The end result is a lot of data that we have to process." CERN currently stores 330 petabytes of data in its data centers, and an upgrade of its accelerators expected in the next few years will drive that number up by 10x. Additionally, the organization experiences extreme peaks in its workloads during periods prior to big conferences, and needs its infrastructure to scale to those peaks. "We want to have a more hybrid infrastructure, where we have our on premise infrastructure but can make use of public clouds temporarily when these peaks come up," says Rocha. "Weve been looking to new technologies that can help improve our efficiency in our infrastructure so that we can dedicate more of our resources to the actual processing of the data."
<br><br>
<h2>Solution</h2>
CERNs technology team embraced containerization and cloud native practices, choosing Kubernetes for orchestration, Helm for deployment, Prometheus for monitoring, and CoreDNS for DNS resolution inside the clusters. Kubernetes federation has allowed the organization to run some production workloads both on premise and in public clouds.
<br><br>
<h2>Impact</h2>
"Kubernetes gives us the full automation of the application," says Rocha. "It comes with built-in monitoring and logging for all the applications and the workloads that deploy in Kubernetes. This is a massive simplification of our current deployments." The time to deploy a new cluster for a complex distributed storage system has gone from more than 3 hours to less than 15 minutes. Adding new nodes to a cluster used to take more than an hour; now it takes less than 2 minutes. The time it takes to autoscale replicas for system components has decreased from more than an hour to less than 2 minutes. Initially, virtualization gave 20% overhead, but with tuning this was reduced to ~5%. Moving to Kubernetes on bare metal would get this to 0%. Not having to host virtual machines is expected to also get 10% of memory capacity back.
</div>
<p>"Kubernetes gives us the full automation of the application," says Rocha. "It comes with built-in monitoring and logging for all the applications and the workloads that deploy in Kubernetes. This is a massive simplification of our current deployments." The time to deploy a new cluster for a complex distributed storage system has gone from more than 3 hours to less than 15 minutes. Adding new nodes to a cluster used to take more than an hour; now it takes less than 2 minutes. The time it takes to autoscale replicas for system components has decreased from more than an hour to less than 2 minutes. Initially, virtualization gave 20% overhead, but with tuning this was reduced to ~5%. Moving to Kubernetes on bare metal would get this to 0%. Not having to host virtual machines is expected to also get 10% of memory capacity back.</p>
</div>
</section>
<div class="banner2">
<div class="banner2text">
"Kubernetes is something we can relate to very much because its naturally distributed. What it gives us is a uniform API across heterogeneous resources to define our workloads. This is something we struggled with a lot in the past when we want to expand our resources outside our infrastructure."
<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Ricardo Rocha, Software Engineer, CERN</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>With a mission of researching fundamental science, and a stable of extremely large machines, the European Organization for Nuclear Research (CERN) operates at what can only be described as hyperscale. </h2>
Experiments are conducted in particle accelerators, the biggest of which is 27 kilometers in circumference. "We accelerate protons to very high energy, to close to the speed of light, and we make the two beams of protons collide in well-defined places," says CERN Software Engineer Ricardo Rocha. "We build experiments around these places where we do the collisions. The end result is a lot of data that we have to process."<br><br>
And he does mean a lot: CERN currently stores and processes 330 petabytes of data—gathered from 4,300 projects and 3,300 users—using 10,000 hypervisors and 320,000 cores in its data centers. <br><br>
Over the years, the CERN technology department has built a large computing infrastructure, based on OpenStack private clouds, to help the organizations physicists analyze and treat all this data. The organization experiences extreme peaks in its workloads. "Very often, just before conferences, physicists want to do an enormous amount of extra analysis to publish their papers, and we have to scale to these peaks, which means overcommitting resources in some cases," says Rocha. "We want to have a more hybrid infrastructure, where we have our on premise infrastructure but can make use of public clouds temporarily when these peaks come up."<br><br>
Additionally, few years ago, CERN announced that it would be doing a big upgrade of its accelerators, which will mean a ten-fold increase in the amount of data that can be collected. "So weve been looking to new technologies that can help improve our efficiency in our infrastructure, so that we can dedicate more of our resources to the actual processing of the data," says Rocha.
{{< case-studies/quote author="Ricardo Rocha, Software Engineer, CERN" >}}
"Kubernetes is something we can relate to very much because it's naturally distributed. What it gives us is a uniform API across heterogeneous resources to define our workloads. This is something we struggled with a lot in the past when we want to expand our resources outside our infrastructure."
{{< /case-studies/quote >}}
</div>
</section>
<div class="banner3" style="background-image: url('/images/case-studies/cern/banner3.jpg')">
<div class="banner3text">
"Before, the tendency was always: I need this, I get a couple of developers, and I implement it. Right now its I need this, Im sure other people also need this, so Ill go and ask around. The CNCF is a good source because theres a very large catalog of applications available. Its very hard right now to justify developing a new product in-house. There is really no real reason to keep doing that. Its much easier for us to try it out, and if we see its a good solution, we try to reach out to the community and start working with that community." <br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Ricardo Rocha, Software Engineer, CERN</span>
{{< case-studies/lead >}}
With a mission of researching fundamental science, and a stable of extremely large machines, the European Organization for Nuclear Research (CERN) operates at what can only be described as hyperscale.
{{< /case-studies/lead >}}
</div>
</div>
<section class="section3">
<div class="fullcol">
Rochas team started looking at Kubernetes and containerization in the second half of 2015. "Weve been using distributed infrastructures for decades now," says Rocha. "Kubernetes is something we can relate to very much because its naturally distributed. What it gives us is a uniform API across heterogeneous resources to define our workloads. This is something we struggled with a lot in the past when we want to expand our resources outside our infrastructure."<br><br>
The team created a prototype system for users to deploy their own Kubernetes cluster in CERNs infrastructure, and spent six months validating the use cases and making sure that Kubernetes integrated with CERNs internal systems. The main use case is batch workloads, which represent more than 80% of resource usage at CERN. (One single project that does most of the physics data processing and analysis alone consumes 250,000 cores.) "This is something where the investment in simplification of the deployment, logging, and monitoring pays off very quickly," says Rocha. Other use cases include Spark-based data analysis and machine learning to improve physics analysis. "The fact that most of these technologies integrate very well with Kubernetes makes our lives easier," he adds.<br><br>
The system went into production in October 2016, also using Helm for deployment, Prometheus for monitoring, and CoreDNS for DNS resolution within the cluster. "One thing that Kubernetes gives us is the full automation of the application," says Rocha. "So it comes with built-in monitoring and logging for all the applications and the workloads that deploy in Kubernetes. This is a massive simplification of our current deployments." The time to deploy a new cluster for a complex distributed storage system has gone from more than 3 hours to less than 15 minutes.<br><br> Adding new nodes to a cluster used to take more than an hour; now it takes less than 2 minutes. The time it takes to autoscale replicas for system components has decreased from more than an hour to less than 2 minutes.
<p>Experiments are conducted in particle accelerators, the biggest of which is 27 kilometers in circumference. "We accelerate protons to very high energy, to close to the speed of light, and we make the two beams of protons collide in well-defined places," says CERN Software Engineer Ricardo Rocha. "We build experiments around these places where we do the collisions. The end result is a lot of data that we have to process."</p>
</div>
</section>
<div class="banner4" style="background-image: url('/images/case-studies/cern/banner4.jpg')">
<div class="banner4text">
"With Kubernetes, theres a well-established technology and a big community that we can contribute to. It allows us to do our physics analysis without having to focus so much on the lower level software. This is just exciting. We are looking forward to keep contributing to the community and collaborating with everyone."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Ricardo Rocha, Software Engineer, CERN</span>
</div>
</div>
<p>And he does mean a lot: CERN currently stores and processes 330 petabytes of data—gathered from 4,300 projects and 3,300 users—using 10,000 hypervisors and 320,000 cores in its data centers.</p>
<section class="section5" style="padding:0px !important">
<div class="fullcol">
Rocha points out that the metric used in the particle accelerators may be events per second, but in reality "its how fast and how much of the data we can process that actually counts." And efficiency has certainly been improved with Kubernetes. Initially, virtualization gave 20% overhead, but with tuning this was reduced to ~5%. Moving to Kubernetes on bare metal would get this to 0%. Not having to host virtual machines is expected to also get 10% of memory capacity back.<br><br>
Kubernetes federation, which CERN has been using for a portion of its production workloads since February 2018, has allowed the organization to adopt a hybrid cloud strategy. And it was remarkably simple to do. "We had a summer intern working on federation," says Rocha. "For many years, Ive been developing distributed computing software, which took like a decade and a lot of effort from a lot of people to stabilize and make sure it works. And for our intern, in a couple of days he was able to demo to me and my team that we had a cluster at CERN and a few clusters outside in public clouds that were federated together and that we could submit workloads to. This was shocking for us. It really shows the power of using this kind of well-established technologies." <br><br>
With such results, adoption of Kubernetes has made rapid gains at CERN, and the team is eager to give back to the community. "If we look back into the 90s and early 2000s, there were not a lot of companies focusing on systems that have to scale to this kind of size, storing petabytes of data, analyzing petabytes of data," says Rocha. "The fact that Kubernetes is supported by such a wide community and different backgrounds, it motivates us to contribute back."
<p>Over the years, the CERN technology department has built a large computing infrastructure, based on OpenStack private clouds, to help the organization's physicists analyze and treat all this data. The organization experiences extreme peaks in its workloads. "Very often, just before conferences, physicists want to do an enormous amount of extra analysis to publish their papers, and we have to scale to these peaks, which means overcommitting resources in some cases," says Rocha. "We want to have a more hybrid infrastructure, where we have our on premise infrastructure but can make use of public clouds temporarily when these peaks come up."</p>
</div>
<p>Additionally, few years ago, CERN announced that it would be doing a big upgrade of its accelerators, which will mean a ten-fold increase in the amount of data that can be collected. "So we've been looking to new technologies that can help improve our efficiency in our infrastructure, so that we can dedicate more of our resources to the actual processing of the data," says Rocha.</p>
<div class="banner5" >
<div class="banner5text">
This means that the physicist can build his or her analysis and publish it in a repository, share it with colleagues, and in 10 years redo the same analysis with new data. If we looked back even 10 years, this was just a dream."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Ricardo Rocha, Software Engineer, CERN</span></div>
</div>
{{< case-studies/quote
image="/images/case-studies/cern/banner3.jpg"
author="Ricardo Rocha, Software Engineer, CERN"
>}}
"Before, the tendency was always: 'I need this, I get a couple of developers, and I implement it.' Right now it's 'I need this, I'm sure other people also need this, so I'll go and ask around.' The CNCF is a good source because there's a very large catalog of applications available. It's very hard right now to justify developing a new product in-house. There is really no real reason to keep doing that. It's much easier for us to try it out, and if we see it's a good solution, we try to reach out to the community and start working with that community."
{{< /case-studies/quote >}}
<div class="fullcol">
These new technologies arent just enabling infrastructure improvements. CERN also uses the Kubernetes-based <a href="https://github.com/recast-hep">Reana/Recast</a> platform for reusable analysis, which is "the ability to define physics analysis as a set of workflows that are fully containerized in one single entry point," says Rocha. "This means that the physicist can build his or her analysis and publish it in a repository, share it with colleagues, and in 10 years redo the same analysis with new data. If we looked back even 10 years, this was just a dream."<br><br>
All of these things have changed the culture at CERN considerably. A decade ago, "The tendency was always: I need this, I get a couple of developers, and I implement it," says Rocha. "Right now its I need this, Im sure other people also need this, so Ill go and ask around. The CNCF is a good source because theres a very large catalog of applications available. Its very hard right now to justify developing a new product in-house. There is really no real reason to keep doing that. Its much easier for us to try it out, and if we see its a good solution, we try to reach out to the community and start working with that community."
<p>Rocha's team started looking at Kubernetes and containerization in the second half of 2015. "We've been using distributed infrastructures for decades now," says Rocha. "Kubernetes is something we can relate to very much because it's naturally distributed. What it gives us is a uniform API across heterogeneous resources to define our workloads. This is something we struggled with a lot in the past when we want to expand our resources outside our infrastructure."</p>
</div>
</section>
<p>The team created a prototype system for users to deploy their own Kubernetes cluster in CERN's infrastructure, and spent six months validating the use cases and making sure that Kubernetes integrated with CERN's internal systems. The main use case is batch workloads, which represent more than 80% of resource usage at CERN. (One single project that does most of the physics data processing and analysis alone consumes 250,000 cores.) "This is something where the investment in simplification of the deployment, logging, and monitoring pays off very quickly," says Rocha. Other use cases include Spark-based data analysis and machine learning to improve physics analysis. "The fact that most of these technologies integrate very well with Kubernetes makes our lives easier," he adds.</p>
<p>The system went into production in October 2016, also using Helm for deployment, Prometheus for monitoring, and CoreDNS for DNS resolution within the cluster. "One thing that Kubernetes gives us is the full automation of the application," says Rocha. "So it comes with built-in monitoring and logging for all the applications and the workloads that deploy in Kubernetes. This is a massive simplification of our current deployments." The time to deploy a new cluster for a complex distributed storage system has gone from more than 3 hours to less than 15 minutes.</p>
<p>Adding new nodes to a cluster used to take more than an hour; now it takes less than 2 minutes. The time it takes to autoscale replicas for system components has decreased from more than an hour to less than 2 minutes.</p>
{{< case-studies/quote
image="/images/case-studies/cern/banner4.jpg"
author="Ricardo Rocha, Software Engineer, CERN"
>}}
"With Kubernetes, there's a well-established technology and a big community that we can contribute to. It allows us to do our physics analysis without having to focus so much on the lower level software. This is just exciting. We are looking forward to keep contributing to the community and collaborating with everyone."
{{< /case-studies/quote >}}
<p>Rocha points out that the metric used in the particle accelerators may be events per second, but in reality "it's how fast and how much of the data we can process that actually counts." And efficiency has certainly been improved with Kubernetes. Initially, virtualization gave 20% overhead, but with tuning this was reduced to ~5%. Moving to Kubernetes on bare metal would get this to 0%. Not having to host virtual machines is expected to also get 10% of memory capacity back.</p>
<p>Kubernetes federation, which CERN has been using for a portion of its production workloads since February 2018, has allowed the organization to adopt a hybrid cloud strategy. And it was remarkably simple to do. "We had a summer intern working on federation," says Rocha. "For many years, I've been developing distributed computing software, which took like a decade and a lot of effort from a lot of people to stabilize and make sure it works. And for our intern, in a couple of days he was able to demo to me and my team that we had a cluster at CERN and a few clusters outside in public clouds that were federated together and that we could submit workloads to. This was shocking for us. It really shows the power of using this kind of well-established technologies."</p>
<p>With such results, adoption of Kubernetes has made rapid gains at CERN, and the team is eager to give back to the community. "If we look back into the '90s and early 2000s, there were not a lot of companies focusing on systems that have to scale to this kind of size, storing petabytes of data, analyzing petabytes of data," says Rocha. "The fact that Kubernetes is supported by such a wide community and different backgrounds, it motivates us to contribute back."</p>
{{< case-studies/quote author="Ricardo Rocha, Software Engineer, CERN" >}}
This means that the physicist can build his or her analysis and publish it in a repository, share it with colleagues, and in 10 years redo the same analysis with new data. If we looked back even 10 years, this was just a dream."
{{< /case-studies/quote >}}
<p>These new technologies aren't just enabling infrastructure improvements. CERN also uses the Kubernetes-based <a href="https://github.com/recast-hep">Reana/Recast</a> platform for reusable analysis, which is "the ability to define physics analysis as a set of workflows that are fully containerized in one single entry point," says Rocha. "This means that the physicist can build his or her analysis and publish it in a repository, share it with colleagues, and in 10 years redo the same analysis with new data. If we looked back even 10 years, this was just a dream."</p>
<p>All of these things have changed the culture at CERN considerably. A decade ago, "The tendency was always: 'I need this, I get a couple of developers, and I implement it,'" says Rocha. "Right now it's 'I need this, I'm sure other people also need this, so I'll go and ask around.' The CNCF is a good source because there's a very large catalog of applications available. It's very hard right now to justify developing a new product in-house. There is really no real reason to keep doing that. It's much easier for us to try it out, and if we see it's a good solution, we try to reach out to the community and start working with that community."</p>
+53 -71
View File
@@ -1,95 +1,77 @@
---
title: China Unicom Case Study
linkTitle: chinaunicom
case_study_styles: true
cid: caseStudies
css: /css/style_case_studies.css
featured: false
new_case_study_styles: true
heading_background: /images/case-studies/chinaunicom/banner1.jpg
heading_title_logo: /images/chinaunicom_logo.png
subheading: >
China Unicom: How China Unicom Leveraged Kubernetes to Boost Efficiency and Lower IT Costs
case_study_details:
- Company: China Unicom
- Location: Beijing, China
- Industry: Telecom
---
<div class="banner1" style="background-image: url('/images/case-studies/chinaunicom/banner1.jpg')">
<h1> CASE STUDY:<img src="/images/chinaunicom_logo.png" class="header_logo" style="width:25%;margin-bottom:-1%"><br> <div class="subhead" style="margin-top:1%;line-height:1.4em">China Unicom: How China Unicom Leveraged Kubernetes to Boost Efficiency<br>and Lower IT&nbsp;Costs
<h2>Challenge</h2>
</div></h1>
<p>China Unicom is one of the top three telecom operators in China, and to serve its 300 million users, the company runs several data centers with thousands of servers in each, using <a href="https://www.docker.com/">Docker</a> containerization and <a href="https://www.vmware.com/">VMWare</a> and <a href="https://www.openstack.org/">OpenStack</a> infrastructure since 2016. Unfortunately, "the resource utilization rate was relatively low," says Chengyu Zhang, Group Leader of Platform Technology R&D, "and we didn't have a cloud platform to accommodate our hundreds of applications." Formerly an entirely state-owned company, China Unicom has in recent years taken private investment from BAT (Baidu, Alibaba, Tencent) and JD.com, and is now focusing on internal development using open source technology, rather than commercial products. As such, Zhang's China Unicom Lab team began looking for open source orchestration for its cloud infrastructure.</p>
</div>
<h2>Solution</h2>
<div class="details">
Company &nbsp;<b>China Unicom</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Beijing, China</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Telecom</b>
</div>
<p>Because of its rapid growth and mature open source community, Kubernetes was a natural choice for China Unicom. The company's Kubernetes-enabled cloud platform now hosts 50 microservices and all new development going forward. "Kubernetes has improved our experience using cloud infrastructure," says Zhang. "There is currently no alternative technology that can replace it." China Unicom also uses <a href="https://istio.io/">Istio</a> for its microservice framework, <a href="https://www.envoyproxy.io/">Envoy</a>, <a href="https://coredns.io/">CoreDNS</a>, and <a href="https://www.fluentd.org/">Fluentd</a>.</p>
<hr>
<section class="section1">
<div class="cols">
<div class="col1" style="width:100%"">
<h2>Challenge</h2>
China Unicom is one of the top three telecom operators in China, and to serve its 300 million users, the company runs several data centers with thousands of servers in each, using <a href="https://www.docker.com/">Docker</a> containerization and <a href="https://www.vmware.com/">VMWare</a> and <a href="https://www.openstack.org/">OpenStack</a> infrastructure since 2016. Unfortunately, "the resource utilization rate was relatively low," says Chengyu Zhang, Group Leader of Platform Technology R&D, "and we didnt have a cloud platform to accommodate our hundreds of applications." Formerly an entirely state-owned company, China Unicom has in recent years taken private investment from BAT (Baidu, Alibaba, Tencent) and JD.com, and is now focusing on internal development using open source technology, rather than commercial products. As such, Zhangs China Unicom Lab team began looking for open source orchestration for its cloud infrastructure.
<br><br>
<h2>Solution</h2>
Because of its rapid growth and mature open source community, Kubernetes was a natural choice for China Unicom. The companys Kubernetes-enabled cloud platform now hosts 50 microservices and all new development going forward. "Kubernetes has improved our experience using cloud infrastructure," says Zhang. "There is currently no alternative technology that can replace it." China Unicom also uses <a href="https://istio.io/">Istio</a> for its microservice framework, <a href="https://www.envoyproxy.io/">Envoy</a>, <a href="https://coredns.io/">CoreDNS</a>, and <a href="https://www.fluentd.org/">Fluentd</a>.
<br><br>
<h2>Impact</h2>
At China Unicom, Kubernetes has improved both operational and development efficiency. Resource utilization has increased by 20-50%, lowering IT infrastructure costs, and deployment time has gone from a couple of hours to 5-10 minutes. "This is mainly because of the self-healing and scalability, so we can increase our efficiency in operation and maintenance," Zhang says. "For example, we currently have only five people maintaining our multiple systems. We could never imagine we can achieve this scalability in such a short time."
</div>
<p>At China Unicom, Kubernetes has improved both operational and development efficiency. Resource utilization has increased by 20-50%, lowering IT infrastructure costs, and deployment time has gone from a couple of hours to 5-10 minutes. "This is mainly because of the self-healing and scalability, so we can increase our efficiency in operation and maintenance," Zhang says. "For example, we currently have only five people maintaining our multiple systems. We could never imagine we can achieve this scalability in such a short time."</p>
</div>
</section>
<div class="banner2">
<div class="banner2text">
"Kubernetes has improved our experience using cloud infrastructure. There is currently no alternative technology that can replace it."
<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Chengyu Zhang, Group Leader of Platform Technology R&D, China Unicom</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>With more than 300 million users, China Unicom is one of the countrys top three telecom operators. </h2>
{{< case-studies/quote author="Chengyu Zhang, Group Leader of Platform Technology R&D, China Unicom" >}}
"Kubernetes has improved our experience using cloud infrastructure. There is currently no alternative technology that can replace it."
{{< /case-studies/quote >}}
Behind the scenes, the company runs multiple data centers with thousands of servers in each, using Docker containerization and VMWare and OpenStack infrastructure since 2016. Unfortunately, "the resource utilization rate was relatively low," says Chengyu Zhang, Group Leader of Platform Technology R&D, "and we didnt have a cloud platform to accommodate our hundreds of applications." <br><br>
Zhangs team, which is responsible for new technology, R&D and platforms, set out to find an IT management solution. Formerly an entirely state-owned company, China Unicom has in recent years taken private investment from BAT (Baidu, Alibaba, Tencent) and JD.com, and is now focusing on homegrown development using open source technology, rather than commercial products. For that reason, the team began looking for open source orchestration for its cloud infrastructure.
{{< case-studies/lead >}}
With more than 300 million users, China Unicom is one of the country's top three telecom operators.
{{< /case-studies/lead >}}
</div>
</section>
<div class="banner3" style="background-image: url('/images/case-studies/chinaunicom/banner3.jpg');width:100%;padding-left:0;">
<div class="banner3text">
"We could never imagine we can achieve this scalability in such a short time."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Chengyu Zhang, Group Leader of Platform Technology R&D, China Unicom</span>
<p>Behind the scenes, the company runs multiple data centers with thousands of servers in each, using Docker containerization and VMWare and OpenStack infrastructure since 2016. Unfortunately, "the resource utilization rate was relatively low," says Chengyu Zhang, Group Leader of Platform Technology R&D, "and we didn't have a cloud platform to accommodate our hundreds of applications."</p>
</div>
</div>
<section class="section3">
<div class="fullcol">
Though China Unicom was already using Mesos for a core telecom operator system, the team felt that Kubernetes was a natural choice for the new cloud platform. "The main reason was that it has a mature community," says Zhang. "It grows very rapidly, and so we can learn a lot from others best practices." China Unicom also uses Istio for its microservice framework, Envoy, CoreDNS, and Fluentd.<br><br>
The companys Kubernetes-enabled cloud platform now hosts 50 microservices and all new development going forward. China Unicom developers can easily leverage the technology through APIs, without doing the development work themselves. The cloud platform provides 20-30 services connected to the companys data center PaaS platform, as well as supports things such as big data analysis for internal users in the branch offices across the 31 provinces in China.<br><br>
"Kubernetes has improved our experience using cloud infrastructure," says Zhang. "There is currently no alternative technology that can replace it."
<p>Zhang's team, which is responsible for new technology, R&D and platforms, set out to find an IT management solution. Formerly an entirely state-owned company, China Unicom has in recent years taken private investment from BAT (Baidu, Alibaba, Tencent) and JD.com, and is now focusing on homegrown development using open source technology, rather than commercial products. For that reason, the team began looking for open source orchestration for its cloud infrastructure.</p>
</div>
</section>
<div class="banner4" style="background-image: url('/images/case-studies/chinaunicom/banner4.jpg');width:100%">
<div class="banner4text">
"This technology is relatively complicated, but as long as developers get used to it, they can enjoy all the benefits." <br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Jie Jia, Member of Platform Technology R&D, China Unicom</span>
</div>
</div>
{{< case-studies/quote
image="/images/case-studies/chinaunicom/banner3.jpg"
author="Chengyu Zhang, Group Leader of Platform Technology R&D, China Unicom"
>}}
"We could never imagine we can achieve this scalability in such a short time."
{{< /case-studies/quote >}}
<section class="section5" style="padding:0px !important">
<div class="fullcol">
In fact, Kubernetes has boosted both operational and development efficiency at China Unicom. Resource utilization has increased by 20-50%, lowering IT infrastructure costs, and deployment time has gone from a couple of hours to 5-10 minutes. "This is mainly because of the self-healing and scalability of Kubernetes, so we can increase our efficiency in operation and maintenance," Zhang says. "For example, we currently have only five people maintaining our multiple systems."<br><br>
With the wins China Unicom has experienced with Kubernetes, Zhang and his team are eager to give back to the community. That starts with participating in meetups and conferences, and offering advice to other companies that are considering a similar path. "Especially for those companies who have had traditional cloud computing system, I really recommend them to join the cloud native computing community," says Zhang.
<p>Though China Unicom was already using Mesos for a core telecom operator system, the team felt that Kubernetes was a natural choice for the new cloud platform. "The main reason was that it has a mature community," says Zhang. "It grows very rapidly, and so we can learn a lot from others' best practices." China Unicom also uses Istio for its microservice framework, Envoy, CoreDNS, and Fluentd.</p>
</div>
<p>The company's Kubernetes-enabled cloud platform now hosts 50 microservices and all new development going forward. China Unicom developers can easily leverage the technology through APIs, without doing the development work themselves. The cloud platform provides 20-30 services connected to the company's data center PaaS platform, as well as supports things such as big data analysis for internal users in the branch offices across the 31 provinces in China.</p>
<div class="banner5" >
<div class="banner5text">
"Companies can use the managed services offered by companies like Rancher, because they have already customized this technology, you can easily leverage this technology."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Jie Jia, Member of Platform Technology R&D, China Unicom</span></div>
</div>
<p>"Kubernetes has improved our experience using cloud infrastructure," says Zhang. "There is currently no alternative technology that can replace it."</p>
<div class="fullcol">
Platform Technology R&D team member Jie Jia adds that though "this technology is relatively complicated, as long as developers get used to it, they can enjoy all the benefits." And Zhang points out that in his own experience with virtual machine cloud, "Kubernetes and these cloud native technologies are relatively simpler."<br><br>
Plus, "companies can use the managed services offered by companies like <a href="https://rancher.com/">Rancher</a>, because they have already customized this technology," says Jia. "You can easily leverage this technology."<br><br>
Looking ahead, China Unicom plans to develop more applications on Kubernetes, focusing on big data and machine learning. The team is continuing to optimize the cloud platform that it built, and hopes to pass the conformance test to join CNCFs <a href="https://www.cncf.io/announcement/2017/11/13/cloud-native-computing-foundation-launches-certified-kubernetes-program-32-conformant-distributions-platforms/">Certified Kubernetes Conformance Program</a>. Theyre also hoping to someday contribute code back to the community. <br><br>
If that sounds ambitious, its because the results theyve gotten from adopting Kubernetes have been beyond even their greatest expectations. Says Zhang: "We could never imagine we can achieve this scalability in such a short time."
{{< case-studies/quote
image="/images/case-studies/chinaunicom/banner4.jpg"
author="Jie Jia, Member of Platform Technology R&D, China Unicom"
>}}
"This technology is relatively complicated, but as long as developers get used to it, they can enjoy all the benefits."
{{< /case-studies/quote >}}
</div>
</section>
</body>
</html>
<p>In fact, Kubernetes has boosted both operational and development efficiency at China Unicom. Resource utilization has increased by 20-50%, lowering IT infrastructure costs, and deployment time has gone from a couple of hours to 5-10 minutes. "This is mainly because of the self-healing and scalability of Kubernetes, so we can increase our efficiency in operation and maintenance," Zhang says. "For example, we currently have only five people maintaining our multiple systems."</p>
<p>With the wins China Unicom has experienced with Kubernetes, Zhang and his team are eager to give back to the community. That starts with participating in meetups and conferences, and offering advice to other companies that are considering a similar path. "Especially for those companies who have had traditional cloud computing system, I really recommend them to join the cloud native computing community," says Zhang.</p>
{{< case-studies/quote author="Jie Jia, Member of Platform Technology R&D, China Unicom" >}}
"Companies can use the managed services offered by companies like Rancher, because they have already customized this technology, you can easily leverage this technology."
{{< /case-studies/quote >}}
<p>Platform Technology R&D team member Jie Jia adds that though "this technology is relatively complicated, as long as developers get used to it, they can enjoy all the benefits." And Zhang points out that in his own experience with virtual machine cloud, "Kubernetes and these cloud native technologies are relatively simpler."</p>
<p>Plus, "companies can use the managed services offered by companies like <a href="https://rancher.com/">Rancher</a>, because they have already customized this technology," says Jia. "You can easily leverage this technology."</p>
<p>Looking ahead, China Unicom plans to develop more applications on Kubernetes, focusing on big data and machine learning. The team is continuing to optimize the cloud platform that it built, and hopes to pass the conformance test to join CNCF's <a href="https://www.cncf.io/announcement/2017/11/13/cloud-native-computing-foundation-launches-certified-kubernetes-program-32-conformant-distributions-platforms/">Certified Kubernetes Conformance Program</a>. They're also hoping to someday contribute code back to the community.</p>
<p>If that sounds ambitious, it's because the results they've gotten from adopting Kubernetes have been beyond even their greatest expectations. Says Zhang: "We could never imagine we can achieve this scalability in such a short time."</p>
@@ -3,97 +3,79 @@ title: City of Montreal Case Study
linkTitle: city-of-montreal
case_study_styles: true
cid: caseStudies
css: /css/style_case_studies.css
featured: false
new_case_study_styles: true
heading_background: /images/case-studies/montreal/banner1.jpg
heading_title_logo: /images/montreal_logo.png
subheading: >
City of Montréal - How the City of Montréal Is Modernizing Its 30-Year-Old, Siloed Architecture with Kubernetes
case_study_details:
- Company: City of Montréal
- Location: Montréal, Québec, Canada
- Industry: Government
---
<div class="banner1" style="background-image: url('/images/case-studies/montreal/banner1.jpg')">
<h1> CASE STUDY:<img src="/images/montreal_logo.png" class="header_logo" style="width:20%;margin-bottom:-1.2%"><br> <div class="subhead" style="margin-top:1%">City of Montréal - How the City of Montréal Is Modernizing Its 30-Year-Old, Siloed&nbsp;Architecture&nbsp;with&nbsp;Kubernetes
<h2>Challenge</h2>
</div></h1>
<p>Like many governments, Montréal has a number of legacy systems, and "we have systems that are older than some developers working here," says the city's CTO, Jean-Martin Thibault. "We have mainframes, all flavors of Windows, various flavors of Linux, old and new Oracle systems, Sun servers, all kinds of databases. Like all big corporations, some of the most important systems, like Budget and Human Resources, were developed on mainframes in-house over the past 30 years." There are over 1,000 applications in all, and most of them were running on different ecosystems. In 2015, a new management team decided to break down those silos, and invest in IT in order to move toward a more integrated governance for the city. They needed to figure out how to modernize the architecture.</p>
</div>
<h2>Solution</h2>
<div class="details">
Company &nbsp;<b>City of Montréal</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Montréal, Québec, Canada</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Government</b>
</div>
<p>The first step was containerization. The team started with a small Docker farm with four or five servers, with Rancher for providing access to the Docker containers and their logs and Jenkins to deploy. "We based our effort on the new trends; we understood the benefits of immutability and deployments without downtime and such things," says Solutions Architect Marc Khouzam. They soon realized they needed orchestration as well, and opted for Kubernetes. Says Enterprise Architect Morgan Martinet: "Kubernetes offered concepts on how you would describe an architecture for any kind of application, and based on those concepts, deploy what's required to run the infrastructure. It was becoming a de facto standard."</p>
<hr>
<section class="section1">
<div class="cols">
<div class="col1" style="width:100%"">
<h2>Challenge</h2>
Like many governments, Montréal has a number of legacy systems, and “we have systems that are older than some developers working here,” says the citys CTO, Jean-Martin Thibault. “We have mainframes, all flavors of Windows, various flavors of Linux, old and new Oracle systems, Sun servers, all kinds of databases. Like all big corporations, some of the most important systems, like Budget and Human Resources, were developed on mainframes in-house over the past 30 years.” There are over 1,000 applications in all, and most of them were running on different ecosystems. In 2015, a new management team decided to break down those silos, and invest in IT in order to move toward a more integrated governance for the city. They needed to figure out how to modernize the architecture.
<h2>Solution</h2>
The first step was containerization. The team started with a small Docker farm with four or five servers, with Rancher for providing access to the Docker containers and their logs and Jenkins to deploy. “We based our effort on the new trends; we understood the benefits of immutability and deployments without downtime and such things,” says Solutions Architect Marc Khouzam. They soon realized they needed orchestration as well, and opted for Kubernetes. Says Enterprise Architect Morgan Martinet: “Kubernetes offered concepts on how you would describe an architecture for any kind of application, and based on those concepts, deploy whats required to run the infrastructure. It was becoming a de facto standard.”
<br>
<h2>Impact</h2>
The time to market has improved drastically, from many months to a few weeks. Deployments went from months to hours. “In the past, you would have to ask for virtual machines, and that alone could take weeks, easily,” says Thibault. “Now you dont even have to ask for anything. You just create your project and it gets deployed.” Kubernetes has also improved the efficiency of how the city uses its compute resources: “Before, the 200 application components we currently run on Kubernetes would have required hundreds of virtual machines, and now, if were talking about a single environment of production, we are able to run them on 8 machines, counting the masters of Kubernetes,” says Martinet. And its all done with a small team of just 5 people operating the Kubernetes clusters.
</div>
</div>
</section>
<div class="banner2">
<div class="banner2text">
"We realized the limitations of having a non-orchestrated Docker environment. Kubernetes came to the rescue, bringing in all these features that make it a lot easier to manage and give a lot more benefits to the users."
<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- JEAN-MARTIN THIBAULT, CTO, CITY OF MONTRÉAL</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>The second biggest municipality in Canada, Montréal has a large number of legacy systems keeping the government running. And while they dont quite date back to the citys founding in 1642, “we have systems that are older than some developers working here,” jokes the citys CTO, Jean-Martin Thibault.</h2>
“We have mainframes, all flavors of Windows, various flavors of Linux, old and new Oracle systems, Sun servers, all kinds of databases. Some of the most important systems, like Budget and Human Resources, were developed on mainframes in-house over the past 30 years.”
<br><br>
In recent years, that fact became a big pain point. There are over 1,000 applications in all, running on almost as many different ecosystems. In 2015, a new city management team decided to break down those silos, and invest in IT in order to move toward a more integrated governance. “The organization was siloed, so as a result the architecture was siloed,” says Thibault. “Once we got integrated into one IT team, we decided to redo an overall enterprise architecture.”
<br><br>
The first step to modernize the architecture was containerization. “We based our effort on the new trends; we understood the benefits of immutability and deployments without downtime and such things,” says Solutions Architect Marc Khouzam. The team started with a small Docker farm with four or five servers, with Rancher for providing access to the Docker containers and their logs and Jenkins for deployment.
</div>
</section>
<div class="banner3" style="background-image: url('/images/case-studies/montreal/banner3.jpg')">
<div class="banner3text">
"Getting a project running in Kubernetes is entirely dependent on how long you need to program the actual software. Its no longer dependent on deployment. Deployment is so fast that its negligible."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- MARC KHOUZAM, SOLUTIONS ARCHITECT, CITY OF MONTRÉAL</span>
<p>The time to market has improved drastically, from many months to a few weeks. Deployments went from months to hours. "In the past, you would have to ask for virtual machines, and that alone could take weeks, easily," says Thibault. "Now you don't even have to ask for anything. You just create your project and it gets deployed." Kubernetes has also improved the efficiency of how the city uses its compute resources: "Before, the 200 application components we currently run on Kubernetes would have required hundreds of virtual machines, and now, if we're talking about a single environment of production, we are able to run them on 8 machines, counting the masters of Kubernetes," says Martinet. And it's all done with a small team of just 5 people operating the Kubernetes clusters.</p>
</div>
</div>
<section class="section3">
<div class="fullcol">
But this Docker farm setup had some limitations, including the lack of self-healing and dynamic scaling based on traffic, and the effort required to optimize server resources and scale to multiple instances of the same container. The team soon realized they needed orchestration as well. “Kubernetes came to the rescue,” says Thibault, “bringing in all these features that make it a lot easier to manage and give a lot more benefits to the users.”
<br><br>
The team had evaluated several orchestration solutions, but Kubernetes stood out because it addressed all of the pain points. (They were also inspired by Yahoo! Japans use case, which the team members felt came close to their vision.) “Kubernetes offered concepts on how you would describe an architecture for any kind of application, and based on those concepts, deploy whats required to run the infrastructure,” says Enterprise Architect Morgan Martinet. “It was becoming a de facto standard. It also promised portability across cloud providers. The choice of Kubernetes now gives us many options such as running clusters in-house or in any IaaS provider, or even using Kubernetes-as-a-service in any of the major cloud providers.”
<br><br>
Another important factor in the decision was vendor neutrality. “As a government entity, it is essential for us to be neutral in our selection of products and providers,” says Thibault. “The independence of the Cloud Native Computing Foundation from any company provides this.”
</div>
</section>
<div class="banner4" style="background-image: url('/images/case-studies/montreal/banner4.jpg')">
<div class="banner4text">
"Kubernetes has been great. Its been stable, and it provides us with elasticity, resilience, and robustness. While re-architecting for Kubernetes, we also benefited from the monitoring and logging aspects, with centralized logging, Prometheus logging, and Grafana dashboards. We have enhanced visibility of whats being deployed." <br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- MORGAN MARTINET, ENTERPRISE ARCHITECT, CITY OF MONTRÉAL</span>
</div>
</div>
{{< case-studies/quote author="JEAN-MARTIN THIBAULT, CTO, CITY OF MONTRÉAL" >}}
"We realized the limitations of having a non-orchestrated Docker environment. Kubernetes came to the rescue, bringing in all these features that make it a lot easier to manage and give a lot more benefits to the users."
{{< /case-studies/quote >}}
<section class="section5" style="padding:0px !important">
<div class="fullcol">
The Kubernetes implementation began with the deployment of a small cluster using an internal Ansible playbook, which was soon replaced by the Kismatic distribution. Given the complexity they saw in operating a Kubernetes platform, they decided to provide development groups with an automated CI/CD solution based on Helm. “An integrated CI/CD solution on Kubernetes standardized how the various development teams designed and deployed their solutions, but allowed them to remain independent,” says Khouzam.
<br><br>
During the re-architecting process, the team also added Prometheus for monitoring and alerting, Fluentd for logging, and Grafana for visualization. “We have enhanced visibility of whats being deployed,” says Martinet. Adds Khouzam: “The big benefit is we can track anything, even things that dont run inside the Kubernetes cluster. Its our way to unify our monitoring effort.”
<br><br>
All together, the cloud native solution has had a positive impact on velocity as well as administrative overhead. With standardization, code generation, automatic deployments into Kubernetes, and standardized monitoring through Prometheus, the time to market has improved drastically, from many months to a few weeks. Deployments went from months and weeks of planning down to hours. “In the past, you would have to ask for virtual machines, and that alone could take weeks to properly provision,” says Thibault. Plus, for dedicated systems, experts often had to be brought in to install them with their own recipes, which could take weeks and months.
<br><br>
Now, says Khouzam, “we can deploy pretty much any application thats been Dockerized without any help from anybody. Getting a project running in Kubernetes is entirely dependent on how long you need to program the actual software. Its no longer dependent on deployment. Deployment is so fast that its negligible.”
{{< case-studies/lead >}}
The second biggest municipality in Canada, Montréal has a large number of legacy systems keeping the government running. And while they don't quite date back to the city's founding in 1642, "we have systems that are older than some developers working here," jokes the city's CTO, Jean-Martin Thibault.
{{< /case-studies/lead >}}
</div>
<p>"We have mainframes, all flavors of Windows, various flavors of Linux, old and new Oracle systems, Sun servers, all kinds of databases. Some of the most important systems, like Budget and Human Resources, were developed on mainframes in-house over the past 30 years."</p>
<div class="banner5" >
<div class="banner5text">
"Were working with the market when possible, to put pressure on our vendors to support Kubernetes, because its a much easier solution to manage"<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- MORGAN MARTINET, ENTERPRISE ARCHITECT, CITY OF MONTRÉAL</span></div>
</div>
<p>In recent years, that fact became a big pain point. There are over 1,000 applications in all, running on almost as many different ecosystems. In 2015, a new city management team decided to break down those silos, and invest in IT in order to move toward a more integrated governance. "The organization was siloed, so as a result the architecture was siloed," says Thibault. "Once we got integrated into one IT team, we decided to redo an overall enterprise architecture."</p>
<div class="fullcol">
Kubernetes has also improved the efficiency of how the city uses its compute resources: “Before, the 200 application components we currently run in Kubernetes would have required hundreds of virtual machines, and now, if were talking about a single environment of production, we are able to run them on 8 machines, counting the masters of Kubernetes,” says Martinet. And its all done with a small team of just five people operating the Kubernetes clusters. Adds Martinet: “Its a dramatic improvement no matter what you measure.”
<br><br>
So it should come as no surprise that the teams strategy going forward is to target Kubernetes as much as they can. “If something cant run inside Kubernetes, well wait for it,” says Thibault. That means they havent moved any of the citys Windows systems onto Kubernetes, though its something they would like to do. “Were working with the market when possible, to put pressure on our vendors to support Kubernetes, because its a much easier solution to manage,” says Martinet.
<br><br>
Thibault sees a near future where 60% of the citys workloads are running on a Kubernetes platform—basically any and all of the use cases that they can get to work there. “Its so much more efficient than the way we used to do things,” he says. “Theres no looking back.”
<p>The first step to modernize the architecture was containerization. "We based our effort on the new trends; we understood the benefits of immutability and deployments without downtime and such things," says Solutions Architect Marc Khouzam. The team started with a small Docker farm with four or five servers, with Rancher for providing access to the Docker containers and their logs and Jenkins for deployment.</p>
</div>
</section>
{{< case-studies/quote
image="/images/case-studies/montreal/banner3.jpg"
author="MARC KHOUZAM, SOLUTIONS ARCHITECT, CITY OF MONTRÉAL"
>}}
"Getting a project running in Kubernetes is entirely dependent on how long you need to program the actual software. It's no longer dependent on deployment. Deployment is so fast that it's negligible."
{{< /case-studies/quote >}}
<p>But this Docker farm setup had some limitations, including the lack of self-healing and dynamic scaling based on traffic, and the effort required to optimize server resources and scale to multiple instances of the same container. The team soon realized they needed orchestration as well. "Kubernetes came to the rescue," says Thibault, "bringing in all these features that make it a lot easier to manage and give a lot more benefits to the users."</p>
<p>The team had evaluated several orchestration solutions, but Kubernetes stood out because it addressed all of the pain points. (They were also inspired by Yahoo! Japan's use case, which the team members felt came close to their vision.) "Kubernetes offered concepts on how you would describe an architecture for any kind of application, and based on those concepts, deploy what's required to run the infrastructure," says Enterprise Architect Morgan Martinet. "It was becoming a de facto standard. It also promised portability across cloud providers. The choice of Kubernetes now gives us many options such as running clusters in-house or in any IaaS provider, or even using Kubernetes-as-a-service in any of the major cloud providers."</p>
<p>Another important factor in the decision was vendor neutrality. "As a government entity, it is essential for us to be neutral in our selection of products and providers," says Thibault. "The independence of the Cloud Native Computing Foundation from any company provides this."</p>
{{< case-studies/quote
image="/images/case-studies/montreal/banner4.jpg"
author="MORGAN MARTINET, ENTERPRISE ARCHITECT, CITY OF MONTRÉAL"
>}}
"Kubernetes has been great. It's been stable, and it provides us with elasticity, resilience, and robustness. While re-architecting for Kubernetes, we also benefited from the monitoring and logging aspects, with centralized logging, Prometheus logging, and Grafana dashboards. We have enhanced visibility of what's being deployed."
{{< /case-studies/quote >}}
<p>The Kubernetes implementation began with the deployment of a small cluster using an internal Ansible playbook, which was soon replaced by the Kismatic distribution. Given the complexity they saw in operating a Kubernetes platform, they decided to provide development groups with an automated CI/CD solution based on Helm. "An integrated CI/CD solution on Kubernetes standardized how the various development teams designed and deployed their solutions, but allowed them to remain independent," says Khouzam.</p>
<p>During the re-architecting process, the team also added Prometheus for monitoring and alerting, Fluentd for logging, and Grafana for visualization. "We have enhanced visibility of what's being deployed," says Martinet. Adds Khouzam: "The big benefit is we can track anything, even things that don't run inside the Kubernetes cluster. It's our way to unify our monitoring effort."</p>
<p>All together, the cloud native solution has had a positive impact on velocity as well as administrative overhead. With standardization, code generation, automatic deployments into Kubernetes, and standardized monitoring through Prometheus, the time to market has improved drastically, from many months to a few weeks. Deployments went from months and weeks of planning down to hours. "In the past, you would have to ask for virtual machines, and that alone could take weeks to properly provision," says Thibault. Plus, for dedicated systems, experts often had to be brought in to install them with their own recipes, which could take weeks and months.</p>
<p>Now, says Khouzam, "we can deploy pretty much any application that's been Dockerized without any help from anybody. Getting a project running in Kubernetes is entirely dependent on how long you need to program the actual software. It's no longer dependent on deployment. Deployment is so fast that it's negligible."</p>
{{< case-studies/quote author="MORGAN MARTINET, ENTERPRISE ARCHITECT, CITY OF MONTRÉAL">}}
"We're working with the market when possible, to put pressure on our vendors to support Kubernetes, because it's a much easier solution to manage"
{{< /case-studies/quote >}}
<p>Kubernetes has also improved the efficiency of how the city uses its compute resources: "Before, the 200 application components we currently run in Kubernetes would have required hundreds of virtual machines, and now, if we're talking about a single environment of production, we are able to run them on 8 machines, counting the masters of Kubernetes," says Martinet. And it's all done with a small team of just five people operating the Kubernetes clusters. Adds Martinet: "It's a dramatic improvement no matter what you measure."</p>
<p>So it should come as no surprise that the team's strategy going forward is to target Kubernetes as much as they can. "If something can't run inside Kubernetes, we'll wait for it," says Thibault. That means they haven't moved any of the city's Windows systems onto Kubernetes, though it's something they would like to do. "We're working with the market when possible, to put pressure on our vendors to support Kubernetes, because it's a much easier solution to manage," says Martinet.</p>
<p>Thibault sees a near future where 60% of the city's workloads are running on a Kubernetes platform—basically any and all of the use cases that they can get to work there. "It's so much more efficient than the way we used to do things," he says. "There's no looking back."</p>
+64 -80
View File
@@ -1,101 +1,85 @@
---
title: Crowdfire Case Study
case_study_styles: true
cid: caseStudies
css: /css/style_crowdfire.css
new_case_study_styles: true
heading_background: /images/case-studies/crowdfire/banner1.jpg
heading_title_logo: /images/crowdfire_logo.png
subheading: >
How to Keep Iterating a Fast-Growing App With a Cloud-Native Approach
case_study_details:
- Company: Crowdfire
- Location: Mumbai, India
- Industry: Social Media Software
---
<div class="banner1">
<h1> CASE STUDY:<img src="/images/crowdfire_logo.png" class="header_logo"><br> <div class="subhead">How to Keep Iterating a Fast-Growing App With a Cloud-Native Approach</div></h1>
<h2>Challenge</h2>
</div>
<p><a href="https://www.crowdfireapp.com/">Crowdfire</a> helps content creators create their content anywhere on the Internet and publish it everywhere else in the right format. Since its launch in 2010, it has grown to 16 million users. The product began as a monolith app running on <a href="https://cloud.google.com/appengine/">Google App Engine</a>, and in 2015, the company began a transformation to microservices running on Amazon Web Services <a href="https://aws.amazon.com/elasticbeanstalk/">Elastic Beanstalk</a>. "It was okay for our use cases initially, but as the number of services, development teams and scale increased, the deploy times, self-healing capabilities and resource utilization started to become problems for us," says Software Engineer Amanpreet Singh, who leads the infrastructure team for Crowdfire.</p>
<div class="details">
Company &nbsp;<b>Crowdfire</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Mumbai, India</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Social Media Software</b>
</div>
<h2>Solution</h2>
<hr>
<section class="section1">
<div class="cols">
<div class="col1">
<h2>Challenge</h2>
<a href="https://www.crowdfireapp.com/">Crowdfire</a> helps content creators create their content anywhere on the Internet and publish it everywhere else in the right format. Since its launch in 2010, it has grown to 16 million users. The product began as a monolith app running on <a href="https://cloud.google.com/appengine/">Google App Engine</a>, and in 2015, the company began a transformation to microservices running on Amazon Web Services <a href="https://aws.amazon.com/elasticbeanstalk/">Elastic Beanstalk</a>. "It was okay for our use cases initially, but as the number of services, development teams and scale increased, the deploy times, self-healing capabilities and resource utilization started to become problems for us," says Software Engineer Amanpreet Singh, who leads the infrastructure team for Crowdfire.<br>
<h2>Solution</h2>
"We realized that we needed a more cloud-native approach to deal with these issues," says Singh. The team decided to implement a custom setup of Kubernetes based on <a href="https://www.terraform.io/">Terraform</a> and <a href="https://www.ansible.com/">Ansible</a>.
<br>
</div>
<div class="col2">
<p>"We realized that we needed a more cloud-native approach to deal with these issues," says Singh. The team decided to implement a custom setup of Kubernetes based on <a href="https://www.terraform.io/">Terraform</a> and <a href="https://www.ansible.com/">Ansible</a>.</p>
<h2>Impact</h2>
"Kubernetes has helped us reduce the deployment time from 15 minutes to less than a minute," says Singh. "Due to Kubernetess self-healing nature, the operations team doesnt need to do any manual intervention in case of a node or pod failure." Plus, he says, "Dev-Prod parity has improved since developers can experiment with options in dev/staging clusters, and when its finalized, they just commit the config changes in the respective code repositories. These changes automatically get replicated on the production cluster via CI/CD pipelines."
</div>
</div>
</section>
<div class="banner2">
<div class="banner2text">
"In the 15 months that weve been using Kubernetes, it has been amazing for us. It enabled us to iterate quickly, increase development speed, and continuously deliver new features and bug fixes to our users, while keeping our operational costs and infrastructure management overhead under control."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Amanpreet Singh, Software Engineer at Crowdfire</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>"If you build it, they will come."</h2>
For most content creators, only half of that movie quote may ring true. Sure, platforms like Wordpress, YouTube and Shopify have made it simple for almost anyone to start publishing new content online, but attracting an audience isnt as easy. Crowdfire "helps users publish their content to all possible places where their audience exists," says Amanpreet Singh, a Software Engineer at the company based in Mumbai, India. Crowdfire has gained more than 16 million users—from bloggers and artists to makers and small businesses—since its launch in 2010.<br><br>
With that kind of growth—and a high demand from users for new features and continuous improvements—the Crowdfire team struggled to keep up behind the scenes. In 2015, they moved their monolith Java application to Amazon Web Services <a href="https://aws.amazon.com/elasticbeanstalk/">Elastic Beanstalk</a> and started breaking it down into microservices.<br><br>
It was a good first step, but the team soon realized they needed to go further down the cloud-native path, which would lead them to Kubernetes. "It was okay for our use cases initially, but as the number of services and development teams increased and we scaled further, deploy times, self-healing capabilities and resource utilization started to become problematic," says Singh, who leads the infrastructure team at Crowdfire. "We realized that we needed a more cloud-native approach to deal with these issues."<br><br>
As he looked around for solutions, Singh had a checklist of what Crowdfire needed. "We wanted to keep some things separate so they could be shipped independent of other things; this would help remove blockers and let different teams work at their own pace," he says. "We also make a lot of data-driven decisions, so shipping a feature and its iterations quickly was a must."<br><br>
Kubernetes checked all the boxes and then some. "One of the best things was the built-in service discovery," he says. "When you have a bunch of microservices that need to call each other, having internal DNS readily available and service IPs and ports automatically set as environment variables help a lot." Plus, he adds, "Kubernetess opinionated approach made it easier to get started."
<p>"Kubernetes has helped us reduce the deployment time from 15 minutes to less than a minute," says Singh. "Due to Kubernetes's self-healing nature, the operations team doesn't need to do any manual intervention in case of a node or pod failure." Plus, he says, "Dev-Prod parity has improved since developers can experiment with options in dev/staging clusters, and when it's finalized, they just commit the config changes in the respective code repositories. These changes automatically get replicated on the production cluster via CI/CD pipelines."</p>
</div>
</section>
<div class="banner3">
<div class="banner3text">
"We realized that we needed a more cloud-native approach to deal with these issues," says Singh. The team decided to implement a custom setup of Kubernetes based on Terraform and Ansible."
</div>
</div>
<section class="section3">
<div class="fullcol">
There was another compelling business reason for the cloud-native approach. "In todays world of ever-changing business requirements, using cloud native technology provides a variety of options to choose from—even the ability to run services in a hybrid cloud environment," says Singh. "Businesses can keep services in a region closest to the users, and thus benefit from high-availability and resiliency."<br><br>
So in February 2016, Singh set up a test Kubernetes cluster using the kube-up scripts provided. "I explored the features and was able to deploy an application pretty easily," he says. "However, it seemed like a black box since I didnt understand the components completely, and had no idea what the kube-up script did under the hood. So when it broke, it was hard to find the issue and fix it." <br><br>
To get a better understanding, Singh dove into the internals of Kubernetes, reading the docs and even some of the code. And he looked to the Kubernetes community for more insight. "I used to stay up a little late every night (a lot of users were active only when its night here in India) and would try to answer questions on the Kubernetes community Slack from users who were getting started," he says. "I would also follow other conversations closely. I must admit I was able to avoid a lot of issues in our setup because I knew others had faced the same issues."<br><br>
Based on the knowledge he gained, Singh decided to implement a custom setup of Kubernetes based on <a href="https://www.terraform.io/">Terraform</a> and <a href="https://www.ansible.com/">Ansible</a>. "I wrote Terraform to launch Kubernetes master and nodes (Auto Scaling Groups) and an Ansible playbook to install the required components," he says. (The company recently switched to using prebaked <a href="http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html">AMIs</a> to make the node bringup faster, and is planning to change its networking layer.) <br><br>
{{< case-studies/quote author="Amanpreet Singh, Software Engineer at Crowdfire" >}}
"In the 15 months that we've been using Kubernetes, it has been amazing for us. It enabled us to iterate quickly, increase development speed, and continuously deliver new features and bug fixes to our users, while keeping our operational costs and infrastructure management overhead under control."
{{< /case-studies/quote >}}
</div>
</section>
<div class="banner4">
<div class="banner4text">
"Kubernetes helped us reduce the deployment time from 15 minutes to less than a minute. Due to Kubernetess self-healing nature, the operations team doesnt need to do any manual intervention in case of a node or pod failure."
</div>
</div>
{{< case-studies/lead >}}
"If you build it, they will come."
{{< /case-studies/lead >}}
<section class="section4">
<div class="fullcol">
First, the team migrated a few staging services from Elastic Beanstalk to the new Kubernetes staging cluster, and then set up a production cluster a month later to deploy some services. The results were convincing. "By the end of March 2016, we established that all the new services must be deployed on Kubernetes," says Singh. "Kubernetes helped us reduce the deployment time from 15 minutes to less than a minute. Due to Kubernetess self-healing nature, the operations team doesnt need to do any manual intervention in case of a node or pod failure." On top of that, he says, "Dev-Prod parity has improved since developers can experiment with options in dev/staging clusters, and when its finalized, they just commit the config changes in the respective code repositories. These changes automatically get replicated on the production cluster via CI/CD pipelines. This brings more visibility into the changes being made, and keeping an audit trail."<br><br>
Over the next six months, the team worked on migrating all the services from Elastic Beanstalk to Kubernetes, except for the few that were deprecated and would soon be terminated anyway. The services were moved one at a time, and their performance was monitored for two to three days each. Today, "Were completely migrated and we run all new services on Kubernetes," says Singh. <br><br>
The impact has been considerable: With Kubernetes, the company has experienced a 90% cost savings on Elastic Load Balancer, which is now only used for their public, user-facing services. Their EC2 operating expenses have been decreased by as much as 50%.<br><br>
All 30 engineers at Crowdfire were onboarded at once. "I gave an internal talk where I shared the basic components and demoed the usage of kubectl," says Singh. "Everyone was excited and happy about using Kubernetes. Developers have more control and visibility into their applications running in production now. Most of all, theyre happy with the low deploy times and self-healing services." <br><br>
And theyre much more productive, too. "Where we used to do about 5 deployments per day," says Singh, "now were doing 30+ production and 50+ staging deployments almost every day."
<p>For most content creators, only half of that movie quote may ring true. Sure, platforms like Wordpress, YouTube and Shopify have made it simple for almost anyone to start publishing new content online, but attracting an audience isn't as easy. Crowdfire "helps users publish their content to all possible places where their audience exists," says Amanpreet Singh, a Software Engineer at the company based in Mumbai, India. Crowdfire has gained more than 16 million users—from bloggers and artists to makers and small businesses—since its launch in 2010.</p>
<p>With that kind of growth—and a high demand from users for new features and continuous improvements—the Crowdfire team struggled to keep up behind the scenes. In 2015, they moved their monolith Java application to Amazon Web Services <a href="https://aws.amazon.com/elasticbeanstalk/">Elastic Beanstalk</a> and started breaking it down into microservices.</p>
</div>
</section>
<div class="banner5">
<div class="banner5text">
The impact has been considerable: With Kubernetes, the company has experienced a 90% cost savings on Elastic Load Balancer, which is now only used for their public, user-facing services. Their EC2 operating expenses have been decreased by as much as 50%.
<p>It was a good first step, but the team soon realized they needed to go further down the cloud-native path, which would lead them to Kubernetes. "It was okay for our use cases initially, but as the number of services and development teams increased and we scaled further, deploy times, self-healing capabilities and resource utilization started to become problematic," says Singh, who leads the infrastructure team at Crowdfire. "We realized that we needed a more cloud-native approach to deal with these issues."</p>
</div>
</div>
<section class="section5">
<div class="fullcol">
<p>As he looked around for solutions, Singh had a checklist of what Crowdfire needed. "We wanted to keep some things separate so they could be shipped independent of other things; this would help remove blockers and let different teams work at their own pace," he says. "We also make a lot of data-driven decisions, so shipping a feature and its iterations quickly was a must."</p>
Singh notes that almost all of the engineers interact with the staging cluster on a daily basis, and that has created a cultural change at Crowdfire. "Developers are more aware of the cloud infrastructure now," he says. "Theyve started following cloud best practices like better health checks, structured logs to stdout [standard output], and config via files or environment variables."<br><br>
With Crowdfires commitment to Kubernetes, Singh is looking to expand the companys cloud-native stack. The team already uses <a href="https://prometheus.io/">Prometheus</a> for monitoring, and he says he is evaluating <a href="https://linkerd.io/">Linkerd</a> and <a href="https://envoyproxy.github.io/">Envoy Proxy</a> as a way to "get more metrics about request latencies and failures, and handle them better." Other CNCF projects, including <a href="http://opentracing.io/">OpenTracing</a> and <a href="https://grpc.io/">gRPC</a> are also on his radar.<br><br>
Singh has found that the cloud-native community is growing in India, too, particularly in Bangalore. "A lot of startups and new companies are starting to run their infrastructure on Kubernetes," he says. <br><br>
And when people ask him about Crowdfires experience, he has this advice to offer: "Kubernetes is a great piece of technology, but it might not be right for you, especially if you have just one or two services or your app isnt easy to run in a containerized environment," he says. "Assess your situation and the value that Kubernetes provides before going all in. If you do decide to use Kubernetes, make sure you understand the components that run under the hood and what role they play in smoothly running the cluster. Another thing to consider is if your apps are Kubernetes-ready, meaning if they have proper health checks and handle termination signals to shut down gracefully."<br><br>
And if your company fits that profile, go for it. Crowdfire clearly did—and is now reaping the benefits. "In the 15 months that weve been using Kubernetes, it has been amazing for us," says Singh. "It enabled us to iterate quickly, increase development speed and continuously deliver new features and bug fixes to our users, while keeping our operational costs and infrastructure management overhead under control."
<p>Kubernetes checked all the boxes and then some. "One of the best things was the built-in service discovery," he says. "When you have a bunch of microservices that need to call each other, having internal DNS readily available and service IPs and ports automatically set as environment variables help a lot." Plus, he adds, "Kubernetes's opinionated approach made it easier to get started."</p>
{{< case-studies/quote image="/images/case-studies/crowdfire/banner3.jpg" >}}
"We realized that we needed a more cloud-native approach to deal with these issues," says Singh. The team decided to implement a custom setup of Kubernetes based on Terraform and Ansible."
{{< /case-studies/quote >}}
</div>
</section>
<p>There was another compelling business reason for the cloud-native approach. "In today's world of ever-changing business requirements, using cloud native technology provides a variety of options to choose from—even the ability to run services in a hybrid cloud environment," says Singh. "Businesses can keep services in a region closest to the users, and thus benefit from high-availability and resiliency."</p>
<p>So in February 2016, Singh set up a test Kubernetes cluster using the kube-up scripts provided. "I explored the features and was able to deploy an application pretty easily," he says. "However, it seemed like a black box since I didn't understand the components completely, and had no idea what the kube-up script did under the hood. So when it broke, it was hard to find the issue and fix it."</p>
<p>To get a better understanding, Singh dove into the internals of Kubernetes, reading the docs and even some of the code. And he looked to the Kubernetes community for more insight. "I used to stay up a little late every night (a lot of users were active only when it's night here in India) and would try to answer questions on the Kubernetes community Slack from users who were getting started," he says. "I would also follow other conversations closely. I must admit I was able to avoid a lot of issues in our setup because I knew others had faced the same issues."</p>
<p>Based on the knowledge he gained, Singh decided to implement a custom setup of Kubernetes based on <a href="https://www.terraform.io/">Terraform</a> and <a href="https://www.ansible.com/">Ansible</a>. "I wrote Terraform to launch Kubernetes master and nodes (Auto Scaling Groups) and an Ansible playbook to install the required components," he says. (The company recently switched to using prebaked <a href="http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html">AMIs</a> to make the node bringup faster, and is planning to change its networking layer.)</p>
{{< case-studies/quote image="/images/case-studies/crowdfire/banner4.jpg" >}}
"Kubernetes helped us reduce the deployment time from 15 minutes to less than a minute. Due to Kubernetes's self-healing nature, the operations team doesn't need to do any manual intervention in case of a node or pod failure."
{{< /case-studies/quote >}}
<p>First, the team migrated a few staging services from Elastic Beanstalk to the new Kubernetes staging cluster, and then set up a production cluster a month later to deploy some services. The results were convincing. "By the end of March 2016, we established that all the new services must be deployed on Kubernetes," says Singh. "Kubernetes helped us reduce the deployment time from 15 minutes to less than a minute. Due to Kubernetes's self-healing nature, the operations team doesn't need to do any manual intervention in case of a node or pod failure." On top of that, he says, "Dev-Prod parity has improved since developers can experiment with options in dev/staging clusters, and when it's finalized, they just commit the config changes in the respective code repositories. These changes automatically get replicated on the production cluster via CI/CD pipelines. This brings more visibility into the changes being made, and keeping an audit trail."</p>
<p>Over the next six months, the team worked on migrating all the services from Elastic Beanstalk to Kubernetes, except for the few that were deprecated and would soon be terminated anyway. The services were moved one at a time, and their performance was monitored for two to three days each. Today, "We're completely migrated and we run all new services on Kubernetes," says Singh.</p>
<p>The impact has been considerable: With Kubernetes, the company has experienced a 90% cost savings on Elastic Load Balancer, which is now only used for their public, user-facing services. Their EC2 operating expenses have been decreased by as much as 50%.</p>
<p>All 30 engineers at Crowdfire were onboarded at once. "I gave an internal talk where I shared the basic components and demoed the usage of kubectl," says Singh. "Everyone was excited and happy about using Kubernetes. Developers have more control and visibility into their applications running in production now. Most of all, they're happy with the low deploy times and self-healing services."</p>
<p>And they're much more productive, too. "Where we used to do about 5 deployments per day," says Singh, "now we're doing 30+ production and 50+ staging deployments almost every day."</p>
{{< case-studies/quote >}}
The impact has been considerable: With Kubernetes, the company has experienced a 90% cost savings on Elastic Load Balancer, which is now only used for their public, user-facing services. Their EC2 operating expenses have been decreased by as much as 50%.
{{< /case-studies/quote >}}
<p>Singh notes that almost all of the engineers interact with the staging cluster on a daily basis, and that has created a cultural change at Crowdfire. "Developers are more aware of the cloud infrastructure now," he says. "They've started following cloud best practices like better health checks, structured logs to stdout [standard output], and config via files or environment variables."</p>
<p>With Crowdfire's commitment to Kubernetes, Singh is looking to expand the company's cloud-native stack. The team already uses <a href="https://prometheus.io/">Prometheus</a> for monitoring, and he says he is evaluating <a href="https://linkerd.io/">Linkerd</a> and <a href="https://envoyproxy.github.io/">Envoy Proxy</a> as a way to "get more metrics about request latencies and failures, and handle them better." Other CNCF projects, including <a href="http://opentracing.io/">OpenTracing</a> and <a href="https://grpc.io/">gRPC</a> are also on his radar.</p>
<p>Singh has found that the cloud-native community is growing in India, too, particularly in Bangalore. "A lot of startups and new companies are starting to run their infrastructure on Kubernetes," he says.</p>
<p>And when people ask him about Crowdfire's experience, he has this advice to offer: "Kubernetes is a great piece of technology, but it might not be right for you, especially if you have just one or two services or your app isn't easy to run in a containerized environment," he says. "Assess your situation and the value that Kubernetes provides before going all in. If you do decide to use Kubernetes, make sure you understand the components that run under the hood and what role they play in smoothly running the cluster. Another thing to consider is if your apps are 'Kubernetes-ready,' meaning if they have proper health checks and handle termination signals to shut down gracefully."</p>
<p>And if your company fits that profile, go for it. Crowdfire clearly did—and is now reaping the benefits. "In the 15 months that we've been using Kubernetes, it has been amazing for us," says Singh. "It enabled us to iterate quickly, increase development speed and continuously deliver new features and bug fixes to our users, while keeping our operational costs and infrastructure management overhead under control."</p>
+51 -79
View File
@@ -3,108 +3,80 @@ title: Denso Case Study
linkTitle: Denso
case_study_styles: true
cid: caseStudies
css: /css/case-studies-gradient.css
logo: denso_featured_logo.svg
featured: true
weight: 4
quote: >
We got Kubernetes experts involved on our team, and it dramatically accelerated development speed.
new_case_study_styles: true
heading_background: /images/case-studies/denso/banner2.jpg
heading_title_text: Denso
use_gradient_overlay: true
subheading: >
How DENSO Is Fueling Development on the Vehicle Edge with Kubernetes
case_study_details:
- Company: Denso
- Location: Japan
- Industry: Automotive, Edge
---
<h2>Challenge</h2>
<div class="article image overlay" style="background-image: url('/images/case-studies/denso/banner2.jpg')">
<h1> CASE STUDY: Denso</h1>
<div class="subhead">How DENSO Is Fueling Development on the Vehicle Edge with Kubernetes</div>
</div>
<p>DENSO Corporation is one of the biggest automotive components suppliers in the world. With the advent of connected cars, the company launched a Digital Innovation Department to expand into software, working on vehicle edge and vehicle cloud products. But there were several technical challenges to creating an integrated vehicle edge/cloud platform: "the amount of computing resources, the occasional lack of mobile signal, and an enormous number of distributed vehicles," says R&D Product Manager Seiichi Koizumi.</p>
<div class="details">
Company &nbsp;<b>Denso</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Japan</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Automotive, Edge</b>
</div>
<h2>Solution</h2>
<hr>
<section class="section1">
<div class="colsgradient">
<div class="col1">
<h2>Challenge</h2>
DENSO Corporation is one of the biggest automotive components suppliers in the world. With the advent of connected cars, the company launched a Digital Innovation Department to expand into software, working on vehicle edge and vehicle cloud products. But there were several technical challenges to creating an integrated vehicle edge/cloud platform: "the amount of computing resources, the occasional lack of mobile signal, and an enormous number of distributed vehicles," says R&D Product Manager Seiichi Koizumi.
<h2>Solution</h2>
Koizumis team realized that because mobility services evolve every day, they needed the flexibility of the cloud native ecosystem for their platform. After considering other orchestrators, DENSO went with Kubernetes for orchestration and added Prometheus, Fluentd, Envoy, Istio, and Helm to the platform. Today, DENSO is using a vehicle edge computer, a private Kubernetes cloud, and managed Kubernetes (GKE, EKS, AKS).
<p>Koizumi's team realized that because mobility services evolve every day, they needed the flexibility of the cloud native ecosystem for their platform. After considering other orchestrators, DENSO went with Kubernetes for orchestration and added Prometheus, Fluentd, Envoy, Istio, and Helm to the platform. Today, DENSO is using a vehicle edge computer, a private Kubernetes cloud, and managed Kubernetes (GKE, EKS, AKS).</p>
<h2>Impact</h2>
Critical layer features can take 2-3 years to implement in the traditional, waterfall model of development at DENSO. With the Kubernetes platform and agile methods, theres a 2-month development cycle for non-critical software. Now, ten new applications are released a year, and a new prototype is introduced every week. "By utilizing Kubernetes managed services, such as GKE/EKS/AKS, we can unify the environment and simplify our maintenance operation," says Koizumi.
</div>
</section>
<div class="article image overlay" style="background-image: url('/images/case-studies/denso/banner1.png');">
<div class="quotetext">
"Another disruptive innovation is coming, so to survive in this situation, we need to change our culture."
<p><div class="quoteauthortext">- SEIICHI KOIZUMI, R&D PRODUCT MANAGER, DIGITAL INNOVATION DEPARTMENT AT DENSO</div></p>
</div>
</div>
<p>Critical layer features can take 2-3 years to implement in the traditional, waterfall model of development at DENSO. With the Kubernetes platform and agile methods, there's a 2-month development cycle for non-critical software. Now, ten new applications are released a year, and a new prototype is introduced every week. "By utilizing Kubernetes managed services, such as GKE/EKS/AKS, we can unify the environment and simplify our maintenance operation," says Koizumi.</p>
<section class="section2">
<div class="fullcol">
<h4>Spun off from Toyota in 1949, DENSO Corporation is one of the top automotive suppliers in the world today, with consolidated net revenue of $48.3 billion.
</h4>
{{< case-studies/quote
image="/images/case-studies/denso/banner1.png"
author="SEIICHI KOIZUMI, R&D PRODUCT MANAGER, DIGITAL INNOVATION DEPARTMENT AT DENSO"
>}}
"Another disruptive innovation is coming, so to survive in this situation, we need to change our culture."
{{< /case-studies/quote >}}
<p>The companys mission is "contributing to a better world by creating value together with a vision for the future"—and part of that vision in recent years has been development on the vehicle edge and vehicle cloud.</p>
{{< case-studies/lead >}}
Spun off from Toyota in 1949, DENSO Corporation is one of the top automotive suppliers in the world today, with consolidated net revenue of $48.3 billion.
{{< /case-studies/lead >}}
<p>With the advent of connected cars, DENSO established a Digital Innovation Department to expand its business beyond the critical layer of the engine, braking systems, and other automotive parts into the non-critical analytics and entertainment layer. Comparing connected cars to smartphones, R&D Product Manager Seiichi Koizumi says DENSO wants the ability to quickly and easily develop and install apps for the "blank slate" of the car, and iterate them based on the drivers preferences. Thus "we need a flexible application platform," he says. </p>
<p>The company's mission is "contributing to a better world by creating value together with a vision for the future"—and part of that vision in recent years has been development on the vehicle edge and vehicle cloud.</p>
<p>With the advent of connected cars, DENSO established a Digital Innovation Department to expand its business beyond the critical layer of the engine, braking systems, and other automotive parts into the non-critical analytics and entertainment layer. Comparing connected cars to smartphones, R&D Product Manager Seiichi Koizumi says DENSO wants the ability to quickly and easily develop and install apps for the "blank slate" of the car, and iterate them based on the driver's preferences. Thus "we need a flexible application platform," he says.</p>
<p>But working on vehicle edge and vehicle cloud products meant there were several technical challenges: "the amount of computing resources, the occasional lack of mobile signal, and an enormous number of distributed vehicles," says Koizumi. "We are tackling these challenges to create an integrated vehicle edge/cloud platform."</p>
{{< case-studies/quote author="SEIICHI KOIZUMI, R&D PRODUCT MANAGER, DIGITAL INNOVATION DEPARTMENT AT DENSO" >}}
"We got Kubernetes experts involved on our team, and it dramatically accelerated development speed."
{{< /case-studies/quote >}}
</div>
</section>
<p>Koizumi's team realized that because mobility services evolve every day, they needed the flexibility of the cloud native ecosystem for their platform. As they evaluated technologies, they were led by these criteria: Because their service-enabler business needed to support multiple cloud and on-premise environments, the solution needed to be cloud agnostic, with no vendor lock-in and open governance. It also had to support an edge-cloud integrated environment.</p>
<div class="greybanner">
<div class="greyquotetext">
"We got Kubernetes experts involved on our team, and it dramatically accelerated development speed."<p><div class="quoteauthortext">— SEIICHI KOIZUMI, R&D PRODUCT MANAGER, DIGITAL INNOVATION DEPARTMENT AT DENSO</div></p>
</div>
</div>
<p>After considering other orchestrators, DENSO went with Kubernetes for orchestration and added Prometheus, Fluentd, Envoy, Istio, and Helm to the platform. During implementation, the team used "design thinking to clarify use cases and their value proposition," says Koizumi. Next, an agile development team worked on a POC, then an MVP, in DevOps style. "Even in the development phase, we are keeping a channel to end users," he adds.</p>
<section class="section3">
<div class="fullcol">
<p>
Koizumis team realized that because mobility services evolve every day, they needed the flexibility of the cloud native ecosystem for their platform. As they evaluated technologies, they were led by these criteria: Because their service-enabler business needed to support multiple cloud and on-premise environments, the solution needed to be cloud agnostic, with no vendor lock-in and open governance. It also had to support an edge-cloud integrated environment.</p>
<p>
After considering other orchestrators, DENSO went with Kubernetes for orchestration and added Prometheus, Fluentd, Envoy, Istio, and Helm to the platform. During implementation, the team used "design thinking to clarify use cases and their value proposition," says Koizumi. Next, an agile development team worked on a POC, then an MVP, in DevOps style. "Even in the development phase, we are keeping a channel to end users," he adds. </p>
<p>
One lesson learned during this process was the value of bringing in experts. "We tried to learn Kubernetes and cloud native technologies from scratch, but it took more time than expected," says Koizumi. "We got Kubernetes experts involved on our team, and it dramatically accelerated development speed."</p>
<p>One lesson learned during this process was the value of bringing in experts. "We tried to learn Kubernetes and cloud native technologies from scratch, but it took more time than expected," says Koizumi. "We got Kubernetes experts involved on our team, and it dramatically accelerated development speed."</p>
</p>
</div>
</section>
{{< case-studies/quote
image="/images/case-studies/denso/banner4.jpg"
author="SEIICHI KOIZUMI, R&D PRODUCT MANAGER, DIGITAL INNOVATION DEPARTMENT AT DENSO"
>}}
"By utilizing Kubernetes managed services, such as GKE/EKS/AKS, we can unify the environment and simplify our maintenance operation."
{{< /case-studies/quote >}}
<p>Today, DENSO is using a vehicle edge computer, a private Kubernetes cloud, and managed Kubernetes on GKE, EKS, and AKS. "We are developing a vehicle edge/cloud integrated platform based on a microservice and service mesh architecture," says Koizumi. "We extend cloud into multiple vehicle edges and manage it as a unified platform."</p>
<div class="article image overlay" style="background-image: url('/images/case-studies/denso/banner4.jpg');">
<div class="quotetext">
"By utilizing Kubernetes managed services, such as GKE/EKS/AKS, we can unify the environment and simplify our maintenance operation." <p><div class="quoteauthortext">- SEIICHI KOIZUMI, R&D PRODUCT MANAGER, DIGITAL INNOVATION DEPARTMENT AT DENSO</div></p>
</div>
</div>
<p>Cloud native has enabled DENSO to deliver applications via its new dash cam, which has a secure connection that collects data to the cloud. "It's like a smartphone," he says. "We are installing new applications and getting the data through the cloud, and we can keep updating new applications all through the dash cam."</p>
<section class="section5">
<div class="fullcol">
<p>
Today, DENSO is using a vehicle edge computer, a private Kubernetes cloud, and managed Kubernetes on GKE, EKS, and AKS. "We are developing a vehicle edge/cloud integrated platform based on a microservice and service mesh architecture," says Koizumi. "We extend cloud into multiple vehicle edges and manage it as a unified platform."</p>
<p>
Cloud native has enabled DENSO to deliver applications via its new dash cam, which has a secure connection that collects data to the cloud. "Its like a smartphone," he says. "We are installing new applications and getting the data through the cloud, and we can keep updating new applications all through the dash cam."</p>
<p>
The unified cloud native platform, combined with agile development, has had a positive impact on productivity. Critical layer features—those involving engines or braking systems, for example—can take 2-3 years to implement at DENSO, because of the time needed to test safety, but also because of the traditional, waterfall model of development. With the Kubernetes platform and agile methods, theres a 2-month development cycle for non-critical software. Now, ten new applications are released a year, and with the departments scrum-style development, a new prototype is introduced every week. </p>
<p>
Application portability has also led to greater developer efficiency. "Theres no need to care about differences in the multi-cloud platform anymore," says Koizumi. Now, "we are also trying to have the same portability between vehicle edge and cloud platform."
</p>
<p>
Another improvement: Automotive Tier-1 suppliers like DENSO always have multiple Tier-2 suppliers. "To provide automotive-grade high-availability services, we tried to do the same thing on a multi-cloud platform," says Koizumi. Before Kubernetes, maintaining two different systems simultaneously was difficult. "By utilizing Kubernetes managed services, such as GKE/EKS/AKS, we can unify the environment and simplify our maintenance operation," he says.
</p>
<p>
Cloud native has also profoundly changed the culture at DENSO. The Digital Innovation Department is known as "Noahs Ark," and it has grown from 2 members to 70—with plans to more than double in the next year. The way they operate is completely different from the traditional Japanese automotive culture. But just as the company embraced change brought by hybrid cars in the past decade, Koizumi says, theyre doing it again now, as technology companies have moved into the connected car space. "Another disruptive innovation is coming," he says, "so to survive in this situation, we need to change our culture."
</p>
<p>
Looking ahead, Koizumi and his team are expecting serverless and zero-trust security architecture to be important enhancements of Kubernetes. They are glad DENSO has come along for the ride. "Mobility service businesses require agility and flexibility," he says. "DENSO is trying to bring cloud native flexibility into the vehicle infrastructure."
</p>
</div>
</section>
</body>
<p>The unified cloud native platform, combined with agile development, has had a positive impact on productivity. Critical layer features—those involving engines or braking systems, for example—can take 2-3 years to implement at DENSO, because of the time needed to test safety, but also because of the traditional, waterfall model of development. With the Kubernetes platform and agile methods, there's a 2-month development cycle for non-critical software. Now, ten new applications are released a year, and with the department's scrum-style development, a new prototype is introduced every week.</p>
<p>Application portability has also led to greater developer efficiency. "There's no need to care about differences in the multi-cloud platform anymore," says Koizumi. Now, "we are also trying to have the same portability between vehicle edge and cloud platform."</p>
<p>Another improvement: Automotive Tier-1 suppliers like DENSO always have multiple Tier-2 suppliers. "To provide automotive-grade high-availability services, we tried to do the same thing on a multi-cloud platform," says Koizumi. Before Kubernetes, maintaining two different systems simultaneously was difficult. "By utilizing Kubernetes managed services, such as GKE/EKS/AKS, we can unify the environment and simplify our maintenance operation," he says.</p>
<p>Cloud native has also profoundly changed the culture at DENSO. The Digital Innovation Department is known as "Noah's Ark," and it has grown from 2 members to 70—with plans to more than double in the next year. The way they operate is completely different from the traditional Japanese automotive culture. But just as the company embraced change brought by hybrid cars in the past decade, Koizumi says, they're doing it again now, as technology companies have moved into the connected car space. "Another disruptive innovation is coming," he says, "so to survive in this situation, we need to change our culture."</p>
<p>Looking ahead, Koizumi and his team are expecting serverless and zero-trust security architecture to be important enhancements of Kubernetes. They are glad DENSO has come along for the ride. "Mobility service businesses require agility and flexibility," he says. "DENSO is trying to bring cloud native flexibility into the vehicle infrastructure."</p>
+64 -100
View File
@@ -1,125 +1,89 @@
---
title: GolfNow Case Study
case_study_styles: true
cid: caseStudies
css: /css/style_golfnow.css
new_case_study_styles: true
heading_background: /images/case-studies/golfnow/banner1.jpg
heading_title_logo: /images/golfnow_logo.png
subheading: >
Saving Time and Money with Cloud Native Infrastructure
case_study_details:
- Company: GolfNow
- Location: Orlando, Florida
- Industry: Golf Industry Technology and Services Provider
---
<div class="banner1">
<h1>CASE STUDY: <img src="/images/golfnow_logo.png" width="20%" style="margin-bottom:-6px"><br>
<div class="subhead">Saving Time and Money with Cloud Native Infrastructure</div>
</h1>
</div>
<h2>Challenge</h2>
<div class="details">
Company&nbsp;<b>GolfNow</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location&nbsp;<b>Orlando, Florida</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry&nbsp;<b>Golf Industry Technology and Services Provider</b>
</div>
<p>A member of the <a href="http://www.nbcunicareers.com/our-businesses/nbc-sports-group">NBC Sports Group</a>, <a href="https://www.golfnow.com/">GolfNow</a> is the golf industry's technology and services leader, managing 10 different products, as well as the largest e-commerce tee time marketplace in the world. As its business began expanding rapidly and globally, GolfNow's monolithic application became problematic. "We kept growing our infrastructure vertically rather than horizontally, and the cost of doing business became problematic," says Sheriff Mohamed, GolfNow's Director, Architecture. "We wanted the ability to more easily expand globally."</p>
<hr>
<h2>Solution</h2>
<section class="section1">
<div class="cols">
<div class="col1">
<p>Turning to microservices and containerization, GolfNow began moving its applications and databases from third-party services to its own clusters running on <a href="https://www.docker.com/">Docker</a> and <a href="http://kubernetes.io/">Kubernetes.</a></p>
<h2>Challenge</h2>
A member of the <a href="http://www.nbcunicareers.com/our-businesses/nbc-sports-group">NBC Sports Group</a>, <a href="https://www.golfnow.com/">GolfNow</a> is the golf industrys technology and services leader, managing 10 different products, as well as the largest e-commerce tee time marketplace in the world. As its business began expanding rapidly and globally, GolfNows monolithic application became problematic. "We kept growing our infrastructure vertically rather than horizontally, and the cost of doing business became problematic," says Sheriff Mohamed, GolfNows Director, Architecture. "We wanted the ability to more easily expand globally."
<br>
</div>
<h2>Impact</h2>
<div class="col2">
<h2>Solution</h2>
Turning to microservices and containerization, GolfNow began moving its applications and databases from third-party services to its own clusters running on <a href="https://www.docker.com/">Docker</a> and <a href="http://kubernetes.io/">Kubernetes.</a><br><br>
<p>The results were immediate. While maintaining the same capacity—and beyond, during peak periods—GolfNow saw its infrastructure costs for the first application virtually cut in half.</p>
<h2>Impact</h2>
The results were immediate. While maintaining the same capacity—and beyond, during peak periods—GolfNow saw its infrastructure costs for the first application virtually cut in half.
</div>
</div>
</section>
{{< case-studies/quote author="SHERIFF MOHAMED, DIRECTOR, ARCHITECTURE AT GOLFNOW" >}}
"With our growth we obviously needed to expand our infrastructure, and we kept growing vertically rather than horizontally. We were basically wasting money and doubling the cost of our infrastructure."
{{< /case-studies/quote >}}
{{< case-studies/lead >}}
It's not every day that you can say you've slashed an operating expense by half.
{{< /case-studies/lead >}}
<div class="banner2">
<div class="banner2text">
"With our growth we obviously needed to expand our infrastructure, and we kept growing vertically rather than horizontally. We were basically wasting money and doubling the cost of our infrastructure."<br><br><span style="font-size:15px;letter-spacing:0.08em">- SHERIFF MOHAMED, DIRECTOR, ARCHITECTURE AT GOLFNOW</span>
</div>
</div>
<p>But Sheriff Mohamed and Josh Chandler did just that when they helped lead their company, <a href="https://www.golfnow.com/">GolfNow</a>, on a journey from a monolithic to a containerized, cloud native infrastructure managed by Kubernetes.</p>
<section class="section2">
<div class="fullcol">
<h2>Its not every day that you can say youve slashed an operating expense by half.</h2>
<p>A top-performing business within the NBC Sports Group, GolfNow is a technology and services company with the largest tee time marketplace in the world. GolfNow serves 5 million active golfers across 10 different products. In recent years, the business had grown so fast that the infrastructure supporting their giant monolithic application (written in C#.NET and backed by SQL Server database management system) could not keep up. "With our growth we obviously needed to expand our infrastructure, and we kept growing vertically rather than horizontally," says Sheriff, GolfNow's Director, Architecture. "Our costs were growing exponentially. And on top of that, we had to build a Disaster Recovery (DR) environment, which then meant we'd have to copy exactly what we had in our original data center to another data center that was just the standby. We were basically wasting money and doubling the cost of our infrastructure."</p>
But Sheriff Mohamed and Josh Chandler did just that when they helped lead their company, <a href="https://www.golfnow.com/">GolfNow</a>, on a journey from a monolithic to a containerized, cloud native infrastructure managed by Kubernetes.
<br> <br>
A top-performing business within the NBC Sports Group, GolfNow is a technology and services company with the largest tee time marketplace in the world. GolfNow serves 5 million active golfers across 10 different products. In recent years, the business had grown so fast that the infrastructure supporting their giant monolithic application (written in C#.NET and backed by SQL Server database management system) could not keep up. "With our growth we obviously needed to expand our infrastructure, and we kept growing vertically rather than horizontally," says Sheriff, GolfNows Director, Architecture. "Our costs were growing exponentially. And on top of that, we had to build a Disaster Recovery (DR) environment, which then meant wed have to copy exactly what we had in our original data center to another data center that was just the standby. We were basically wasting money and doubling the cost of our infrastructure."
<br> <br>
In moving just the first of GolfNows important applications—a booking engine for golf courses and B2B marketing platform—from third-party services to their own Kubernetes environment, "our bill went down drastically," says Sheriff.
<br> <br>
The path to those stellar results began in late 2014. In order to support GolfNows global growth, the team decided that the company needed to have multiple data centers and the ability to quickly and easily re-route traffic as needed. "From there we knew that we needed to go in a direction of breaking things apart, microservices, and containerization," says Sheriff. "At the time we were trying to get away from <a href="https://www.microsoft.com/net">C#.NET</a> and <a href="https://www.microsoft.com/en-cy/sql-server/sql-server-2016">SQL Server</a> since it didnt run very well on Linux, where everything container was running smoothly."
<br> <br>
To that end, the team shifted to working with <a href="https://nodejs.org/">Node.js</a>, the open-source, cross-platform JavaScript runtime environment for developing tools and applications, and <a href="https://www.mongodb.com/">MongoDB</a>, the open-source database program. At the time, <a href="https://www.docker.com/">Docker</a>, the platform for deploying applications in containers, was still new. But once the team began experimenting with it, Sheriff says, "we realized that was the way we wanted to go, especially since thats the way the industry is heading."
</div>
</section>
<p>In moving just the first of GolfNow's important applications—a booking engine for golf courses and B2B marketing platform—from third-party services to their own Kubernetes environment, "our bill went down drastically," says Sheriff.</p>
<div class="banner3">
<div class="banner3text">
"The team migrated the rest of the application into their Kubernetes cluster. And the impact was immediate: On top of cutting monthly costs by a large percentage, says Sheriff, 'Running at the same capacity and during our peak time, we were able to horizontally grow. Since we were using our VMs more efficiently with containers, we didnt have to pay extra money at all.'"
</div>
</div>
<p>The path to those stellar results began in late 2014. In order to support GolfNow's global growth, the team decided that the company needed to have multiple data centers and the ability to quickly and easily re-route traffic as needed. "From there we knew that we needed to go in a direction of breaking things apart, microservices, and containerization," says Sheriff. "At the time we were trying to get away from <a href="https://www.microsoft.com/net">C#.NET</a> and <a href="https://www.microsoft.com/en-cy/sql-server/sql-server-2016">SQL Server</a> since it didn't run very well on Linux, where everything container was running smoothly."</p>
<section class="section3">
<div class="fullcol">
GolfNows dev team ran an "internal, low-key" proof of concept and were won over. "We really liked how easy it was to be able to pass containers around to each other and have them up and running in no time, exactly the way it was running on my machine," says Sheriff. "Because that is always the biggest gripe that Ops has with developers, right? It worked on my machine! But then we started getting to the point of, How do we make sure that these things stay up and running?" <br><br>
That led the team on a quest to find the right orchestration system for the companys needs. Sheriff says the first few options they tried were either too heavy or "didnt feel quite right." In late summer 2015, they discovered the just-released <a href="http://kubernetes.io/">Kubernetes</a>, which Sheriff immediately liked for its ease of use. "We did another proof of concept," he says, "and Kubernetes won because of the fact that the community backing was there, built on top of what Google had already done."
<br><br>
But before they could go with Kubernetes, <a href="http://www.nbc.com/">NBC</a>, GolfNows parent company, also asked them to comparison shop with another company. Sheriff and his team liked the competing companys platform user interface, but didnt like that its platform would not allow containers to run natively on Docker. With no clear decision in sight, Sheriffs VP at GolfNow, Steve McElwee, set up a three-month trial during which a GolfNow team (consisting of Sheriff and Josh, whos now Lead Architect, Open Platforms) would build out a Kubernetes environment, and a large NBC team would build out one with the other companys platform.
<br><br>
"We spun up the cluster and we tried to get everything to run the way we wanted it to run," Sheriff says. "The biggest thing that we took away from it is that not only did we want our applications to run within Kubernetes and Docker, we also wanted our databases to run there. We literally wanted our entire infrastructure to run within Kubernetes."
<br><br>
At the time there was nothing in the community to help them get Kafka and MongoDB clusters running within a Kubernetes and Docker environment, so Sheriff and Josh figured it out on their own, taking a full month to get it right. "Everything started rolling from there," Sheriff says. "We were able to get all our applications connected, and we finished our side of the proof of concept a month in advance. My VP was like, Alright, its over. Kubernetes wins."
<br><br>
The next step, beginning in January 2016, was getting everything working in production. The team focused first on one application that was already written in Node.js and MongoDB. A booking engine for golf courses and B2B marketing platform, the application was already going in the microservice direction but wasnt quite finished yet. At the time, it was running in <a href="https://devcenter.heroku.com/articles/mongohq">Heroku Compose</a> and other third-party services—resulting in a large monthly bill.
<p>To that end, the team shifted to working with <a href="https://nodejs.org/">Node.js</a>, the open-source, cross-platform JavaScript runtime environment for developing tools and applications, and <a href="https://www.mongodb.com/">MongoDB</a>, the open-source database program. At the time, <a href="https://www.docker.com/">Docker</a>, the platform for deploying applications in containers, was still new. But once the team began experimenting with it, Sheriff says, "we realized that was the way we wanted to go, especially since that's the way the industry is heading."</p>
</div>
</section>
{{< case-studies/quote image="/images/case-studies/golfnow/banner3.jpg" >}}
"The team migrated the rest of the application into their Kubernetes cluster. And the impact was immediate: On top of cutting monthly costs by a large percentage, says Sheriff, 'Running at the same capacity and during our peak time, we were able to horizontally grow. Since we were using our VMs more efficiently with containers, we didn't have to pay extra money at all.'"
{{< /case-studies/quote >}}
<div class="banner4">
<div class="banner4text">
"'The time I spent actually moving the applications was under 30 seconds! We can move data centers in just incredible amounts of time. If you havent come from the Kubernetes world you wouldnt believe me.' Sheriff puts it in these terms: 'Before Kubernetes I wasnt sleeping at night, literally. I was woken up all the time, because things were down. After Kubernetes, Ive been sleeping at night.'"
</div>
</div>
<p>GolfNow's dev team ran an "internal, low-key" proof of concept and were won over. "We really liked how easy it was to be able to pass containers around to each other and have them up and running in no time, exactly the way it was running on my machine," says Sheriff. "Because that is always the biggest gripe that Ops has with developers, right? 'It worked on my machine!' But then we started getting to the point of, 'How do we make sure that these things stay up and running?'"</p>
<section class="section4">
<div class="fullcol">
"The goal was to take all of that out and put it within this new platform weve created with Kubernetes on <a href="https://cloud.google.com/compute/">Google Compute Engine (GCE)</a>," says Sheriff. "So we ended up building piece by piece, in parallel, what was out in Heroku and Compose, in our Kubernetes cluster. Then, literally, just switched configs in the background. So in Heroku we had the app running hitting a Compose database. Wed take the config, change it and make it hit the database that was running in our cluster."
<br><br>
Using this procedure, they were able to migrate piecemeal, without any downtime. The first migration was done during off hours, but to test the limits, the team migrated the second database in the middle of the day, when lots of users were running the application. "We did it," Sheriff says, "and again it was successful. Nobody noticed."
<br><br>
After three weeks of monitoring to make sure everything was running stable, the team migrated the rest of the application into their Kubernetes cluster. And the impact was immediate: On top of cutting monthly costs by a large percentage, says Sheriff, "Running at the same capacity and during our peak time, we were able to horizontally grow. Since we were using our VMs more efficiently with containers, we didnt have to pay extra money at all."
<br><br>
Not only were they saving money, but they were also saving time. "I had a meeting this morning about migrating some applications from one cluster to another," says Josh. "I spent about 2 hours explaining the process. The time I spent actually moving the applications was under 30 seconds! We can move data centers in just incredible amounts of time. If you havent come from the Kubernetes world you wouldnt believe me." Sheriff puts it in these terms: "Before Kubernetes I wasnt sleeping at night, literally. I was woken up all the time, because things were down. After Kubernetes, Ive been sleeping at night."
<br><br>
A small percentage of the applications on GolfNow have been migrated over to the Kubernetes environment. "Our Core Team is rewriting a lot of the .NET applications into <a href="https://www.microsoft.com/net/core">.NET Core</a> [which is compatible with Linux and Docker] so that we can run them within containers," says Sheriff.
<br><br>
Looking ahead, Sheriff and his team want to spend 2017 continuing to build a whole platform around Kubernetes with <a href="https://github.com/drone/drone">Drone</a>, an open-source continuous delivery platform, to make it more developer-centric. "Now theyre able to manage configuration, theyre able to manage their deployments and things like that, making all these subteams that are now creating all these microservices, be self sufficient," he says. "So it can pull us away from applications and allow us to just make sure the cluster is running and healthy, and then actually migrate that over to our Ops team."
<p>That led the team on a quest to find the right orchestration system for the company's needs. Sheriff says the first few options they tried were either too heavy or "didn't feel quite right." In late summer 2015, they discovered the just-released <a href="http://kubernetes.io/">Kubernetes</a>, which Sheriff immediately liked for its ease of use. "We did another proof of concept," he says, "and Kubernetes won because of the fact that the community backing was there, built on top of what Google had already done."</p>
</div>
</section>
<p>But before they could go with Kubernetes, <a href="http://www.nbc.com/">NBC</a>, GolfNow's parent company, also asked them to comparison shop with another company. Sheriff and his team liked the competing company's platform user interface, but didn't like that its platform would not allow containers to run natively on Docker. With no clear decision in sight, Sheriff's VP at GolfNow, Steve McElwee, set up a three-month trial during which a GolfNow team (consisting of Sheriff and Josh, who's now Lead Architect, Open Platforms) would build out a Kubernetes environment, and a large NBC team would build out one with the other company's platform.</p>
<div class="banner5">
<div class="banner5text">
"Having gone from complete newbies to production-ready in three months, the GolfNow team is eager to encourage other companies to follow their lead. 'This is The Six Million Dollar Man of the cloud right now,' adds Josh. 'Just try it out, watch it happen. I feel like the proof is in the pudding when you look at these kinds of application stacks. Theyre faster, theyre more resilient.'"
</div>
</div>
<p>"We spun up the cluster and we tried to get everything to run the way we wanted it to run," Sheriff says. "The biggest thing that we took away from it is that not only did we want our applications to run within Kubernetes and Docker, we also wanted our databases to run there. We literally wanted our entire infrastructure to run within Kubernetes."</p>
<section class="section5">
<div class="fullcol">
And long-term, Sheriff has an even bigger goal for getting more people into the Kubernetes fold. "Were actually trying to make this platform generic enough so that any of our sister companies can use it if they wish," he says. "Most definitely I think it can be used as a model. I think the way we migrated into it, the way we built it out, are all ways that I think other companies can learn from, and should not be afraid of."
<br><br>
The GolfNow team is also giving back to the Kubernetes community by open-sourcing a bot framework that Josh built. "We noticed that the dashboard user interface is actually moving a lot faster than when we started," says Sheriff. "However we realized what we needed was something thats more of a bot that really helps us administer Kubernetes as a whole through Slack." Josh explains: "With the Kubernetes-Slack integration, you can essentially hook into a cluster and the issue commands and edit configurations. Weve tried to simplify the security configuration as much as possible. We hope this will be our major thank you to Kubernetes, for everything youve given us."
<br><br>
Having gone from complete newbies to production-ready in three months, the GolfNow team is eager to encourage other companies to follow their lead. The lessons theyve learned: "Youve got to have buy-in from your boss," says Sheriff. "Another big deal is having two to three people dedicated to this type of endeavor. You cant have people who are half in, half out." And if you dont have buy-in from the get go, proving it out will get you there.
<br><br>
"This is The Six Million Dollar Man of the cloud right now," adds Josh. "Just try it out, watch it happen. I feel like the proof is in the pudding when you look at these kinds of application stacks. Theyre faster, theyre more resilient."
<p>At the time there was nothing in the community to help them get Kafka and MongoDB clusters running within a Kubernetes and Docker environment, so Sheriff and Josh figured it out on their own, taking a full month to get it right. "Everything started rolling from there," Sheriff says. "We were able to get all our applications connected, and we finished our side of the proof of concept a month in advance. My VP was like, 'Alright, it's over. Kubernetes wins.'"</p>
</div>
</section>
<p>The next step, beginning in January 2016, was getting everything working in production. The team focused first on one application that was already written in Node.js and MongoDB. A booking engine for golf courses and B2B marketing platform, the application was already going in the microservice direction but wasn't quite finished yet. At the time, it was running in <a href="https://devcenter.heroku.com/articles/mongohq">Heroku Compose</a> and other third-party services—resulting in a large monthly bill.</p>
{{< case-studies/quote image="/images/case-studies/golfnow/banner4.jpg" >}}
"'The time I spent actually moving the applications was under 30 seconds! We can move data centers in just incredible amounts of time. If you haven't come from the Kubernetes world you wouldn't believe me.' Sheriff puts it in these terms: 'Before Kubernetes I wasn't sleeping at night, literally. I was woken up all the time, because things were down. After Kubernetes, I've been sleeping at night.'"
{{< /case-studies/quote >}}
<p>"The goal was to take all of that out and put it within this new platform we've created with Kubernetes on <a href="https://cloud.google.com/compute/">Google Compute Engine (GCE)</a>," says Sheriff. "So we ended up building piece by piece, in parallel, what was out in Heroku and Compose, in our Kubernetes cluster. Then, literally, just switched configs in the background. So in Heroku we had the app running hitting a Compose database. We'd take the config, change it and make it hit the database that was running in our cluster."</p>
<p>Using this procedure, they were able to migrate piecemeal, without any downtime. The first migration was done during off hours, but to test the limits, the team migrated the second database in the middle of the day, when lots of users were running the application. "We did it," Sheriff says, "and again it was successful. Nobody noticed."</p>
<p>After three weeks of monitoring to make sure everything was running stable, the team migrated the rest of the application into their Kubernetes cluster. And the impact was immediate: On top of cutting monthly costs by a large percentage, says Sheriff, "Running at the same capacity and during our peak time, we were able to horizontally grow. Since we were using our VMs more efficiently with containers, we didn't have to pay extra money at all."</p>
<p>Not only were they saving money, but they were also saving time. "I had a meeting this morning about migrating some applications from one cluster to another," says Josh. "I spent about 2 hours explaining the process. The time I spent actually moving the applications was under 30 seconds! We can move data centers in just incredible amounts of time. If you haven't come from the Kubernetes world you wouldn't believe me." Sheriff puts it in these terms: "Before Kubernetes I wasn't sleeping at night, literally. I was woken up all the time, because things were down. After Kubernetes, I've been sleeping at night."</p>
<p>A small percentage of the applications on GolfNow have been migrated over to the Kubernetes environment. "Our Core Team is rewriting a lot of the .NET applications into <a href="https://www.microsoft.com/net/core">.NET Core</a> [which is compatible with Linux and Docker] so that we can run them within containers," says Sheriff.</p>
<p>Looking ahead, Sheriff and his team want to spend 2017 continuing to build a whole platform around Kubernetes with <a href="https://github.com/drone/drone">Drone</a>, an open-source continuous delivery platform, to make it more developer-centric. "Now they're able to manage configuration, they're able to manage their deployments and things like that, making all these subteams that are now creating all these microservices, be self sufficient," he says. "So it can pull us away from applications and allow us to just make sure the cluster is running and healthy, and then actually migrate that over to our Ops team."</p>
{{< case-studies/quote >}}
"Having gone from complete newbies to production-ready in three months, the GolfNow team is eager to encourage other companies to follow their lead. 'This is The Six Million Dollar Man of the cloud right now,' adds Josh. 'Just try it out, watch it happen. I feel like the proof is in the pudding when you look at these kinds of application stacks. They're faster, they're more resilient.'"
{{< /case-studies/quote >}}
<p>And long-term, Sheriff has an even bigger goal for getting more people into the Kubernetes fold. "We're actually trying to make this platform generic enough so that any of our sister companies can use it if they wish," he says. "Most definitely I think it can be used as a model. I think the way we migrated into it, the way we built it out, are all ways that I think other companies can learn from, and should not be afraid of."</p>
<p>The GolfNow team is also giving back to the Kubernetes community by open-sourcing a bot framework that Josh built. "We noticed that the dashboard user interface is actually moving a lot faster than when we started," says Sheriff. "However we realized what we needed was something that's more of a bot that really helps us administer Kubernetes as a whole through Slack." Josh explains: "With the Kubernetes-Slack integration, you can essentially hook into a cluster and the issue commands and edit configurations. We've tried to simplify the security configuration as much as possible. We hope this will be our major thank you to Kubernetes, for everything you've given us."</p>
<p>Having gone from complete newbies to production-ready in three months, the GolfNow team is eager to encourage other companies to follow their lead. The lessons they've learned: "You've got to have buy-in from your boss," says Sheriff. "Another big deal is having two to three people dedicated to this type of endeavor. You can't have people who are half in, half out." And if you don't have buy-in from the get go, proving it out will get you there.</p>
<p>"This is The Six Million Dollar Man of the cloud right now," adds Josh. "Just try it out, watch it happen. I feel like the proof is in the pudding when you look at these kinds of application stacks. They're faster, they're more resilient."</p>
+59 -86
View File
@@ -1,112 +1,85 @@
---
title: Haufe Group Case Study
case_study_styles: true
cid: caseStudies
css: /css/style_haufegroup.css
new_case_study_styles: true
heading_background: /images/case-studies/haufegroup/banner1.jpg
heading_title_logo: /images/haufegroup_logo.png
subheading: >
Paving the Way for Cloud Native for Midsize Companies
case_study_details:
- Company: Haufe Group
- Location: Freiburg, Germany
- Industry: Media and Software
---
<h2>Challenge</h2>
<div class="banner1">
<h1> CASE STUDY:<img src="/images/haufegroup_logo.png" class="header_logo"><br> <div class="subhead">Paving the Way for Cloud Native for Midsize Companies</div></h1>
<p>Founded in 1930 as a traditional publisher, Haufe Group has grown into a media and software company with 95 percent of its sales from digital products. Over the years, the company has gone from having "hardware in the basement" to outsourcing its infrastructure operations and IT. More recently, the development of new products, from Internet portals for tax experts to personnel training software, has created demands for increased speed, reliability and scalability. "We need to be able to move faster," says Solution Architect Martin Danielsson. "Adapting workloads is something that we really want to be able to do."</p>
</div>
<h2>Solution</h2>
<p>Haufe Group began its cloud-native journey when <a href="https://azure.microsoft.com/">Microsoft Azure</a> became available in Europe; the company needed cloud deployments for its desktop apps with bandwidth-heavy download services. "After that, it has been different projects trying out different things," says Danielsson. Two years ago, Holger Reinhardt joined Haufe Group as CTO and rapidly re-oriented the traditional host provider-based approach toward a cloud and API-first strategy.</p>
<div class="details">
Company &nbsp;<b>Haufe Group</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Freiburg, Germany</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Media and Software</b>
</div>
<p>A core part of this strategy was a strong mandate to embrace infrastructure-as-code across the entire software deployment lifecycle via Docker. The company is now getting ready to go live with two services in production using <a href="https://kubernetes.io/">Kubernetes</a> orchestration on <a href="https://azure.microsoft.com/">Microsoft Azure</a> and <a href="https://aws.amazon.com/">Amazon Web Services</a>. The team is also working on breaking up one of their core Java Enterprise desktop products into microservices to allow for better evolvability and dynamic scaling in the cloud.</p>
<hr>
<section class="section1">
<div class="cols">
<div class="col1">
<h2>Challenge</h2>
Founded in 1930 as a traditional publisher, Haufe Group has grown into a media and software company with 95 percent of its sales from digital products. Over the years, the company has gone from having "hardware in the basement" to outsourcing its infrastructure operations and IT. More recently, the development of new products, from Internet portals for tax experts to personnel training software, has created demands for increased speed, reliability and scalability. "We need to be able to move faster," says Solution Architect Martin Danielsson. "Adapting workloads is something that we really want to be able to do."
<br>
<br>
<h2>Solution</h2>
Haufe Group began its cloud-native journey when <a href="https://azure.microsoft.com/">Microsoft Azure</a> became available in Europe; the company needed cloud deployments for its desktop apps with bandwidth-heavy download services. "After that, it has been different projects trying out different things," says Danielsson. Two years ago, Holger Reinhardt joined Haufe Group as CTO and rapidly re-oriented the traditional host provider-based approach toward a cloud and API-first strategy.
</div>
<div class="col2">
A core part of this strategy was a strong mandate to embrace infrastructure-as-code across the entire software deployment lifecycle via Docker. The company is now getting ready to go live with two services in production using <a href="https://kubernetes.io/">Kubernetes</a> orchestration on <a href="https://azure.microsoft.com/">Microsoft Azure</a> and <a href="https://aws.amazon.com/">Amazon Web Services</a>. The team is also working on breaking up one of their core Java Enterprise desktop products into microservices to allow for better evolvability and dynamic scaling in the cloud.
<br>
<br>
<h2>Impact</h2>
With the ability to adapt workloads, Danielsson says, teams "will be able to scale down to around half the capacity at night, saving 30 percent of the hardware cost." Plus, shorter release times have had a major impact. "Before, we had to announce at least a week in advance when we wanted to do a release because there was a huge checklist of things that you had to do," he says. "By going cloud native, we have the infrastructure in place to be able to automate all of these things. Now we can get a new release done in half an hour instead of days."
<p>With the ability to adapt workloads, Danielsson says, teams "will be able to scale down to around half the capacity at night, saving 30 percent of the hardware cost." Plus, shorter release times have had a major impact. "Before, we had to announce at least a week in advance when we wanted to do a release because there was a huge checklist of things that you had to do," he says. "By going cloud native, we have the infrastructure in place to be able to automate all of these things. Now we can get a new release done in half an hour instead of days."</p>
</div>
</div>
{{< case-studies/quote author="Martin Danielsson, Solution Architect, Haufe Group" >}}
"Over the next couple of years, people won't even think that much about it when they want to run containers. Kubernetes is going to be the go-to solution."
{{< /case-studies/quote >}}
</section>
{{< case-studies/lead >}}
More than 80 years ago, Haufe Group was founded as a traditional publishing company, printing books and commentary on paper.
{{< /case-studies/lead >}}
<div class="banner2">
<div class="banner2text">
"Over the next couple of years, people wont even think that much about it when they want to run containers. Kubernetes is going to be the go-to solution."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Martin Danielsson, Solution Architect, Haufe Group</span>
</div>
</div>
<p>By the 1990s, though, the company's leaders recognized that the future was digital, and to their credit, were able to transform Haufe Group into a media and software business that now gets 95 percent of its sales from digital products. "Among the German companies doing this, we were one of the early adopters," says Martin Danielsson, Solution Architect for Haufe Group.</p>
<section class="section2">
<p>And now they're leading the way for midsize companies embracing cloud-native technology like Kubernetes. "The really big companies like Ticketmaster and Google get it right, and the startups get it right because they're faster," says Danielsson. "We're in this big lump of companies in the middle with a lot of legacy, a lot of structure, a lot of culture that does not easily fit the cloud technologies. We're just 1,500 people, but we have hundreds of customer-facing applications. So we're doing things that will be relevant for many companies of our size or even smaller."</p>
<div class="fullcol">
<h2>More than 80 years ago, Haufe Group was founded as a traditional publishing company, printing books and commentary on paper.</h2> By the 1990s, though, the companys leaders recognized that the future was digital, and to their credit, were able to transform Haufe Group into a media and software business that now gets 95 percent of its sales from digital products. "Among the German companies doing this, we were one of the early adopters," says Martin Danielsson, Solution Architect for Haufe Group.<br><br>
And now theyre leading the way for midsize companies embracing cloud-native technology like Kubernetes. "The really big companies like Ticketmaster and Google get it right, and the startups get it right because theyre faster," says Danielsson. "Were in this big lump of companies in the middle with a lot of legacy, a lot of structure, a lot of culture that does not easily fit the cloud technologies. Were just 1,500 people, but we have hundreds of customer-facing applications. So were doing things that will be relevant for many companies of our size or even smaller."<br><br>
Many of those legacy challenges stemmed from simply following the technology trends of the times. "We used to do full DevOps," he says. In the 1990s and 2000s, "that meant that you had your hardware in the basement. And then 10 years ago, the hype of the moment was to outsource application operations, outsource everything, and strip down your IT department to take away the distraction of all these hardware things. Thats not our area of expertise. We didnt want to be an infrastructure provider. And now comes the backlash of that."<br><br>
Haufe Group began feeling the pain as they were developing more new products, from Internet portals for tax experts to personnel training software, that have created demands for increased speed, reliability and scalability. "Right now, we have this break in workflows, where we go from writing concepts to developing, handing it over to production and then handing that over to your host provider," he says. "And then when things go bad we have no clue what went wrong. We definitely want to take back control, and we want to move a lot faster. Adapting workloads is something that we really want to be able to do."<br><br>
Those needs led them to explore cloud-native technology. Their first foray into the cloud was doing deployments in <a href="https://azure.microsoft.com/">Microsoft Azure</a>, once it became available in Europe, for desktop products that had built-in download services. Hosting expenses for such bandwidth-heavy services were too high, so the company turned to the cloud. "After that, it has been different projects trying out different things," says Danielsson.
</div>
</section>
<p>Many of those legacy challenges stemmed from simply following the technology trends of the times. "We used to do full DevOps," he says. In the 1990s and 2000s, "that meant that you had your hardware in the basement. And then 10 years ago, the hype of the moment was to outsource application operations, outsource everything, and strip down your IT department to take away the distraction of all these hardware things. That's not our area of expertise. We didn't want to be an infrastructure provider. And now comes the backlash of that."</p>
<div class="banner3">
<div class="banner3text">
"We have been doing containers for the last two years, and we really got the hang of how they work," says Danielsson. "But it was always for development and test, never in production, because we didnt fully understand how that would work. And to me, Kubernetes was definitely the technology that solved that."
</div>
</div>
<p>Haufe Group began feeling the pain as they were developing more new products, from Internet portals for tax experts to personnel training software, that have created demands for increased speed, reliability and scalability. "Right now, we have this break in workflows, where we go from writing concepts to developing, handing it over to production and then handing that over to your host provider," he says. "And then when things go bad we have no clue what went wrong. We definitely want to take back control, and we want to move a lot faster. Adapting workloads is something that we really want to be able to do."</p>
<section class="section3">
<div class="fullcol">
<p>Those needs led them to explore cloud-native technology. Their first foray into the cloud was doing deployments in <a href="https://azure.microsoft.com/">Microsoft Azure</a>, once it became available in Europe, for desktop products that had built-in download services. Hosting expenses for such bandwidth-heavy services were too high, so the company turned to the cloud. "After that, it has been different projects trying out different things," says Danielsson.</p>
Two years ago, Holger Reinhardt joined Haufe Group as CTO and rapidly re-oriented the traditional host provider-based approach toward a cloud and API-first strategy. A core part of this strategy was a strong mandate to embrace infrastructure-as-code across the entire software deployment lifecycle via Docker.
Some experiments went further than others; German regulations about sensitive data proved to be a road block in moving some workloads to Azure and Amazon Web Services. "Due to our history, Germany is really strict with things like personally identifiable data," Danielsson says.<br><br>
These experiments took on new life with the arrival of the Azure Sovereign Cloud for Germany (an Azure clone run by the German T-Systems provider). With the availability of Azure.de—which conforms to Germanys privacy regulations—teams started to seriously consider deploying production loads in Docker into the cloud. "We have been doing containers for the last two years, and we really got the hang of how they work," says Danielsson. "But it was always for development and test, never in production, because we didnt fully understand how that would work. And to me, Kubernetes was definitely the technology that solved that."<br><br>
In parallel, Danielsson had built an API management system with the aim of supporting CI/CD scenarios, aspects of which were missing in off-the-shelf API management products. With a foundation based on <a href="https://getkong.org/">Mashapes Kong</a> gateway, it is open-sourced as <a href="http://wicked.haufe.io/">wicked.haufe.io</a>. He put wicked.haufe.io to use with his product team.<br><br> Otherwise, Danielsson says his philosophy was "dont try to reinvent the wheel all the time. Go for whats there and 99 percent of the time it will be enough. And if you think you really need something custom or additional, think perhaps once or twice again. One of the things that I find so amazing with this cloud-native framework is that everything ties in."<br><br>
Currently, Haufe Group is working on two projects using Kubernetes in production. One is a new mobile application for researching legislation and tax laws. "We needed a way to take out functionality from a legacy core and put an application on top of that with an API gateway—a lot of moving parts that screams containers," says Danielsson. So the team moved the build pipeline away from "deploying to some old, huge machine that you could deploy anything to" and onto a Kubernetes cluster where there would be automatic CI/CD "with feature branches and all these things that were a bit tedious in the past."
</div>
</section>
{{< case-studies/quote image="/images/case-studies/haufegroup/banner3.jpg" >}}
"We have been doing containers for the last two years, and we really got the hang of how they work," says Danielsson. "But it was always for development and test, never in production, because we didn't fully understand how that would work. And to me, Kubernetes was definitely the technology that solved that."
{{< /case-studies/quote >}}
<div class="banner4">
<div class="banner4text">
"Before, we had to announce at least a week in advance when we wanted to do a release because there was a huge checklist of things that you had to do," says Danielsson. "By going cloud native, we have the infrastructure in place to be able to automate all of these things. Now we can get a new release done in half an hour instead of days."
</div>
</div>
<p>Two years ago, Holger Reinhardt joined Haufe Group as CTO and rapidly re-oriented the traditional host provider-based approach toward a cloud and API-first strategy. A core part of this strategy was a strong mandate to embrace infrastructure-as-code across the entire software deployment lifecycle via Docker. Some experiments went further than others; German regulations about sensitive data proved to be a road block in moving some workloads to Azure and Amazon Web Services. "Due to our history, Germany is really strict with things like personally identifiable data," Danielsson says.</p>
<section class="section4">
<div class="fullcol">
It was a proof of concept effort, and the proof was in the pudding. "Everyone was really impressed at what we accomplished in a week," says Danielsson. "We did these kinds of integrations just to make sure that we got a handle on how Kubernetes works. If you can create optimism and buzz around something, its half won. And if the developers and project managers know this is working, youre more or less done." Adds Reinhardt: "You need to create some very visible, quick wins in order to overcome the status quo."<br><br>
The impact on the speed of deployment was clear: "Before, we had to announce at least a week in advance when we wanted to do a release because there was a huge checklist of things that you had to do," says Danielsson. "By going cloud native, we have the infrastructure in place to be able to automate all of these things. Now we can get a new release done in half an hour instead of days." <br><br>
The potential impact on cost was another bonus. "Hosting applications is quite expensive, so moving to the cloud is something that we really want to be able to do," says Danielsson. With the ability to adapt workloads, teams "will be able to scale down to around half the capacity at night, saving 30 percent of the hardware cost." <br><br>
Just as importantly, Danielsson says, theres added flexibility: "When we try to move or rework applications that are really crucial, its often tricky to validate whether the path we want to take is going to work out well. In order to validate that, we would need to reproduce the environment and really do testing, and thats prohibitively expensive and simply not doable with traditional host providers. Cloud native gives us the ability to do risky changes and validate them in a cost-effective way."<br><br>
As word of the two successful test projects spread throughout the company, interest in Kubernetes has grown. "We want to be able to support our developers in running Kubernetes clusters but were not there yet, so we allow them to do it as long as theyre aware that they are on their own," says Danielsson. "So thats why we are also looking at things like [the managed Kubernetes platform] <a href="https://coreos.com/tectonic/">CoreOS Tectonic</a>, <a href="https://azure.microsoft.com/en-us/services/container-service/">Azure Container Service</a>, <a href="https://aws.amazon.com/ecs/">ECS</a>, etc. These kinds of services will be a lot more relevant to midsize companies that want to leverage cloud native but dont have the IT departments or the structure around that."<br><br>
In the next year and a half, Danielsson says the company will be working on moving one of their legacy desktop products, a web app for researching legislation and tax laws originally built in Java Enterprise, onto cloud-native technology. "Were doing a microservice split out right now so that we can independently deploy the different parts," he says. The main website, which provides free content for customers, is also moving to cloud native.
<p>These experiments took on new life with the arrival of the Azure Sovereign Cloud for Germany (an Azure clone run by the German T-Systems provider). With the availability of Azure.de—which conforms to Germany's privacy regulations—teams started to seriously consider deploying production loads in Docker into the cloud. "We have been doing containers for the last two years, and we really got the hang of how they work," says Danielsson. "But it was always for development and test, never in production, because we didn't fully understand how that would work. And to me, Kubernetes was definitely the technology that solved that."</p>
</div>
</section>
<p>In parallel, Danielsson had built an API management system with the aim of supporting CI/CD scenarios, aspects of which were missing in off-the-shelf API management products. With a foundation based on <a href="https://getkong.org/">Mashape's Kong</a> gateway, it is open-sourced as <a href="http://wicked.haufe.io/">wicked.haufe.io</a>. He put wicked.haufe.io to use with his product team.<br><br> Otherwise, Danielsson says his philosophy was "don't try to reinvent the wheel all the time. Go for what's there and 99 percent of the time it will be enough. And if you think you really need something custom or additional, think perhaps once or twice again. One of the things that I find so amazing with this cloud-native framework is that everything ties in."</p>
<div class="banner5">
<div class="banner5text">
"the execution of a strategy requires alignment of culture, structure and technology. Only if those three dimensions are aligned can you successfully execute a transformation into microservices and cloud-native architectures. And it is only then that the Cloud will pay the dividends in much faster speeds in product innovation and much lower operational costs."
<p>Currently, Haufe Group is working on two projects using Kubernetes in production. One is a new mobile application for researching legislation and tax laws. "We needed a way to take out functionality from a legacy core and put an application on top of that with an API gateway—a lot of moving parts that screams containers," says Danielsson. So the team moved the build pipeline away from "deploying to some old, huge machine that you could deploy anything to" and onto a Kubernetes cluster where there would be automatic CI/CD "with feature branches and all these things that were a bit tedious in the past."</p>
</div>
</div>
{{< case-studies/quote image="/images/case-studies/haufegroup/banner4.jpg" >}}
"Before, we had to announce at least a week in advance when we wanted to do a release because there was a huge checklist of things that you had to do," says Danielsson. "By going cloud native, we have the infrastructure in place to be able to automate all of these things. Now we can get a new release done in half an hour instead of days."
{{< /case-studies/quote >}}
<section class="section5">
<div class="fullcol">
But with these goals, Danielsson believes there are bigger cultural challenges that need to be constantly addressed. The move to new technology, not to mention a shift toward DevOps, means a lot of change for employees. "The roles were rather fixed in the past," he says. "You had developers, you had project leads, you had testers. And now you get into these really, really important things like test automation. Testers arent actually doing click testing anymore, and they have to write automated testing. And if you really want to go full-blown CI/CD, all these little pieces have to work together so that you get the confidence to do a check in, and know this check in is going to land in production, because if I messed up, some test is going to break. This is a really powerful thing because whatever you do, whenever you merge something into the trunk or to the master, this is going live. And thats where you either get the people or they run away screaming."
Danielsson understands that it may take some people much longer to get used to the new ways.<br><br>
"Culture is nothing that you can force on people," he says. "You have to live it for yourself. You have to evangelize. You have to show the advantages time and time again: This is how you can do it, this is what you get from it." To that end, his team has scheduled daylong workshops for the staff, bringing in outside experts to talk about everything from API to Devops to cloud. <br><br>
For every person who runs away screaming, many others get drawn in. "Get that foot in the door and make them really interested in this stuff," says Danielsson. "Usually it catches on. We have people you never would have expected chanting, Docker Docker Docker now. Its cool to see them realize that there is a world outside of their Python libraries. Its awesome to see them really work with Kubernetes."<br><br>
Ultimately, Reinhardt says, "the execution of a strategy requires alignment of culture, structure and technology. Only if those three dimensions are aligned can you successfully execute a transformation into microservices and cloud-native architectures. And it is only then that the Cloud will pay the dividends in much faster speeds in product innovation and much lower operational costs."
<p>It was a proof of concept effort, and the proof was in the pudding. "Everyone was really impressed at what we accomplished in a week," says Danielsson. "We did these kinds of integrations just to make sure that we got a handle on how Kubernetes works. If you can create optimism and buzz around something, it's half won. And if the developers and project managers know this is working, you're more or less done." Adds Reinhardt: "You need to create some very visible, quick wins in order to overcome the status quo."</p>
</div>
</section>
<p>The impact on the speed of deployment was clear: "Before, we had to announce at least a week in advance when we wanted to do a release because there was a huge checklist of things that you had to do," says Danielsson. "By going cloud native, we have the infrastructure in place to be able to automate all of these things. Now we can get a new release done in half an hour instead of days."</p>
<p>The potential impact on cost was another bonus. "Hosting applications is quite expensive, so moving to the cloud is something that we really want to be able to do," says Danielsson. With the ability to adapt workloads, teams "will be able to scale down to around half the capacity at night, saving 30 percent of the hardware cost."</p>
<p>Just as importantly, Danielsson says, there's added flexibility: "When we try to move or rework applications that are really crucial, it's often tricky to validate whether the path we want to take is going to work out well. In order to validate that, we would need to reproduce the environment and really do testing, and that's prohibitively expensive and simply not doable with traditional host providers. Cloud native gives us the ability to do risky changes and validate them in a cost-effective way."</p>
<p>As word of the two successful test projects spread throughout the company, interest in Kubernetes has grown. "We want to be able to support our developers in running Kubernetes clusters but we're not there yet, so we allow them to do it as long as they're aware that they are on their own," says Danielsson. "So that's why we are also looking at things like [the managed Kubernetes platform] <a href="https://coreos.com/tectonic/">CoreOS Tectonic</a>, <a href="https://azure.microsoft.com/en-us/services/container-service/">Azure Container Service</a>, <a href="https://aws.amazon.com/ecs/">ECS</a>, etc. These kinds of services will be a lot more relevant to midsize companies that want to leverage cloud native but don't have the IT departments or the structure around that."</p>
<p>In the next year and a half, Danielsson says the company will be working on moving one of their legacy desktop products, a web app for researching legislation and tax laws originally built in Java Enterprise, onto cloud-native technology. "We're doing a microservice split out right now so that we can independently deploy the different parts," he says. The main website, which provides free content for customers, is also moving to cloud native.</p>
{{< case-studies/quote >}}
"the execution of a strategy requires alignment of culture, structure and technology. Only if those three dimensions are aligned can you successfully execute a transformation into microservices and cloud-native architectures. And it is only then that the Cloud will pay the dividends in much faster speeds in product innovation and much lower operational costs."
{{< /case-studies/quote >}}
<p>But with these goals, Danielsson believes there are bigger cultural challenges that need to be constantly addressed. The move to new technology, not to mention a shift toward DevOps, means a lot of change for employees. "The roles were rather fixed in the past," he says. "You had developers, you had project leads, you had testers. And now you get into these really, really important things like test automation. Testers aren't actually doing click testing anymore, and they have to write automated testing. And if you really want to go full-blown CI/CD, all these little pieces have to work together so that you get the confidence to do a check in, and know this check in is going to land in production, because if I messed up, some test is going to break. This is a really powerful thing because whatever you do, whenever you merge something into the trunk or to the master, this is going live. And that's where you either get the people or they run away screaming." Danielsson understands that it may take some people much longer to get used to the new ways.</p>
<p>"Culture is nothing that you can force on people," he says. "You have to live it for yourself. You have to evangelize. You have to show the advantages time and time again: This is how you can do it, this is what you get from it." To that end, his team has scheduled daylong workshops for the staff, bringing in outside experts to talk about everything from API to Devops to cloud.</p>
<p>For every person who runs away screaming, many others get drawn in. "Get that foot in the door and make them really interested in this stuff," says Danielsson. "Usually it catches on. We have people you never would have expected chanting, 'Docker Docker Docker' now. It's cool to see them realize that there is a world outside of their Python libraries. It's awesome to see them really work with Kubernetes."</p>
<p>Ultimately, Reinhardt says, "the execution of a strategy requires alignment of culture, structure and technology. Only if those three dimensions are aligned can you successfully execute a transformation into microservices and cloud-native architectures. And it is only then that the Cloud will pay the dividends in much faster speeds in product innovation and much lower operational costs."</p>
+49 -77
View File
@@ -1,101 +1,73 @@
---
title: Huawei Case Study
case_study_styles: true
cid: caseStudies
css: /css/style_huawei.css
new_case_study_styles: true
heading_background: /images/case-studies/huawei/banner1.jpg
heading_title_logo: /images/huawei_logo.png
subheading: >
Embracing Cloud Native as a User and a Vendor
case_study_details:
- Company: Huawei
- Location: Shenzhen, China
- Industry: Telecommunications Equipment
---
<div class="banner1">
<h1> CASE STUDY:<img src="/images/huawei_logo.png" class="header_logo"><br> <div class="subhead">Embracing Cloud Native as a User and a Vendor</div></h1>
</div>
<h2>Challenge</h2>
<div class="details">
Company &nbsp;<b>Huawei</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Shenzhen, China</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Telecommunications Equipment</b>
</div>
<p>A multinational company that's the largest telecommunications equipment manufacturer in the world, Huawei has more than 180,000 employees. In order to support its fast business development around the globe, <a href="http://www.huawei.com/">Huawei</a> has eight data centers for its internal I.T. department, which have been running 800+ applications in 100K+ VMs to serve these 180,000 users. With the rapid increase of new applications, the cost and efficiency of management and deployment of VM-based apps all became critical challenges for business agility. "It's very much a distributed system so we found that managing all of the tasks in a more consistent way is always a challenge," says Peixin Hou, the company's Chief Software Architect and Community Director for Open Source. "We wanted to move into a more agile and decent practice."</p>
<hr>
<h2>Solution</h2>
<section class="section1">
<p>After deciding to use container technology, Huawei began moving the internal I.T. department's applications to run on <a href="http://kubernetes.io/">Kubernetes</a>. So far, about 30 percent of these applications have been transferred to cloud native.</p>
<div class="cols">
<div class="col1">
<h2>Challenge</h2>
A multinational company thats the largest telecommunications equipment manufacturer in the world, Huawei has more than 180,000 employees. In order to support its fast business development around the globe, <a href="http://www.huawei.com/">Huawei</a> has eight data centers for its internal I.T. department, which have been running 800+ applications in 100K+ VMs to serve these 180,000 users. With the rapid increase of new applications, the cost and efficiency of management and deployment of VM-based apps all became critical challenges for business agility. "Its very much a distributed system so we found that managing all of the tasks in a more consistent way is always a challenge," says Peixin Hou, the companys Chief Software Architect and Community Director for Open Source. "We wanted to move into a more agile and decent practice."
</div>
<div class="col2">
<h2>Solution</h2>
After deciding to use container technology, Huawei began moving the internal I.T. departments applications to run on <a href="http://kubernetes.io/">Kubernetes</a>. So far, about 30 percent of these applications have been transferred to cloud native.
<br>
<br>
<h2>Impact</h2>
"By the end of 2016, Huaweis internal I.T. department managed more than 4,000 nodes with tens of thousands containers using a Kubernetes-based Platform as a Service (PaaS) solution," says Hou. "The global deployment cycles decreased from a week to minutes, and the efficiency of application delivery has been improved 10 fold." For the bottom line, he says, "We also see significant operating expense spending cut, in some circumstances 20-30 percent, which we think is very helpful for our business." Given the results Huawei has had internally and the demand it is seeing externally the company has also built the technologies into <a href="http://developer.huawei.com/ict/en/site-paas">FusionStage™</a>, the PaaS solution it offers its customers.
</div>
</div>
<p>"By the end of 2016, Huawei's internal I.T. department managed more than 4,000 nodes with tens of thousands containers using a Kubernetes-based Platform as a Service (PaaS) solution," says Hou. "The global deployment cycles decreased from a week to minutes, and the efficiency of application delivery has been improved 10 fold." For the bottom line, he says, "We also see significant operating expense spending cut, in some circumstances 20-30 percent, which we think is very helpful for our business." Given the results Huawei has had internally and the demand it is seeing externally the company has also built the technologies into <a href="http://developer.huawei.com/ict/en/site-paas">FusionStage™</a>, the PaaS solution it offers its customers.</p>
</section>
{{< case-studies/quote author="Peixin Hou, chief software architect and community director for open source" >}}
"If you're a vendor, in order to convince your customer, you should use it yourself. Luckily because Huawei has a lot of employees, we can demonstrate the scale of cloud we can build using this technology."
{{< /case-studies/quote >}}
<div class="banner2">
<div class="banner2text">
"If youre a vendor, in order to convince your customer, you should use it yourself. Luckily because Huawei has a lot of employees, we can demonstrate the scale of cloud we can build using this technology."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Peixin Hou, chief software architect and community director for open source</span>
</div>
</div>
<p>Huawei's Kubernetes journey began with one developer. Over two years ago, one of the engineers employed by the networking and telecommunications giant became interested in <a href="http://kubernetes.io/">Kubernetes</a>, the technology for managing application containers across clusters of hosts, and started contributing to its open source community. As the technology developed and the community grew, he kept telling his managers about it.</p>
<section class="section2">
<p>And as fate would have it, at the same time, Huawei was looking for a better orchestration system for its internal enterprise I.T. department, which supports every business flow processing. "We have more than 180,000 employees worldwide, and a complicated internal procedure, so probably every week this department needs to develop some new applications," says Peixin Hou, Huawei's Chief Software Architect and Community Director for Open Source. "Very often our I.T. departments need to launch tens of thousands of containers, with tasks running across thousands of nodes across the world. It's very much a distributed system, so we found that managing all of the tasks in a more consistent way is always a challenge."</p>
<div class="fullcol">
Huaweis Kubernetes journey began with one developer.
Over two years ago, one of the engineers employed by the networking and telecommunications giant became interested in <a href="http://kubernetes.io/">Kubernetes</a>, the technology for managing application containers across clusters of hosts, and started contributing to its open source community. As the technology developed and the community grew, he kept telling his managers about it.<br><br>
And as fate would have it, at the same time, Huawei was looking for a better orchestration system for its internal enterprise I.T. department, which supports every business flow processing. "We have more than 180,000 employees worldwide, and a complicated internal procedure, so probably every week this department needs to develop some new applications," says Peixin Hou, Huaweis Chief Software Architect and Community Director for Open Source. "Very often our I.T. departments need to launch tens of thousands of containers, with tasks running across thousands of nodes across the world. Its very much a distributed system, so we found that managing all of the tasks in a more consistent way is always a challenge."<br><br>
In the past, Huawei had used virtual machines to encapsulate applications, but "every time when we start a VM," Hou says, "whether because its a new service or because it was a service that was shut down because of some abnormal node functioning, it takes a lot of time." Huawei turned to containerization, so the timing was right to try Kubernetes. It took a year to adopt that engineers suggestion the process "is not overnight," says Hou but once in use, he says, "Kubernetes basically solved most of our problems. Before, the time of deployment took about a week, now it only takes minutes. The developers are happy. That department is also quite happy."<br><br>
Hou sees great benefits to the company that come with using this technology: "Kubernetes brings agility, scale-out capability, and DevOps practice to the cloud-based applications," he says. "It provides us with the ability to customize the scheduling architecture, which makes possible the affinity between container tasks that gives greater efficiency. It supports multiple container formats. It has extensive support for various container networking solutions and container storage."
</div>
</section>
<p>In the past, Huawei had used virtual machines to encapsulate applications, but "every time when we start a VM," Hou says, "whether because it's a new service or because it was a service that was shut down because of some abnormal node functioning, it takes a lot of time." Huawei turned to containerization, so the timing was right to try Kubernetes. It took a year to adopt that engineer's suggestion the process "is not overnight," says Hou but once in use, he says, "Kubernetes basically solved most of our problems. Before, the time of deployment took about a week, now it only takes minutes. The developers are happy. That department is also quite happy."</p>
<div class="banner3">
<div class="banner3text">
"Kubernetes basically solved most of our problems. Before, the time of deployment took about a week, now it only takes minutes. The developers are happy. That department is also quite happy."
</div>
</div>
<p>Hou sees great benefits to the company that come with using this technology: "Kubernetes brings agility, scale-out capability, and DevOps practice to the cloud-based applications," he says. "It provides us with the ability to customize the scheduling architecture, which makes possible the affinity between container tasks that gives greater efficiency. It supports multiple container formats. It has extensive support for various container networking solutions and container storage."</p>
<section class="section3">
<div class="fullcol">
And not least of all, theres an impact on the bottom line. Says Hou: "We also see significant operating expense spending cut in some circumstances 20-30 percent, which is very helpful for our business."<br><br>
Pleased with those initial results, and seeing a demand for cloud native technologies from its customers, Huawei doubled down on Kubernetes. In the spring of 2016, the company became not only a user but also a vendor.<br><br>
"We built the Kubernetes technologies into our solutions," says Hou, referring to Huaweis <a href="http://developer.huawei.com/ict/en/site-paas">FusionStage™</a> PaaS offering. "Our customers, from very big telecommunications operators to banks, love the idea of cloud native. They like Kubernetes technology. But they need to spend a lot of time to decompose their applications to turn them into microservice architecture, and as a solution provider, we help them. Weve started to work with some Chinese banks, and we see a lot of interest from our customers like <a href="http://www.chinamobileltd.com/">China Mobile</a> and <a href="https://www.telekom.com/en">Deutsche Telekom</a>."<br><br>
"If youre just a user, youre just a user," adds Hou. "But if youre a vendor, in order to even convince your customers, you should use it yourself. Luckily because Huawei has a lot of employees, we can demonstrate the scale of cloud we can build using this technology. We provide customer wisdom." While Huawei has its own private cloud, many of its customers run cross-cloud applications using Huaweis solutions. Its a big selling point that most of the public cloud providers now support Kubernetes. "This makes the cross-cloud transition much easier than with other solutions," says Hou.<br><br>
</div>
</section>
{{< case-studies/quote image="/images/case-studies/huawei/banner3.jpg" >}}
"Kubernetes basically solved most of our problems. Before, the time of deployment took about a week, now it only takes minutes. The developers are happy. That department is also quite happy."
{{< /case-studies/quote >}}
<div class="banner4">
<div class="banner4text">
"Our customers, from very big telecommunications operators to banks, love the idea of cloud native. They like Kubernetes technology. But they need to spend a lot of time to decompose their applications to turn them into microservice architecture, and as a solution provider, we help them."
</div>
</div>
<p>And not least of all, there's an impact on the bottom line. Says Hou: "We also see significant operating expense spending cut in some circumstances 20-30 percent, which is very helpful for our business."</p>
<section class="section4">
<div class="fullcol">
Within Huawei itself, once his team completes the transition of the internal business procedure department to Kubernetes, Hou is looking to convince more departments to move over to the cloud native development cycle and practice. "We have a lot of software developers, so we will provide them with our platform as a service solution, our own product," he says. "We would like to see significant cuts in their iteration cycle."<br><br>
Having overseen the initial move to Kubernetes at Huawei, Hou has advice for other companies considering the technology: "When you start to design the architecture of your application, think about cloud native, think about microservice architecture from the beginning," he says. "I think you will benefit from that."<br><br>
But if you already have legacy applications, "start from some microservice-friendly part of those applications first, parts that are relatively easy to be decomposed into simpler pieces and are relatively lightweight," Hou says. "Dont think from day one that within how many days I want to move the whole architecture, or move everything into microservices. Dont put that as a kind of target. You should do it in a gradual manner. And I would say for legacy applications, not every piece would be suitable for microservice architecture. No need to force it."<br><br>
After all, as enthusiastic as Hou is about Kubernetes at Huawei, he estimates that "in the next 10 years, maybe 80 percent of the workload can be distributed, can be run on the cloud native environments. Theres still 20 percent thats not, but its fine. If we can make 80 percent of our workload really be cloud native, to have agility, its a much better world at the end of the day."
<p>Pleased with those initial results, and seeing a demand for cloud native technologies from its customers, Huawei doubled down on Kubernetes. In the spring of 2016, the company became not only a user but also a vendor.</p>
</div>
</section>
<p>"We built the Kubernetes technologies into our solutions," says Hou, referring to Huawei's <a href="http://developer.huawei.com/ict/en/site-paas">FusionStage™</a> PaaS offering. "Our customers, from very big telecommunications operators to banks, love the idea of cloud native. They like Kubernetes technology. But they need to spend a lot of time to decompose their applications to turn them into microservice architecture, and as a solution provider, we help them. We've started to work with some Chinese banks, and we see a lot of interest from our customers like <a href="http://www.chinamobileltd.com/">China Mobile</a> and <a href="https://www.telekom.com/en">Deutsche Telekom</a>."</p>
<div class="banner5">
<div class="banner5text">
"In the next 10 years, maybe 80 percent of the workload can be distributed, can be run on the cloud native environments. Theres still 20 percent thats not, but its fine. If we can make 80 percent of our workload really be cloud native, to have agility, its a much better world at the end of the day."
<p>"If you're just a user, you're just a user," adds Hou. "But if you're a vendor, in order to even convince your customers, you should use it yourself. Luckily because Huawei has a lot of employees, we can demonstrate the scale of cloud we can build using this technology. We provide customer wisdom." While Huawei has its own private cloud, many of its customers run cross-cloud applications using Huawei's solutions. It's a big selling point that most of the public cloud providers now support Kubernetes. "This makes the cross-cloud transition much easier than with other solutions," says Hou.</p>
</div>
</div>
<section class="section5">
<div class="fullcol">
In the nearer future, Hou is looking forward to new features that are being developed around Kubernetes, not least of all the ones that Huawei is contributing to. Huawei engineers have worked on the federation feature (which puts multiple Kubernetes clusters in a single framework to be managed seamlessly), scheduling, container networking and storage, and a just-announced technology called <a href="http://containerops.org/">Container Ops</a>, which is a DevOps pipeline engine. "This will put every DevOps job into a container," he explains. "And then this container mechanism is running using Kubernetes, but is also used to test Kubernetes. With that mechanism, we can make the containerized DevOps jobs be created, shared and managed much more easily than before."<br><br>
Still, Hou sees this technology as only halfway to its full potential. First and foremost, hed like to expand the scale it can orchestrate, which is important for supersized companies like Huawei as well as some of its customers.<br><br>
Hou proudly notes that two years after that first Huawei engineer became a contributor to and evangelist for Kubernetes, Huawei is now a top contributor to the community. "Weve learned that the more you contribute to the community," he says, "the more you get back."
{{< case-studies/quote image="/images/case-studies/huawei/banner4.jpg" >}}
"Our customers, from very big telecommunications operators to banks, love the idea of cloud native. They like Kubernetes technology. But they need to spend a lot of time to decompose their applications to turn them into microservice architecture, and as a solution provider, we help them."
{{< /case-studies/quote >}}
</div>
</section>
<p>Within Huawei itself, once his team completes the transition of the internal business procedure department to Kubernetes, Hou is looking to convince more departments to move over to the cloud native development cycle and practice. "We have a lot of software developers, so we will provide them with our platform as a service solution, our own product," he says. "We would like to see significant cuts in their iteration cycle."</p>
<p>Having overseen the initial move to Kubernetes at Huawei, Hou has advice for other companies considering the technology: "When you start to design the architecture of your application, think about cloud native, think about microservice architecture from the beginning," he says. "I think you will benefit from that."</p>
<p>But if you already have legacy applications, "start from some microservice-friendly part of those applications first, parts that are relatively easy to be decomposed into simpler pieces and are relatively lightweight," Hou says. "Don't think from day one that within how many days I want to move the whole architecture, or move everything into microservices. Don't put that as a kind of target. You should do it in a gradual manner. And I would say for legacy applications, not every piece would be suitable for microservice architecture. No need to force it."</p>
<p>After all, as enthusiastic as Hou is about Kubernetes at Huawei, he estimates that "in the next 10 years, maybe 80 percent of the workload can be distributed, can be run on the cloud native environments. There's still 20 percent that's not, but it's fine. If we can make 80 percent of our workload really be cloud native, to have agility, it's a much better world at the end of the day."</p>
{{< case-studies/quote >}}
"In the next 10 years, maybe 80 percent of the workload can be distributed, can be run on the cloud native environments. There's still 20 percent that's not, but it's fine. If we can make 80 percent of our workload really be cloud native, to have agility, it's a much better world at the end of the day."
{{< /case-studies/quote >}}
<p>In the nearer future, Hou is looking forward to new features that are being developed around Kubernetes, not least of all the ones that Huawei is contributing to. Huawei engineers have worked on the federation feature (which puts multiple Kubernetes clusters in a single framework to be managed seamlessly), scheduling, container networking and storage, and a just-announced technology called <a href="http://containerops.org/">Container Ops</a>, which is a DevOps pipeline engine. "This will put every DevOps job into a container," he explains. "And then this container mechanism is running using Kubernetes, but is also used to test Kubernetes. With that mechanism, we can make the containerized DevOps jobs be created, shared and managed much more easily than before."</p>
<p>Still, Hou sees this technology as only halfway to its full potential. First and foremost, he'd like to expand the scale it can orchestrate, which is important for supersized companies like Huawei as well as some of its customers.</p>
<p>Hou proudly notes that two years after that first Huawei engineer became a contributor to and evangelist for Kubernetes, Huawei is now a top contributor to the community. "We've learned that the more you contribute to the community," he says, "the more you get back."</p>
+54 -82
View File
@@ -1,108 +1,80 @@
---
title: IBM Case Study
linkTitle: IBM
case_study_styles: true
cid: caseStudies
css: /css/style_case_studies.css
logo: ibm_featured_logo.svg
featured: false
new_case_study_styles: true
heading_background: /images/case-studies/ibm/banner1.jpg
heading_title_logo: /images/ibm_logo.png
subheading: >
Building an Image Trust Service on Kubernetes with Notary and TUF
case_study_details:
- Company: IBM
- Location: Armonk, New York
- Industry: Cloud Computing
---
<div class="banner1" style="background-image: url('/images/case-studies/ibm/banner1.jpg')">
<h1> CASE STUDY:<img src="/images/ibm_logo.png" class="header_logo" style="width:10%"><br> <div class="subhead">Building an Image Trust Service on Kubernetes with Notary and TUF</div></h1>
<h2>Challenge</h2>
</div>
<p><a href="https://www.ibm.com/cloud/">IBM Cloud</a> offers public, private, and hybrid cloud functionality across a diverse set of runtimes from its OpenWhisk-based function as a service (FaaS) offering, managed <a href="https://kubernetes.io">Kubernetes</a> and containers, to <a href="https://www.cloudfoundry.org">Cloud Foundry</a> platform as a service (PaaS). These runtimes are combined with the power of the company's enterprise technologies, such as MQ and DB2, its modern artificial intelligence (AI) Watson, and data analytics services. Users of IBM Cloud can exploit capabilities from more than 170 different cloud native services in its catalog, including capabilities such as IBM's Weather Company API and data services. In the later part of 2017, the IBM Cloud Container Registry team wanted to build out an image trust service.</p>
<div class="details">
Company &nbsp;<b>IBM</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Armonk, New York</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Cloud Computing</b>
</div>
<hr>
<section class="section1">
<div class="cols">
<div class="col1" style="width:95%">
<h2>Challenge</h2>
<a href="https://www.ibm.com/cloud/">IBM Cloud</a> offers public, private, and hybrid cloud functionality across a diverse set of runtimes from its OpenWhisk-based function as a service (FaaS) offering, managed <a href="https://kubernetes.io">Kubernetes</a> and containers, to <a href="https://www.cloudfoundry.org">Cloud Foundry</a> platform as a service (PaaS). These runtimes are combined with the power of the companys enterprise technologies, such as MQ and DB2, its modern artificial intelligence (AI) Watson, and data analytics services. Users of IBM Cloud can exploit capabilities from more than 170 different cloud native services in its catalog, including capabilities such as IBMs Weather Company API and data services. In the later part of 2017, the IBM Cloud Container Registry team wanted to build out an image trust service.
<br><br>
<h2>Solution</h2>
The work on this new service culminated with its public availability in the IBM Cloud in February 2018. The image trust service, called Portieris, is fully based on the <a href="https://www.cncf.io">Cloud Native Computing Foundation (CNCF)</a> open source project <a href="https://github.com/theupdateframework/notary">Notary</a>, according to Michael Hough, a software developer with the IBM Cloud Container Registry team. Portieris is a Kubernetes admission controller for enforcing content trust. Users can create image security policies for each Kubernetes namespace, or at the cluster level, and enforce different levels of trust for different images. Portieris is a key part of IBMs trust story, since it makes it possible for users to consume the companys Notary offering from within their IKS clusters. The offering is that Notary server runs in IBMs cloud, and then Portieris runs inside the IKS cluster. This enables users to be able to have their IKS cluster verify that the image they're loading containers from contains exactly what they expect it to, and Portieris is what allows an IKS cluster to apply that verification.
</div>
<div class="col2" style="width:95%">
<h2>Solution</h2>
<p>The work on this new service culminated with its public availability in the IBM Cloud in February 2018. The image trust service, called Portieris, is fully based on the <a href="https://www.cncf.io">Cloud Native Computing Foundation (CNCF)</a> open source project <a href="https://github.com/theupdateframework/notary">Notary</a>, according to Michael Hough, a software developer with the IBM Cloud Container Registry team. Portieris is a Kubernetes admission controller for enforcing content trust. Users can create image security policies for each Kubernetes namespace, or at the cluster level, and enforce different levels of trust for different images. Portieris is a key part of IBM's trust story, since it makes it possible for users to consume the company's Notary offering from within their IKS clusters. The offering is that Notary server runs in IBM's cloud, and then Portieris runs inside the IKS cluster. This enables users to be able to have their IKS cluster verify that the image they're loading containers from contains exactly what they expect it to, and Portieris is what allows an IKS cluster to apply that verification.</p>
<h2>Impact</h2>
IBM's intention in offering a managed Kubernetes container service and image registry is to provide a fully secure end-to-end platform for its enterprise customers. "Image signing is one key part of that offering, and our container registry team saw Notary as the de facto way to implement that capability in the current Docker and container ecosystem," Hough says. The company had not been offering image signing before, and Notary is the tool it used to implement that capability. "We had a multi-tenant Docker Registry with private image hosting," Hough says. "The Docker Registry uses hashes to ensure that image content is correct, and data is encrypted both in flight and at rest. But it does not provide any guarantees of who pushed an image. We used Notary to enable users to sign images in their private registry namespaces if they so choose."
<p>IBM's intention in offering a managed Kubernetes container service and image registry is to provide a fully secure end-to-end platform for its enterprise customers. "Image signing is one key part of that offering, and our container registry team saw Notary as the de facto way to implement that capability in the current Docker and container ecosystem," Hough says. The company had not been offering image signing before, and Notary is the tool it used to implement that capability. "We had a multi-tenant Docker Registry with private image hosting," Hough says. "The Docker Registry uses hashes to ensure that image content is correct, and data is encrypted both in flight and at rest. But it does not provide any guarantees of who pushed an image. We used Notary to enable users to sign images in their private registry namespaces if they so choose."</p>
</div>
{{< case-studies/quote author="Michael Hough, a software developer with the IBM Container Registry team" >}}
"We see CNCF as a safe haven for cloud native open source, providing stability, longevity, and expected maintenance for member projects—no matter the originating vendor or project."
{{< /case-studies/quote >}}
</div>
</section>
<div class="banner2">
<div class="banner2text">
"We see CNCF as a safe haven for cloud native open source, providing stability, longevity, and expected maintenance for member projects—no matter the originating vendor or project."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Michael Hough, a software developer with the IBM Container Registry team</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>Docker had already created the Notary project as an implementation of <a href="https://github.com/theupdateframework/specification" style="text-decoration:underline">The Update Framework (TUF)</a>, and this implementation of TUF provided the capabilities for Docker Content Trust.</h2> "After contribution to CNCF of both TUF and Notary, we perceived that it was becoming the de facto standard for image signing in the container ecosystem", says Michael Hough, a software developer with the IBM Cloud Container Registry team.
<br><br>
The key reason for selecting Notary was that it was already compatible with the existing authentication stack IBMs container registry was using. So was the design of TUF, which does not require the registry team to have to enter the business of key management. Both of these were "attractive design decisions that confirmed our choice of Notary," he says.
<br><br>
The introduction of Notary to implement image signing capability in IBM Cloud encourages increased security across IBM's cloud platform, "where we expect it will include both the signing of official IBM images as well as expected use by security-conscious enterprise customers," Hough says. "When combined with security policy implementations, we expect an increased use of deployment policies in CI/CD pipelines that allow for fine-grained control of service deployment based on image signers."
The availability of image signing "is a huge benefit to security-conscious customers who require this level of image provenance and security," Hough says. "With our IBM Cloud Kubernetes as-a-service offering and the admission controller we have made available, it allows both IBM services as well as customers of the IBM public cloud to use security policies to control service deployment."
{{< case-studies/lead >}}
Docker had already created the Notary project as an implementation of <a href="https://github.com/theupdateframework/specification">The Update Framework (TUF)</a>, and this implementation of TUF provided the capabilities for Docker Content Trust.
{{< /case-studies/lead >}}
<p>"After contribution to CNCF of both TUF and Notary, we perceived that it was becoming the de facto standard for image signing in the container ecosystem", says Michael Hough, a software developer with the IBM Cloud Container Registry team.</p>
</div>
</section>
<div class="banner3" style="background-image: url('/images/case-studies/ibm/banner3.jpg')">
<div class="banner3text">
"Image signing is one key part of our Kubernetes container service offering, and our container registry team saw Notary as the de facto way to implement that capability in the current Docker and container ecosystem"<span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br><br>- Michael Hough, a software developer with the IBM Cloud Container Registry team</span>
</div>
</div>
<section class="section3">
<div class="fullcol">
Now that the Notary-implemented service is generally available in IBMs public cloud as a component of its existing IBM Cloud Container Registry, it is deployed as a highly available service across five IBM Cloud regions. This high-availability deployment has three instances across two zones in each of the five regions, load balanced with failover support. "We have also deployed it with end-to-end TLS support through to our back-end IBM Cloudant persistence storage service," Hough says.
<br><br>
The IBM team has created and open sourced a Kubernetes admission controller called Portieris, which uses Notary signing information combined with customer-defined security policies to control image deployment into their cluster. "We are hoping to drive adoption of Portieris through its use of our Notary offering," Hough says.
<br><br>
IBM has been a key player in the creation and support of open source foundations, including CNCF. Todd Moore, IBM's vice president of Open Technology, is the current CNCF governing board chair and a number of IBMers are active across many of the CNCF member projects.
<p>The key reason for selecting Notary was that it was already compatible with the existing authentication stack IBM's container registry was using. So was the design of TUF, which does not require the registry team to have to enter the business of key management. Both of these were "attractive design decisions that confirmed our choice of Notary," he says.</p>
<p>The introduction of Notary to implement image signing capability in IBM Cloud encourages increased security across IBM's cloud platform, "where we expect it will include both the signing of official IBM images as well as expected use by security-conscious enterprise customers," Hough says. "When combined with security policy implementations, we expect an increased use of deployment policies in CI/CD pipelines that allow for fine-grained control of service deployment based on image signers."</p>
<p>The availability of image signing "is a huge benefit to security-conscious customers who require this level of image provenance and security," Hough says. "With our IBM Cloud Kubernetes as-a-service offering and the admission controller we have made available, it allows both IBM services as well as customers of the IBM public cloud to use security policies to control service deployment."</p>
</div>
</section>
<div class="banner4" style="background-image: url('/images/case-studies/ibm/banner4.jpg')">
<div class="banner4text">
"With our IBM Cloud Kubernetes as-a-service offering and the admission controller we have made available, it allows both IBM services as well as customers of the IBM public cloud to use security policies to control service deployment."<span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br><br>- Michael Hough, a software developer with the IBM Cloud Container Registry team</span>
</div>
</div>
</div>
{{< case-studies/quote
image="/images/case-studies/ibm/banner3.jpg"
author="Michael Hough, a software developer with the IBM Cloud Container Registry team"
>}}
"Image signing is one key part of our Kubernetes container service offering, and our container registry team saw Notary as the de facto way to implement that capability in the current Docker and container ecosystem"
{{< /case-studies/quote >}}
<section class="section4">
<div class="fullcol">
"Given that, we see CNCF as a safe haven for cloud native open source, providing stability, longevity, and expected maintenance for member projects—no matter the originating vendor or project," Hough says. Because the entire cloud native world is a fast-moving area with many competing vendors and solutions, "we see the CNCF model as an arbiter of openness and fair play across the ecosystem," he says.
<br><br>
With both TUF and Notary as part of CNCF, IBM expects there to be standardization around these capabilities beyond just de facto standards for signing and provenance. IBM has determined to not simply consume Notary, but also to contribute to the open source project where applicable. "IBMers have contributed a CouchDB backend to support our use of IBM Cloudant as the persistent store; and are working on generalization of the pkcs11 provider, allowing support of other security hardware devices beyond Yubikey," Hough says.
<p>Now that the Notary-implemented service is generally available in IBM's public cloud as a component of its existing IBM Cloud Container Registry, it is deployed as a highly available service across five IBM Cloud regions. This high-availability deployment has three instances across two zones in each of the five regions, load balanced with failover support. "We have also deployed it with end-to-end TLS support through to our back-end IBM Cloudant persistence storage service," Hough says.</p>
</div>
</section>
<div class="banner5">
<div class="banner5text">
"There are new projects addressing these challenges, including within CNCF. We will definitely be following these advancements with interest. We found the Notary community to be an active and friendly community open to changes, such as our addition of a CouchDB backend for persistent storage." <span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br><br>- Michael Hough, a software developer with the IBM Cloud Container Registry team</span>
</div>
</div>
<section class="section5" style="padding:0px !important">
<div class="fullcol">
The company has used other CNCF projects <a href="https://containerd.io">containerd</a>, <a href="https://www.envoyproxy.io">Envoy</a>, <a href="https://prometheus.io">Prometheus</a>, <a href="https://grpc.io">gRPC</a>, and <a href="https://github.com/containernetworking">CNI</a>, and is looking into <a href="https://github.com/spiffe">SPIFFE</a> and <a href="https://github.com/spiffe/spire">SPIRE</a> as well for potential future use.
<br><br>
What advice does Hough have for other companies that are looking to deploy Notary or a cloud native infrastructure?
<br><br>
"While this is true for many areas of cloud native infrastructure software, we found that a high-availability, multi-region deployment of Notary requires a solid implementation to handle certificate management and rotation," he says. "There are new projects addressing these challenges, including within CNCF. We will definitely be following these advancements with interest. We found the Notary community to be an active and friendly community open to changes, such as our addition of a CouchDB backend for persistent storage."
<p>The IBM team has created and open sourced a Kubernetes admission controller called Portieris, which uses Notary signing information combined with customer-defined security policies to control image deployment into their cluster. "We are hoping to drive adoption of Portieris through its use of our Notary offering," Hough says.</p>
</div>
<p>IBM has been a key player in the creation and support of open source foundations, including CNCF. Todd Moore, IBM's vice president of Open Technology, is the current CNCF governing board chair and a number of IBMers are active across many of the CNCF member projects.</p>
</section>
{{< case-studies/quote
image="/images/case-studies/ibm/banner4.jpg"
author="Michael Hough, a software developer with the IBM Cloud Container Registry team"
>}}
"With our IBM Cloud Kubernetes as-a-service offering and the admission controller we have made available, it allows both IBM services as well as customers of the IBM public cloud to use security policies to control service deployment."
{{< /case-studies/quote >}}
<p>"Given that, we see CNCF as a safe haven for cloud native open source, providing stability, longevity, and expected maintenance for member projects—no matter the originating vendor or project," Hough says. Because the entire cloud native world is a fast-moving area with many competing vendors and solutions, "we see the CNCF model as an arbiter of openness and fair play across the ecosystem," he says.</p>
<p>With both TUF and Notary as part of CNCF, IBM expects there to be standardization around these capabilities beyond just de facto standards for signing and provenance. IBM has determined to not simply consume Notary, but also to contribute to the open source project where applicable. "IBMers have contributed a CouchDB backend to support our use of IBM Cloudant as the persistent store; and are working on generalization of the pkcs11 provider, allowing support of other security hardware devices beyond Yubikey," Hough says.</p>
{{< case-studies/quote author="Michael Hough, a software developer with the IBM Cloud Container Registry team" >}}
"There are new projects addressing these challenges, including within CNCF. We will definitely be following these advancements with interest. We found the Notary community to be an active and friendly community open to changes, such as our addition of a CouchDB backend for persistent storage."
{{< /case-studies/quote >}}
<p>The company has used other CNCF projects <a href="https://containerd.io">containerd</a>, <a href="https://www.envoyproxy.io">Envoy</a>, <a href="https://prometheus.io">Prometheus</a>, <a href="https://grpc.io">gRPC</a>, and <a href="https://github.com/containernetworking">CNI</a>, and is looking into <a href="https://github.com/spiffe">SPIFFE</a> and <a href="https://github.com/spiffe/spire">SPIRE</a> as well for potential future use.</p>
<p>What advice does Hough have for other companies that are looking to deploy Notary or a cloud native infrastructure?</p>
<p>"While this is true for many areas of cloud native infrastructure software, we found that a high-availability, multi-region deployment of Notary requires a solid implementation to handle certificate management and rotation," he says. "There are new projects addressing these challenges, including within CNCF. We will definitely be following these advancements with interest. We found the Notary community to be an active and friendly community open to changes, such as our addition of a CouchDB backend for persistent storage."</p>
+54 -75
View File
@@ -5,95 +5,74 @@ case_study_styles: true
cid: caseStudies
weight: 50
featured: true
css: /css/style_case_studies.css
quote: >
The big cloud native promise to our business is the ability to go from idea to production within 48 hours. We are some years away from this, but thats quite feasible to us.
The big cloud native promise to our business is the ability to go from idea to production within 48 hours. We are some years away from this, but that's quite feasible to us.
new_case_study_styles: true
heading_background: /images/case-studies/ing/banner1.jpg
heading_title_logo: /images/ing_logo.png
subheading: >
Driving Banking Innovation with Cloud Native
case_study_details:
- Company: ING
- Location: Amsterdam, Netherlands
- Industry: Finance
---
<h2>Challenge</h2>
<div class="banner1" style="background-image: url('/images/case-studies/ing/banner1.jpg')">
<h1> CASE STUDY:<img src="/images/ing_logo.png" style="margin-bottom:-1.5%;" class="header_logo"><br> <div class="subhead"> Driving Banking Innovation with Cloud Native
</div></h1>
<p>After undergoing an agile transformation, <a href="https://www.ing.com/">ING</a> realized it needed a standardized platform to support the work their developers were doing. "Our DevOps teams got empowered to be autonomous," says Infrastructure Architect Thijs Ebbers. "It has benefits; you get all kinds of ideas. But a lot of teams are going to devise the same wheel. Teams started tinkering with <a href="https://www.docker.com/">Docker</a>, Docker Swarm, <a href="https://kubernetes.io/">Kubernetes</a>, <a href="https://mesosphere.com/">Mesos</a>. Well, it's not really useful for a company to have one hundred wheels, instead of one good wheel.</p>
</div>
<h2>Solution</h2>
<div class="details">
Company &nbsp;<b>ING</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Amsterdam, Netherlands
</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Finance</b>
</div>
<p>Using Kubernetes for container orchestration and Docker for containerization, the ING team began building an internal public cloud for its CI/CD pipeline and green-field applications. The pipeline, which has been built on Mesos Marathon, will be migrated onto Kubernetes. The bank-account management app <a href="https://www.yolt.com/">Yolt</a> in the U.K. (and soon France and Italy) market already is live hosted on a Kubernetes framework. At least two greenfield projects currently on the Kubernetes framework will be going into production later this year. By the end of 2018, the company plans to have converted a number of APIs used in the banking customer experience to cloud native APIs and host these on the Kubernetes-based platform.</p>
<hr>
<section class="section1">
<div class="cols" style="width:85% !important;margin-left:10% !important">
<div class="col1" style="width:100% !important;">
<h2>Challenge</h2>
After undergoing an agile transformation, <a href="https://www.ing.com/">ING</a> realized it needed a standardized platform to support the work their developers were doing. "Our DevOps teams got empowered to be autonomous," says Infrastructure Architect Thijs Ebbers. "It has benefits; you get all kinds of ideas. But a lot of teams are going to devise the same wheel. Teams started tinkering with <a href="https://www.docker.com/">Docker</a>, Docker Swarm, <a href="https://kubernetes.io/">Kubernetes</a>, <a href="https://mesosphere.com/">Mesos</a>. Well, its not really useful for a company to have one hundred wheels, instead of one good wheel.
<br>
<br>
<h2>Solution</h2>
Using Kubernetes for container orchestration and Docker for containerization, the ING team began building an internal public cloud for its CI/CD pipeline and green-field applications. The pipeline, which has been built on Mesos Marathon, will be migrated onto Kubernetes. The bank-account management app <a href="https://www.yolt.com/">Yolt</a> in the U.K. (and soon France and Italy) market already is live hosted on a Kubernetes framework. At least two greenfield projects currently on the Kubernetes framework will be going into production later this year. By the end of 2018, the company plans to have converted a number of APIs used in the banking customer experience to cloud native APIs and host these on the Kubernetes-based&nbsp;platform.
<h2>Impact</h2>
<br>
</div>
<p>"Cloud native technologies are helping our speed, from getting an application to test to acceptance to production," says Infrastructure Architect Onno Van der Voort. "If you walk around ING now, you see all these DevOps teams, doing stand-ups, demoing. They try to get new functionality out there really fast. We held a hackathon for one of our existing components and basically converted it to cloud native within 2.5 days, though of course the tail takes more time before code is fully production ready."</p>
<div class="col2" style="width:100% !important;padding-right:8%">
<br>
<h2>Impact</h2>
"Cloud native technologies are helping our speed, from getting an application to test to acceptance to production," says Infrastructure Architect Onno Van der Voort. "If you walk around ING now, you see all these DevOps teams, doing stand-ups, demoing. They try to get new functionality out there really fast. We held a hackathon for one of our existing components and basically converted it to cloud native within 2.5 days, though of course the tail takes more time before code is fully production ready."
<br>
</div>
</div>
</section>
<div class="banner2" style="padding-top:% !important">
<div class="banner2text" style="width:70% !important">
"The big cloud native promise to our business is the ability to go from idea to production within 48 hours. We are some years away from this, but thats quite feasible to us."
<span style="font-size:16px;text-transform:uppercase;letter-spacing:0.1em;"><br><br>— Thijs Ebbers, Infrastructure Architect, ING</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>ING has long embraced innovation in banking, launching the internet-based ING Direct in&nbsp;1997. </h2>In that same spirit, the company underwent an agile transformation a few years ago. "Our DevOps teams got empowered to be autonomous," says Infrastructure Architect Thijs Ebbers. "It has benefits; you get all kinds of ideas. But a lot of teams are going to devise the same wheel. Teams started tinkering with Docker, Docker Swarm, Kubernetes, Mesos. Well, its not really useful for a company to have one hundred wheels, instead of one good wheel." <br><br>
Looking to standardize the deployment process within the companys strict security guidelines, the team looked at several solutions and found that in the past year, "Kubernetes won the container management framework wars," says Ebbers. "We decided to standardize ING on a Kubernetes framework." Everything is run on premise due to banking regulations, he adds, but "we will be building an internal public cloud. We are trying to get on par with what public clouds are doing. Thats one of the reasons we got Kubernetes."<br><br>
They also embraced Docker to address a major pain point in INGs CI/CD pipeline. Before containerization, "Every development team had to order a VM, and it was quite a heavy delivery model for them," says Infrastructure Architect Onno Van der Voort. "Another use case for containerization is when the application travels through the pipeline, they fire up Docker containers to do test work against the applications and after theyve done the work, the containers get killed again."
{{< case-studies/quote author="Thijs Ebbers, Infrastructure Architect, ING">}}
"The big cloud native promise to our business is the ability to go from idea to production within 48 hours. We are some years away from this, but that's quite feasible to us."
{{< /case-studies/quote >}}
</div>
</section>
<div class="banner3" style="background-image: url('/images/case-studies/ing/banner3.jpg')">
<div class="banner3text">
"We decided to standardize ING on a Kubernetes framework." Everything is run on premise due to banking regulations, he adds, but "we will be building an internal public cloud. We are trying to get on par with what public clouds are doing. Thats one of the reasons we got Kubernetes."
<span style="font-size:16px;text-transform:uppercase;letter-spacing:0.1em;"><br><br>— Thijs Ebbers, Infrastructure Architect, ING</span>
</div>
</div>
<section class="section3">
<div class="fullcol">
Because of industry regulations, applications are only allowed to go through the pipeline, where compliance is enforced, rather than be deployed directly into a container. "We have to run the complete platform of services we need, many routing from different places," says Van der Voort. "We need this Kubernetes framework for deploying the containers, with all those components, monitoring, logging. Its complex." For that reason, ING has chosen to start on the <a href="https://www.openshift.org/">OpenShift Origin</a> Kubernetes distribution. <br><br>
Already, "cloud native technologies are helping our speed, from getting an application to test to acceptance to production," says Van der Voort. "If you walk around ING now, you see all these DevOps teams, doing stand-ups, demoing. They try to get new functionality out there really fast. We held a hackathon for one of our existing components and basically converted it to cloud native within 2.5 days, though of course the tail takes more time before code is fully production ready."<br><br>
The pipeline, which has been built on Mesos Marathon, will be migrated onto Kubernetes. Some legacy applications are also being rewritten as cloud native in order to run on the framework. At least two smaller greenfield projects built on Kubernetes will go into production this year. By the end of 2018, the company plans to have converted a number of APIs used in the banking customer experience to cloud native APIs and host these on the Kubernetes-based platform.
{{< case-studies/lead >}}
ING has long embraced innovation in banking, launching the internet-based ING Direct in 1997.
{{< /case-studies/lead >}}
</div>
</section>
<div class="banner4" style="background-image: url('/images/case-studies/ing/banner4.jpg')">
<div class="banner4text">
"We have to run the complete platform of services we need, many routing from different places. We need this Kubernetes framework for deploying the containers, with all those components, monitoring, logging. Its complex." <span style="font-size:16px;text-transform:uppercase;letter-spacing:0.1em;"><br><br>— Onno Van der Voort, Infrastructure Architect, ING</span>
</div>
</div>
<p>In that same spirit, the company underwent an agile transformation a few years ago. "Our DevOps teams got empowered to be autonomous," says Infrastructure Architect Thijs Ebbers. "It has benefits; you get all kinds of ideas. But a lot of teams are going to devise the same wheel. Teams started tinkering with Docker, Docker Swarm, Kubernetes, Mesos. Well, it's not really useful for a company to have one hundred wheels, instead of one good wheel."</p>
<p>Looking to standardize the deployment process within the company's strict security guidelines, the team looked at several solutions and found that in the past year, "Kubernetes won the container management framework wars," says Ebbers. "We decided to standardize ING on a Kubernetes framework." Everything is run on premise due to banking regulations, he adds, but "we will be building an internal public cloud. We are trying to get on par with what public clouds are doing. That's one of the reasons we got Kubernetes."</p>
<div class="fullcol">
The team, however, doesnt see the banks back-end systems going onto the Kubernetes platform. "Our philosophy is it only makes sense to move things to cloud if they are cloud native," says Van der Voort. "If you have traditional architecture, build traditional patterns, it doesnt hold any value to go to the cloud." Adds Cloud Platform Architect Alfonso Fernandez-Barandiaran: "ING has a strategy about where we will go, in order to improve our agility. So its not about how cool this technology is, its about finding the right technology and the right approach."<br><br>
The Kubernetes framework will be hosting some greenfield projects that are high priority for ING: applications the company is developing in response to <a href="https://ec.europa.eu/info/law/payment-services-psd-2-directive-eu-2015-2366_en">PSD2</a>, the European Commission directive requiring more innovative online and mobile payments that went into effect at the beginning of 2018. For example, a bank-account management app called <a href="https://www.yolt.com/">Yolt</a>, serving the U.K. market (and soon France and Italy), was built on a Kubernetes platform and has gone into production. ING is also developing blockchain-enabled applications that will live on the Kubernetes platform. "Weve been contacted by a lot of development teams that have ideas with what they want to do with containers," says Ebbers.
<p>They also embraced Docker to address a major pain point in ING's CI/CD pipeline. Before containerization, "Every development team had to order a VM, and it was quite a heavy delivery model for them," says Infrastructure Architect Onno Van der Voort. "Another use case for containerization is when the application travels through the pipeline, they fire up Docker containers to do test work against the applications and after they've done the work, the containers get killed again."</p>
</div>
<section class="section5" style="padding:0px !important">
<div class="banner5">
<div class="banner5text">
Even with the particular requirements that come in banking, ING has managed to take a lead in technology and innovation. "Every time we have constraints, we look for maybe a better way that we can use this technology." <span style="font-size:16px;text-transform:uppercase;letter-spacing:0.1em;"><br><br>— Alfonso Fernandez-Barandiaran, Cloud Platform Architect, ING</span></div>
</div>
{{< case-studies/quote
image="/images/case-studies/ing/banner3.jpg"
author="Thijs Ebbers, Infrastructure Architect, ING"
>}}
"We decided to standardize ING on a Kubernetes framework." Everything is run on premise due to banking regulations, he adds, but "we will be building an internal public cloud. We are trying to get on par with what public clouds are doing. That's one of the reasons we got Kubernetes."
{{< /case-studies/quote >}}
<div class="fullcol">
Even with the particular requirements that come in banking, ING has managed to take a lead in technology and innovation. "Every time we have constraints, we look for maybe a better way that we can use this technology," says Fernandez-Barandiaran. <br><br>
The results, after all, are worth the effort. "The big cloud native promise to our business is the ability to go from idea to production within 48 hours," says Ebbers. "That would require all these projects to be mature. We are some years away from this, but thats quite feasible to us."
<p>Because of industry regulations, applications are only allowed to go through the pipeline, where compliance is enforced, rather than be deployed directly into a container. "We have to run the complete platform of services we need, many routing from different places," says Van der Voort. "We need this Kubernetes framework for deploying the containers, with all those components, monitoring, logging. It's complex." For that reason, ING has chosen to start on the <a href="https://www.openshift.org/">OpenShift Origin</a> Kubernetes distribution.</p>
</div>
<p>Already, "cloud native technologies are helping our speed, from getting an application to test to acceptance to production," says Van der Voort. "If you walk around ING now, you see all these DevOps teams, doing stand-ups, demoing. They try to get new functionality out there really fast. We held a hackathon for one of our existing components and basically converted it to cloud native within 2.5 days, though of course the tail takes more time before code is fully production ready."</p>
</section>
<p>The pipeline, which has been built on Mesos Marathon, will be migrated onto Kubernetes. Some legacy applications are also being rewritten as cloud native in order to run on the framework. At least two smaller greenfield projects built on Kubernetes will go into production this year. By the end of 2018, the company plans to have converted a number of APIs used in the banking customer experience to cloud native APIs and host these on the Kubernetes-based platform.</p>
{{< case-studies/quote
image="/images/case-studies/ing/banner4.jpg"
author="Onno Van der Voort, Infrastructure Architect, ING"
>}}
"We have to run the complete platform of services we need, many routing from different places. We need this Kubernetes framework for deploying the containers, with all those components, monitoring, logging. It's complex."
{{< /case-studies/quote >}}
<p>The team, however, doesn't see the bank's back-end systems going onto the Kubernetes platform. "Our philosophy is it only makes sense to move things to cloud if they are cloud native," says Van der Voort. "If you have traditional architecture, build traditional patterns, it doesn't hold any value to go to the cloud." Adds Cloud Platform Architect Alfonso Fernandez-Barandiaran: "ING has a strategy about where we will go, in order to improve our agility. So it's not about how cool this technology is, it's about finding the right technology and the right approach."</p>
<p>The Kubernetes framework will be hosting some greenfield projects that are high priority for ING: applications the company is developing in response to <a href="https://ec.europa.eu/info/law/payment-services-psd-2-directive-eu-2015-2366_en">PSD2</a>, the European Commission directive requiring more innovative online and mobile payments that went into effect at the beginning of 2018. For example, a bank-account management app called <a href="https://www.yolt.com/">Yolt</a>, serving the U.K. market (and soon France and Italy), was built on a Kubernetes platform and has gone into production. ING is also developing blockchain-enabled applications that will live on the Kubernetes platform. "We've been contacted by a lot of development teams that have ideas with what they want to do with containers," says Ebbers.</p>
{{< case-studies/quote author="Alfonso Fernandez-Barandiaran, Cloud Platform Architect, ING" >}}
Even with the particular requirements that come in banking, ING has managed to take a lead in technology and innovation. "Every time we have constraints, we look for maybe a better way that we can use this technology."
{{< /case-studies/quote >}}
<p>Even with the particular requirements that come in banking, ING has managed to take a lead in technology and innovation. "Every time we have constraints, we look for maybe a better way that we can use this technology," says Fernandez-Barandiaran.</p>
<p>The results, after all, are worth the effort. "The big cloud native promise to our business is the ability to go from idea to production within 48 hours," says Ebbers. "That would require all these projects to be mature. We are some years away from this, but that's quite feasible to us."</p>
+59 -77
View File
@@ -3,95 +3,77 @@ title: JD.com Case Study
linkTitle: jd-com
case_study_styles: true
cid: caseStudies
css: /css/style_case_studies.css
featured: false
new_case_study_styles: true
heading_background: /images/case-studies/jdcom/banner1.jpg
heading_title_logo: /images/jdcom_logo.png
subheading: >
JD.com: How JD.com Pioneered Kubernetes for E-Commerce at Hyperscale
case_study_details:
- Company: JD.com
- Location: Beijing, China
- Industry: eCommerce
---
<div class="banner1" style="background-image: url('/images/case-studies/jdcom/banner1.jpg')">
<h1> CASE STUDY:<img src="/images/jdcom_logo.png" class="header_logo" style="width:17%;margin-bottom:-1%"><br> <div class="subhead" style="margin-top:1%">JD.com: How JD.com Pioneered Kubernetes for E-Commerce at Hyperscale
<h2>Challenge</h2>
</div></h1>
<p>With more than 300 million active users and total 2017 revenue of more than $55 billion, <a href="https://corporate.JD.com/home">JD.com</a> is China's largest retailer, and its operations are the epitome of hyperscale. For example, there are more than a trillion images in JD.com's product databases—with 100 million being added daily—and this enormous amount of data needs to be instantly accessible. In 2014, JD.com moved its applications to containers running on bare metal machines using OpenStack and Docker to "speed up the delivery of our computing resources and make the operations much simpler," says Haifeng Liu, JD.com's Chief Architect. But by the end of 2015, with tens of thousands of nodes running in multiple data centers, "we encountered a lot of problems because our platform was not strong enough, and we suffered from bottlenecks and scalability issues," says Liu. "We needed infrastructure for the next five years of development, now."</p>
</div>
<h2>Solution</h2>
<div class="details">
Company &nbsp;<b>JD.com</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Beijing, China</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>eCommerce</b>
</div>
<p>JD.com turned to Kubernetes to accommodate its clusters. At the beginning of 2016, the company began to transition from OpenStack to Kubernetes, and today, JD.com runs the world's largest Kubernetes cluster. "Kubernetes has provided a strong foundation on top of which we have customized the solution to suit our needs as China's largest retailer."</p>
<hr>
<section class="section1">
<div class="cols">
<div class="col1" style="width:100%"">
<h2>Challenge</h2>
With more than 300 million active users and total 2017 revenue of more than $55 billion, <a href="https://corporate.JD.com/home">JD.com</a> is Chinas largest retailer, and its operations are the epitome of hyperscale. For example, there are more than a trillion images in JD.coms product databases—with 100 million being added daily—and this enormous amount of data needs to be instantly accessible. In 2014, JD.com moved its applications to containers running on bare metal machines using OpenStack and Docker to "speed up the delivery of our computing resources and make the operations much simpler," says Haifeng Liu, JD.coms Chief Architect. But by the end of 2015, with tens of thousands of nodes running in multiple data centers, "we encountered a lot of problems because our platform was not strong enough, and we suffered from bottlenecks and scalability issues," says Liu. "We needed infrastructure for the next five years of development, now."
<h2>Solution</h2>
JD.com turned to Kubernetes to accommodate its clusters. At the beginning of 2016, the company began to transition from OpenStack to Kubernetes, and today, JD.com runs the worlds largest Kubernetes cluster. "Kubernetes has provided a strong foundation on top of which we have customized the solution to suit our needs as Chinas largest retailer."
<br>
<h2>Impact</h2>
"We have greater data center efficiency, better managed resources, and smarter deployment with the Kubernetes platform," says Liu. Deployment time went from several hours to tens of seconds. Efficiency has improved by 20-30%, measured in IT costs. With the further optimizations the team is working on, Liu believes there is the potential to save hundreds of millions of dollars a year. But perhaps the best indication of success was the annual Singles Day shopping event, which ran on the Kubernetes platform for the first time in 2018. Over 11 days, transaction volume on JD.com was $23 billion, and "our e-commerce platforms did great," says Liu. "Infrastructure led the way to prep for 11.11. We took the approach of predicting volume, emulating the behavior of customers to prepare beforehand, and drilled for malfunctions. Because of Kubernetess scalability, we were able to handle an extremely high level of demand."
</div>
</div>
</section>
<div class="banner2">
<div class="banner2text">
"Kubernetes helped us reduce the complexity of operations to make distributed systems stable and scalable. Most importantly, we can leverage Kubernetes for scheduling resources to reduce hardware costs. Thats the&nbsp;big&nbsp;win."
<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- HAIFENG LIU, CHIEF ARCHITECT, JD.com</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>With more than 300 million active users and $55.7 billion in annual revenues last year, JD.com is Chinas largest retailer, and its operations are the epitome of hyperscale.</h2>
For example, there are more than a trillion images in JD.coms product databases for customers, with 100 million being added daily. And this enormous amount of data needs to be instantly accessible to enable a smooth online customer experience.
<br><br>
In 2014, JD.com moved its applications to containers running on bare metal machines using OpenStack and Docker to "speed up the delivery of our computing resources and make the operations much simpler," says Haifeng Liu, JD.coms Chief Architect. But by the end of 2015, with hundreds of thousands of nodes in multiple data centers, "we encountered a lot of problems because our platform was not strong enough, and we suffered from bottlenecks and scalability issues," Liu adds. "We needed infrastructure for the next five years of development, now."
<br><br>
After considering a number of orchestration technologies, JD.com decided to adopt Kubernetes to accommodate its ever-growing clusters. "The main reason is because Kubernetes can give us more efficient, scalable and much simpler application deployments, plus we can leverage it to do flexible platform scheduling," says Liu.
<p>"We have greater data center efficiency, better managed resources, and smarter deployment with the Kubernetes platform," says Liu. Deployment time went from several hours to tens of seconds. Efficiency has improved by 20-30%, measured in IT costs. With the further optimizations the team is working on, Liu believes there is the potential to save hundreds of millions of dollars a year. But perhaps the best indication of success was the annual Singles Day shopping event, which ran on the Kubernetes platform for the first time in 2018. Over 11 days, transaction volume on JD.com was $23 billion, and "our e-commerce platforms did great," says Liu. "Infrastructure led the way to prep for 11.11. We took the approach of predicting volume, emulating the behavior of customers to prepare beforehand, and drilled for malfunctions. Because of Kubernetes's scalability, we were able to handle an extremely high level of demand."</p>
</div>
</section>
<div class="banner3" style="background-image: url('/images/case-studies/jdcom/banner3.jpg')">
<div class="banner3text">
"We customized Kubernetes and built a modern system on top of it. This entire ecosystem of Kubernetes plus our own optimizations have helped us save costs and time."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- HAIFENG LIU, CHIEF ARCHITECT, JD.com</span>
{{< case-studies/quote author="HAIFENG LIU, CHIEF ARCHITECT, JD.com" >}}
"Kubernetes helped us reduce the complexity of operations to make distributed systems stable and scalable. Most importantly, we can leverage Kubernetes for scheduling resources to reduce hardware costs. That's the big win."
{{< /case-studies/quote >}}
</div>
</div>
<section class="section3">
<div class="fullcol">
The fact that Kubernetes is based on Googles Borg also gave the company confidence. The team liked that Kubernetes has a clear and simple architecture, and that its developed mostly in Go, which is a popular language within JD.com. Though he felt that at the time Kubernetes "was not mature enough," Liu says, "we adopted it anyway."
<br><br>
The team spent a year developing the new container engine platform based on Kubernetes, and at the end of 2016, began promoting it within the company. "We wanted the cluster to be the default way for creating services, so scalability is easier," says Liu. "We talked to developers, interest grew, and we solved problems together." Some of these problems included networking performance and etcd scalability. "But during the past two years, Kubernetes has become more mature and very stable," he adds.
<br><br>
Today, the company runs the worlds largest Kubernetes cluster. "We customized Kubernetes and built a modern system on top of it," says Liu. "This entire ecosystem of Kubernetes plus our own optimizations have helped us save costs and time. We have greater data center efficiency, better managed resources, and smarter deployment with the Kubernetes platform."
{{< case-studies/lead >}}
With more than 300 million active users and $55.7 billion in annual revenues last year, JD.com is China's largest retailer, and its operations are the epitome of hyperscale.
{{< /case-studies/lead >}}
</div>
</section>
<div class="banner4" style="background-image: url('/images/case-studies/jdcom/banner4.jpg');width:100%">
<div class="banner4text">
"My advice is first you need to combine this technology with your own businesses, and the second is you need clear goals. You cannot just use the technology because others are using it. You need to consider your own objectives." <br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- HAIFENG LIU, CHIEF ARCHITECT, JD.com</span>
</div>
</div>
<p>For example, there are more than a trillion images in JD.com's product databases for customers, with 100 million being added daily. And this enormous amount of data needs to be instantly accessible to enable a smooth online customer experience.</p>
<section class="section5" style="padding:0px !important">
<div class="fullcol">
The results are clear: Deployment time went from several hours to tens of seconds. Efficiency has improved by 20-30%, measured in IT costs. But perhaps the best indication of success was the annual <a href="https://JD.comcorporateblog.com/shoppers-snap-up-quality-and-imported-products-on-JD.com-com-for-record-breaking-singles-day-festival/">Singles Day</a> shopping event, which ran on the Kubernetes platform for the first time in 2018. Over 11 days, transaction volume on JD.com was $23 billion, and "our e-commerce platforms did great," says Liu. "Infrastructure led the way to prep for 11.11. We took the approach of predicting volume, emulating the behavior of customers to prepare beforehand, and drilled for malfunctions. Because of Kubernetess scalability, we were able to handle an extremely high level of demand."
<br><br>
JD.com is now in its second stage with Kubernetes: The platform is already stable, scalable, and flexible, so the focus is on how to run things much more efficiently to further reduce costs. With the optimizations the team is working on with resource management, Liu believes there is the potential to save hundreds of millions of dollars a year.
<br><br>
"We run Kubernetes and container clusters on roughly tens of thousands of physical bare metal nodes," he says. "Using Kubernetes and leveraging our own machine learning pipeline to predict how many resources we need for each application we use, and our own intelligent scaling algorithm, we can improve our resource usage. If we boost the resource usage, for example, by several percent, that means we can reduce huge hardware costs. Then we dont need that many servers to get that same amount of workload. That can save us a lot of resources."
</div>
<p>In 2014, JD.com moved its applications to containers running on bare metal machines using OpenStack and Docker to "speed up the delivery of our computing resources and make the operations much simpler," says Haifeng Liu, JD.com's Chief Architect. But by the end of 2015, with hundreds of thousands of nodes in multiple data centers, "we encountered a lot of problems because our platform was not strong enough, and we suffered from bottlenecks and scalability issues," Liu adds. "We needed infrastructure for the next five years of development, now."</p>
<div class="banner5" style="width:100%">
<div class="banner5text">
"We can share our successful experience with the community, and we also receive good feedback from others. So its mutually beneficial."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- HAIFENG LIU, CHIEF ARCHITECT, JD.com</span></div>
</div>
<p>After considering a number of orchestration technologies, JD.com decided to adopt Kubernetes to accommodate its ever-growing clusters. "The main reason is because Kubernetes can give us more efficient, scalable and much simpler application deployments, plus we can leverage it to do flexible platform scheduling," says Liu.</p>
<div class="fullcol">
JD.com, which won CNCFs 2018 End User Award, is also using <a href="https://helm.sh/">Helm</a>, <a href="https://github.com/containernetworking">CNI</a>, <a href="https://goharbor.io/">Harbor</a>, and <a href="https://vitess.io/">Vitess</a> on its platform. JD.com developers have made considerable contributions to Vitess, the CNCF project for scalable MySQL cluster management, and the company hopes to donate its own project to CNCF in the near future. Community participation is a priority for JD.com. "We have a good partnership with this community," says Liu. "We can share our successful experience with the community, and we also receive good feedback from others. So its mutually beneficial."
<br><br>
To that end, Liu offers this advice for other companies considering adopting cloud native technology. "First you need to combine this technology with your own businesses, and the second is you need clear goals," he says. "You cannot just use the technology because others are using it. You need to consider your own objectives."
<br><br>
For JD.coms objectives, these cloud native technologies have been an ideal fit with the companys own homegrown innovation. "Kubernetes helped us reduce the complexity of operations to make distributed systems stable and scalable," says Liu. "Most importantly, we can leverage Kubernetes for scheduling resources to reduce hardware costs. Thats the big win."
</div>
</section>
{{< case-studies/quote
image="/images/case-studies/jdcom/banner3.jpg"
author="HAIFENG LIU, CHIEF ARCHITECT, JD.com"
>}}
"We customized Kubernetes and built a modern system on top of it. This entire ecosystem of Kubernetes plus our own optimizations have helped us save costs and time."
{{< /case-studies/quote >}}
<p>The fact that Kubernetes is based on Google's Borg also gave the company confidence. The team liked that Kubernetes has a clear and simple architecture, and that it's developed mostly in Go, which is a popular language within JD.com. Though he felt that at the time Kubernetes "was not mature enough," Liu says, "we adopted it anyway."</p>
<p>The team spent a year developing the new container engine platform based on Kubernetes, and at the end of 2016, began promoting it within the company. "We wanted the cluster to be the default way for creating services, so scalability is easier," says Liu. "We talked to developers, interest grew, and we solved problems together." Some of these problems included networking performance and etcd scalability. "But during the past two years, Kubernetes has become more mature and very stable," he adds.</p>
<p>Today, the company runs the world's largest Kubernetes cluster. "We customized Kubernetes and built a modern system on top of it," says Liu. "This entire ecosystem of Kubernetes plus our own optimizations have helped us save costs and time. We have greater data center efficiency, better managed resources, and smarter deployment with the Kubernetes platform."</p>
{{< case-studies/quote
image="/images/case-studies/jdcom/banner4.jpg"
author="HAIFENG LIU, CHIEF ARCHITECT, JD.com"
>}}
"My advice is first you need to combine this technology with your own businesses, and the second is you need clear goals. You cannot just use the technology because others are using it. You need to consider your own objectives."
{{< /case-studies/quote >}}
<p>The results are clear: Deployment time went from several hours to tens of seconds. Efficiency has improved by 20-30%, measured in IT costs. But perhaps the best indication of success was the annual <a href="https://JD.comcorporateblog.com/shoppers-snap-up-quality-and-imported-products-on-JD.com-com-for-record-breaking-singles-day-festival/">Singles Day</a> shopping event, which ran on the Kubernetes platform for the first time in 2018. Over 11 days, transaction volume on JD.com was $23 billion, and "our e-commerce platforms did great," says Liu. "Infrastructure led the way to prep for 11.11. We took the approach of predicting volume, emulating the behavior of customers to prepare beforehand, and drilled for malfunctions. Because of Kubernetes's scalability, we were able to handle an extremely high level of demand."</p>
<p>JD.com is now in its second stage with Kubernetes: The platform is already stable, scalable, and flexible, so the focus is on how to run things much more efficiently to further reduce costs. With the optimizations the team is working on with resource management, Liu believes there is the potential to save hundreds of millions of dollars a year.</p>
<p>"We run Kubernetes and container clusters on roughly tens of thousands of physical bare metal nodes," he says. "Using Kubernetes and leveraging our own machine learning pipeline to predict how many resources we need for each application we use, and our own intelligent scaling algorithm, we can improve our resource usage. If we boost the resource usage, for example, by several percent, that means we can reduce huge hardware costs. Then we don't need that many servers to get that same amount of workload. That can save us a lot of resources."</p>
{{< case-studies/quote author="HAIFENG LIU, CHIEF ARCHITECT, JD.com" >}}
"We can share our successful experience with the community, and we also receive good feedback from others. So it's mutually beneficial."
{{< /case-studies/quote >}}
<p>JD.com, which won CNCF's 2018 End User Award, is also using <a href="https://helm.sh/">Helm</a>, <a href="https://github.com/containernetworking">CNI</a>, <a href="https://goharbor.io/">Harbor</a>, and <a href="https://vitess.io/">Vitess</a> on its platform. JD.com developers have made considerable contributions to Vitess, the CNCF project for scalable MySQL cluster management, and the company hopes to donate its own project to CNCF in the near future. Community participation is a priority for JD.com. "We have a good partnership with this community," says Liu. "We can share our successful experience with the community, and we also receive good feedback from others. So it's mutually beneficial."</p>
<p>To that end, Liu offers this advice for other companies considering adopting cloud native technology. "First you need to combine this technology with your own businesses, and the second is you need clear goals," he says. "You cannot just use the technology because others are using it. You need to consider your own objectives."</p>
<p>For JD.com's objectives, these cloud native technologies have been an ideal fit with the company's own homegrown innovation. "Kubernetes helped us reduce the complexity of operations to make distributed systems stable and scalable," says Liu. "Most importantly, we can leverage Kubernetes for scheduling resources to reduce hardware costs. That's the big win."</p>
+58 -84
View File
@@ -1,113 +1,87 @@
---
title: NAIC Case Study
linkTitle: NAIC
case_study_styles: true
cid: caseStudies
css: /css/style_case_studies.css
logo: naic_featured_logo.png
featured: false
new_case_study_styles: true
heading_background: /images/case-studies/naic/banner1.jpg
heading_title_logo: /images/naic_logo.png
subheading: >
A Culture and Technology Transition Enabled by Kubernetes
case_study_details:
- Company: NAIC
- Location: Washington, DC
- Industry: Regulatory
---
<div class="banner1" style="background-image: url('/images/case-studies/naic/banner1.jpg')">
<h1> CASE STUDY:<img src="/images/naic_logo.png" class="header_logo" style="width:18%"><br> <div class="subhead" style="margin-top:1%">A Culture and Technology Transition Enabled by Kubernetes</div></h1>
<h2>Challenge</h2>
</div>
<p>The <a href="http://www.naic.org/">National Association of Insurance Commissioners (NAIC)</a>, the U.S. standard-setting and regulatory support organization, was looking for a way to deliver new services faster to provide more value for members and staff. It also needed greater agility to improve productivity internally.</p>
<div class="details" style="font-size:1em">
Company &nbsp;<b>National Association of Insurance Commissioners (NAIC)</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Washington, DC</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Regulatory</b>
</div>
<hr>
<section class="section1">
<div class="cols">
<div class="col1">
<h2>Challenge</h2>
The <a href="http://www.naic.org/">National Association of Insurance Commissioners (NAIC)</a>, the U.S. standard-setting and regulatory support organization, was looking for a way to deliver new services faster to provide more value for members and staff. It also needed greater agility to improve productivity internally.
<br><br>
<h2>Solution</h2>
Beginning in 2016, they started using <a href="https://www.cncf.io/">Cloud Native Computing Foundation (CNCF)</a> tools such as <a href="https://prometheus.io/">Prometheus</a>. NAIC began hosting internal systems and development systems on <a href="https://kubernetes.io/">Kubernetes</a> at the beginning of 2018, as part of a broad move toward the public cloud. "Our culture and technology transition is a strategy embraced by our top leaders," says Dan Barker, Chief Enterprise Architect. "It has already proven successful by allowing us to accelerate our value pipeline by more than double while decreasing our costs by more than half. We are also seeing customer satisfaction increase as we add more and more applications to these new technologies."
</div>
<div class="col2">
<h2>Solution</h2>
<p>Beginning in 2016, they started using <a href="https://www.cncf.io/">Cloud Native Computing Foundation (CNCF)</a> tools such as <a href="https://prometheus.io/">Prometheus</a>. NAIC began hosting internal systems and development systems on <a href="https://kubernetes.io/">Kubernetes</a> at the beginning of 2018, as part of a broad move toward the public cloud. "Our culture and technology transition is a strategy embraced by our top leaders," says Dan Barker, Chief Enterprise Architect. "It has already proven successful by allowing us to accelerate our value pipeline by more than double while decreasing our costs by more than half. We are also seeing customer satisfaction increase as we add more and more applications to these new technologies."</p>
<h2>Impact</h2>
Leveraging Kubernetes, "our development teams can create rapid prototypes far faster than they used to," Barker said. Applications running on Kubernetes are more resilient than those running in other environments. The deployment of open source solutions is helping influence company culture, as NAIC becomes a more open and transparent organization.
<br><br>
"We completed a small prototype in two days that would have previously taken at least a month," Barker says. Resiliency is currently measured in how much downtime systems have. "Theyve basically had none, and the occasional issue is remedied in minutes," he says.
<p>Leveraging Kubernetes, "our development teams can create rapid prototypes far faster than they used to," Barker said. Applications running on Kubernetes are more resilient than those running in other environments. The deployment of open source solutions is helping influence company culture, as NAIC becomes a more open and transparent organization.</p>
</div>
<p>"We completed a small prototype in two days that would have previously taken at least a month," Barker says. Resiliency is currently measured in how much downtime systems have. "They've basically had none, and the occasional issue is remedied in minutes," he says.</p>
</div>
</section>
<div class="banner2">
<div class="banner2text">
"Our culture and technology transition is a strategy embraced by our top leaders. It has already proven successful by allowing us to accelerate our value pipeline by more than double while decreasing our costs by more than half. We are also seeing customer satisfaction increase as we add more and more applications to these new technologies." <br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Dan Barker, Chief Enterprise Architect, NAIC</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
NAIC—which was created and overseen by the chief insurance regulators from the 50 states, the District of Columbia and five U.S. territories—provides a means through which state insurance regulators establish standards and best practices, conduct peer reviews, and coordinate their regulatory oversight. Their staff supports these efforts and represents the collective views of regulators in the United States and internationally. NAIC members, together with the organizations central resources, form the national system of state-based insurance regulation in the United States.<br><br>
The organization has been using the cloud for years, and wanted to find more ways to quickly deliver new services that provide more value for members and staff. They looked to Kubernetes for a solution. Within NAIC, several groups are leveraging Kubernetes, one being the Platform Engineering Team. "The team building out these tools are not only deploying and operating Kubernetes, but theyre also using them," Barker says. "In fact, were using GitLab to deploy Kubernetes with a pipeline using <a href="https://github.com/kubernetes/kops">kops</a>. This team was created from developers, operators, and quality engineers from across the company, so their jobs have changed quite a bit."<br><br>
In addition, NAIC is onboarding teams to the new platform, and those teams have seen a lot of change in how they work and what they can do. "They now have more power in creating their own infrastructure and deploying their own applications," Barker says. They also use pipelines to facilitate their currently manual processes. NAIC has consumers who are using GitLab heavily, and theyre starting to use Kubernetes to deploy simple applications that help their internal processes.
{{< case-studies/quote author="Dan Barker, Chief Enterprise Architect, NAIC" >}}
"Our culture and technology transition is a strategy embraced by our top leaders. It has already proven successful by allowing us to accelerate our value pipeline by more than double while decreasing our costs by more than half. We are also seeing customer satisfaction increase as we add more and more applications to these new technologies."
{{< /case-studies/quote >}}
<p>NAIC—which was created and overseen by the chief insurance regulators from the 50 states, the District of Columbia and five U.S. territories—provides a means through which state insurance regulators establish standards and best practices, conduct peer reviews, and coordinate their regulatory oversight. Their staff supports these efforts and represents the collective views of regulators in the United States and internationally. NAIC members, together with the organization's central resources, form the national system of state-based insurance regulation in the United States.</p>
</div>
</section>
<div class="banner3" style="background-image: url('/images/case-studies/naic/banner3.jpg')">
<div class="banner3text">
"In our experience, vendor lock-in and tooling that is highly specific results in less resilient technology with fewer minds working to solve problems and grow the community." <br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Dan Barker, Chief Enterprise Architect, NAIC</span>
</div>
</div>
<section class="section3">
<div class="fullcol">
"We needed greater agility to enable our own productivity internally," he says. "We decided it was right for us to move everything to the public cloud [Amazon Web Services] to help with that process and be able to access many of the native tools that allows us to move faster by not needing to build everything."
The NAIC also wanted to be cloud-agnostic, "and Kubernetes helps with this for our compute layer," Barker says. "Compute is pretty standard across the clouds, and now we can take advantage of any of them while getting all of the other features Kubernetes offers."<br><br>
The NAIC currently hosts internal systems and development systems on Kubernetes, and has already seen how impactful it can be. "Our development teams can create rapid prototypes in minutes instead of weeks," Barker says. "This recently happened with an internal tool that had no measurable wait time on the infrastructure. It was solely development bound. There is now a central shared resource that lives in AWS, which means it can grow as needed."
The native integrations into Kubernetes at NAIC has made it easy to write code and have it running in minutes instead of weeks. Applications running on Kubernetes have also proven to be more resilient than those running in other environments. "We even have teams using this to create more internal tools to help with communication or automating some of their current tasks," Barker says.
<br><br>
"We knew that Kubernetes had become the de facto standard for container orchestration," he says. "Two major factors for selecting this were the three major cloud vendors hosting their own versions and having it hosted in a neutral party as fully open source."
<br><br>
As for other CNCF projects, NAIC is using Prometheus on a small scale and hopes to continue using it moving forward because of the seamless integration with Kubernetes. The Association also is considering <a href="https://grpc.io/">gRPC</a> as its internal communications standard, <a href="https://www.envoyproxy.io/">Envoy</a> in conjunction with Istio for service mesh, <a href="http://opentracing.io/">OpenTracing</a> and <a href="https://www.jaegertracing.io">Jaeger</a> for tracing aggregation, and <a href="https://www.fluentd.org/">Fluentd</a> with its Elasticsearch cluster.
<p>The organization has been using the cloud for years, and wanted to find more ways to quickly deliver new services that provide more value for members and staff. They looked to Kubernetes for a solution. Within NAIC, several groups are leveraging Kubernetes, one being the Platform Engineering Team. "The team building out these tools are not only deploying and operating Kubernetes, but they're also using them," Barker says. "In fact, we're using GitLab to deploy Kubernetes with a pipeline using <a href="https://github.com/kubernetes/kops">kops</a>. This team was created from developers, operators, and quality engineers from across the company, so their jobs have changed quite a bit."</p>
</div>
</section>
<div class="banner4" style="background-image: url('/images/case-studies/naic/banner4.jpg')">
<div class="banner4text">
"We knew that Kubernetes had become the de facto standard for container orchestration. Two major factors for selecting this were the three major cloud vendors hosting their own versions and having it hosted in a neutral party as fully open source."<span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br><br>- Dan Barker, Chief Enterprise Architect, NAIC</span>
</div>
</div>
</div>
<p>In addition, NAIC is onboarding teams to the new platform, and those teams have seen a lot of change in how they work and what they can do. "They now have more power in creating their own infrastructure and deploying their own applications," Barker says. They also use pipelines to facilitate their currently manual processes. NAIC has consumers who are using GitLab heavily, and they're starting to use Kubernetes to deploy simple applications that help their internal processes.</p>
<section class="section5" style="padding:0px !important">
<div class="fullcol">
{{< case-studies/quote
image="/images/case-studies/naic/banner3.jpg"
author="Dan Barker, Chief Enterprise Architect, NAIC"
>}}
"In our experience, vendor lock-in and tooling that is highly specific results in less resilient technology with fewer minds working to solve problems and grow the community."
{{< /case-studies/quote >}}
The open governance and broad industry participation in CNCF provided a comfort level with the technology, Barker says. "We also see it as helping to influence our own company culture," he says. "Were moving to be a more open and transparent company, and we are encouraging our staff to get involved with the different working groups and codebases. We recently became CNCF members to help further our commitment to community contribution and transparency."<br><br>
Factors such as vendor-neutrality and cross-industry investment were important in the selection. "In our experience, vendor lock-in and tooling that is highly specific results in less resilient technology with fewer minds working to solve problems and grow the community," Barker says.<br><br>
NAIC is a largely Oracle shop, Barker says, and has been running mostly Java on JBoss. "However, we have years of history with other applications," he says. "Some of these have been migrated by completely rewriting the application, while others are just being modified slightly to fit into this new paradigm."<br><br>
Running on AWS cloud, the Association has not specifically taken a microservices approach. "We are moving to microservices where practical, but we havent found that its a necessity to operate them within Kubernetes," Barker says<br><br>
All of its databases are currently running within public cloud services, but they have explored eventually running those in Kubernetes, as it makes sense. "Were doing this to get more reuse from common components and to limit our failure domains to something more manageable and observable," Barker says.
<p>"We needed greater agility to enable our own productivity internally," he says. "We decided it was right for us to move everything to the public cloud [Amazon Web Services] to help with that process and be able to access many of the native tools that allows us to move faster by not needing to build everything."
The NAIC also wanted to be cloud-agnostic, "and Kubernetes helps with this for our compute layer," Barker says. "Compute is pretty standard across the clouds, and now we can take advantage of any of them while getting all of the other features Kubernetes offers."</p>
<p>The NAIC currently hosts internal systems and development systems on Kubernetes, and has already seen how impactful it can be. "Our development teams can create rapid prototypes in minutes instead of weeks," Barker says. "This recently happened with an internal tool that had no measurable wait time on the infrastructure. It was solely development bound. There is now a central shared resource that lives in AWS, which means it can grow as needed."</p>
</div>
<p>The native integrations into Kubernetes at NAIC has made it easy to write code and have it running in minutes instead of weeks. Applications running on Kubernetes have also proven to be more resilient than those running in other environments. "We even have teams using this to create more internal tools to help with communication or automating some of their current tasks," Barker says.</p>
<div class="banner5">
<div class="banner5text">
"We have been able to move much faster at lower cost than we were able to in the past," Barker says. "We were able to complete one of our projects in a year, when the previous version took over two years. And the new project cost $500,000 while the original required $3 million, and with fewer defects. We are also able to push out new features much faster."<span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br><br>- Dan Barker, Chief Enterprise Architect, NAIC</span>
<p>"We knew that Kubernetes had become the de facto standard for container orchestration," he says. "Two major factors for selecting this were the three major cloud vendors hosting their own versions and having it hosted in a neutral party as fully open source."</p>
</div>
</div>
<div class="fullcol">
<p>As for other CNCF projects, NAIC is using Prometheus on a small scale and hopes to continue using it moving forward because of the seamless integration with Kubernetes. The Association also is considering <a href="https://grpc.io/">gRPC</a> as its internal communications standard, <a href="https://www.envoyproxy.io/">Envoy</a> in conjunction with Istio for service mesh, <a href="http://opentracing.io/">OpenTracing</a> and <a href="https://www.jaegertracing.io">Jaeger</a> for tracing aggregation, and <a href="https://www.fluentd.org/">Fluentd</a> with its Elasticsearch cluster.</p>
NAIC has seen a significant business impact from its efforts. "We have been able to move much faster at lower cost than we were able to in the past," Barker says. "We were able to complete one of our projects in a year, when the previous version took over two years. And the new project cost $500,000 while the original required $3 million, and with fewer defects. We are also able to push out new features much faster."
He says the organization is moving toward continuous deployment "because the business case makes sense. The research is becoming very hard to argue with. We want to reduce our batch sizes and optimize on delivering value to customers and not feature count. This is requiring a larger cultural shift than just a technology shift."
NAIC is "becoming more open and transparent, as well as more resilient to failure," Barker says. "Even our customers are wanting more and more of this and trying to figure out how they can work with us to accomplish our mutual goals faster. Members of the insurance industry have reached out so that we can better learn together and grow as an industry."
{{< case-studies/quote
image="/images/case-studies/naic/banner4.jpg"
author="Dan Barker, Chief Enterprise Architect, NAIC"
>}}
"We knew that Kubernetes had become the de facto standard for container orchestration. Two major factors for selecting this were the three major cloud vendors hosting their own versions and having it hosted in a neutral party as fully open source."
{{< /case-studies/quote >}}
</div>
<p>The open governance and broad industry participation in CNCF provided a comfort level with the technology, Barker says. "We also see it as helping to influence our own company culture," he says. "We're moving to be a more open and transparent company, and we are encouraging our staff to get involved with the different working groups and codebases. We recently became CNCF members to help further our commitment to community contribution and transparency."</p>
</section>
<p>Factors such as vendor-neutrality and cross-industry investment were important in the selection. "In our experience, vendor lock-in and tooling that is highly specific results in less resilient technology with fewer minds working to solve problems and grow the community," Barker says.</p>
<p>NAIC is a largely Oracle shop, Barker says, and has been running mostly Java on JBoss. "However, we have years of history with other applications," he says. "Some of these have been migrated by completely rewriting the application, while others are just being modified slightly to fit into this new paradigm."</p>
<p>Running on AWS cloud, the Association has not specifically taken a microservices approach. "We are moving to microservices where practical, but we haven't found that it's a necessity to operate them within Kubernetes," Barker says.</p>
<p>All of its databases are currently running within public cloud services, but they have explored eventually running those in Kubernetes, as it makes sense. "We're doing this to get more reuse from common components and to limit our failure domains to something more manageable and observable," Barker says.</p>
{{< case-studies/quote author="Dan Barker, Chief Enterprise Architect, NAIC" >}}
"We have been able to move much faster at lower cost than we were able to in the past," Barker says. "We were able to complete one of our projects in a year, when the previous version took over two years. And the new project cost $500,000 while the original required $3 million, and with fewer defects. We are also able to push out new features much faster."
{{< /case-studies/quote >}}
<p>NAIC has seen a significant business impact from its efforts. "We have been able to move much faster at lower cost than we were able to in the past," Barker says. "We were able to complete one of our projects in a year, when the previous version took over two years. And the new project cost $500,000 while the original required $3 million, and with fewer defects. We are also able to push out new features much faster."</p>
<p>He says the organization is moving toward continuous deployment "because the business case makes sense. The research is becoming very hard to argue with. We want to reduce our batch sizes and optimize on delivering value to customers and not feature count. This is requiring a larger cultural shift than just a technology shift."</p>
<p>NAIC is "becoming more open and transparent, as well as more resilient to failure," Barker says. "Even our customers are wanting more and more of this and trying to figure out how they can work with us to accomplish our mutual goals faster. Members of the insurance industry have reached out so that we can better learn together and grow as an industry."</p>
+59 -73
View File
@@ -1,95 +1,81 @@
---
title: Nav Case Study
linkTitle: Nav
case_study_styles: true
cid: caseStudies
css: /css/style_case_studies.css
featured: false
new_case_study_styles: true
heading_background: /images/case-studies/nav/banner1.jpg
heading_title_logo: /images/nav_logo.png
subheading: >
How A Startup Reduced Its Infrastructure Costs by 50% With Kubernetes
case_study_details:
- Company: Nav
- Location: Salt Lake City, Utah, and San Mateo, California
- Industry: Financial services for businesses
---
<div class="banner1" style="background-image: url('/images/case-studies/nav/banner1.jpg')">
<h1> CASE STUDY:<img src="/images/nav_logo.png" class="header_logo" style="width:15%"><br> <div class="subhead" style="margin-top:1%">How A Startup Reduced Its Infrastructure Costs by 50% With Kubernetes
</div></h1>
<h2>Challenge</h2>
</div>
<p>Founded in 2012, <a href="https://www.nav.com/">Nav</a> provides small business owners with access to their business credit scores from all three major commercial credit bureaus—Equifax, Experian and Dun & Bradstreet—and financing options that best fit their needs. Five years in, the startup was growing rapidly, and "our cloud environments were getting very large, and our usage of those environments was extremely low, like under 1%," says Director of Engineering Travis Jeppson. "We wanted our usage of cloud environments to be more tightly coupled with what we actually needed, so we started looking at containerization and orchestration to help us be able to run workloads that were distinct from one another but could share a similar resource pool."</p>
<div class="details">
Company &nbsp;<b>Nav</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Salt Lake City, Utah, and San Mateo, California</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Financial services for businesses</b>
</div>
<h2>Solution</h2>
<p>After evaluating a number of orchestration solutions, the Nav team decided to adopt <a href="https://kubernetes.io/">Kubernetes</a> running on <a href="https://aws.amazon.com/">AWS</a>. The strength of the community around Kubernetes was a strong draw, as well as its Google provenance. Plus, "the other solutions tended to be fairly heavy-handed, really complex, really large, and really hard to manage just off the bat," says Jeppson. "Kubernetes gave us a very simple way to be able to step into an orchestration solution that fit our needs at the time, but also the extensibility of it allowed us to be able to grow with it and be able to build in more features and functionality later on."</p>
<hr>
<section class="section1">
<div class="cols">
<div class="col1" style="width:100%;margin-left:-1.5%">
<br><br>
<h2>Challenge</h2>
Founded in 2012, <a href="https://www.nav.com/">Nav</a> provides small business owners with access to their business credit scores from all three major commercial credit bureaus—Equifax, Experian and Dun & Bradstreet—and financing options that best fit their needs. Five years in, the startup was growing rapidly, and “our cloud environments were getting very large, and our usage of those environments was extremely low, like under 1%,” says Director of Engineering Travis Jeppson. “We wanted our usage of cloud environments to be more tightly coupled with what we actually needed, so we started looking at containerization and orchestration to help us be able to run workloads that were distinct from one another but could share a similar resource pool.”
<br><br>
<h2>Solution</h2>
After evaluating a number of orchestration solutions, the Nav team decided to adopt <a href="https://kubernetes.io/">Kubernetes</a> running on <a href="https://aws.amazon.com/">AWS</a>. The strength of the community around Kubernetes was a strong draw, as well as its Google provenance. Plus, “the other solutions tended to be fairly heavy-handed, really complex, really large, and really hard to manage just off the bat,” says Jeppson. “Kubernetes gave us a very simple way to be able to step into an orchestration solution that fit our needs at the time, but also the extensibility of it allowed us to be able to grow with it and be able to build in more features and functionality later on.”
<br><br>
<h2>Impact</h2>
The four-person team got Kubernetes up and running in six months, and the full migration of Navs 25 microservices was completed in another six months. The results have been impressive: Resource utilization, which led the company on this path in the first place, has increased from 1% to 40%. Launching a new service used to take two developers two weeks; now it takes only one developer less than 10 minutes. Deployments have increased 5x. And the company is saving 50% in infrastructure costs.
</div>
</div>
</section>
<div class="banner2">
<div class="banner2text">
<iframe width="500" height="320" src="https://www.youtube.com/embed/0IbOk1_H-f0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<br><br>
"Kubernetes gave us a very simple way to be able to step into an orchestration solution that fit our needs at the time, but also the extensibility of it allowed us to be able to grow with it and be able to build in more features and functionality&nbsp;later&nbsp;on."
<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Travis Jeppson, Director of Engineering, Nav</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>Founded in 2012, <a href="https://www.nav.com/">Nav</a> provides small business owners with access to their business credit scores from all three major commercial credit bureaus—Equifax, Experian and Dun & Bradstreet—as well as details on their businesses financial health and financing options that best fit their needs. Its mission boils down to this, says Director of Engineering Travis Jeppson: “to increase the success rate of small businesses.”</h2>
A couple of years ago, Nav recognized an obstacle in its own path to success. The business was growing rapidly, and “our cloud environments were getting very large, and our usage of those environments was extremely low, like under 1%,” says Jeppson. “Most of the problem was around the ability to scale. We were just throwing money at it. Lets just spin up more servers. Lets just do more things in order to handle an increased load. And with us being a startup, that could lead to our demise. We dont have the money to burn on that kind of stuff.”<br><br>
Plus, every new service had to go through 10 different people, taking an unacceptably long two weeks to launch. “All of the patch management and the server management was done very manually, and so we all had to watch it and maintain it really well,” adds Jeppson. “It was just a very troublesome system.”
<p>The four-person team got Kubernetes up and running in six months, and the full migration of Nav's 25 microservices was completed in another six months. The results have been impressive: Resource utilization, which led the company on this path in the first place, has increased from 1% to 40%. Launching a new service used to take two developers two weeks; now it takes only one developer less than 10 minutes. Deployments have increased 5x. And the company is saving 50% in infrastructure costs.</p>
{{< case-studies/quote author="Travis Jeppson, Director of Engineering, Nav" >}}
<iframe width="500" height="320" src="https://www.youtube.com/embed/0IbOk1_H-f0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<br>
"Kubernetes gave us a very simple way to be able to step into an orchestration solution that fit our needs at the time, but also the extensibility of it allowed us to be able to grow with it and be able to build in more features and functionality later on."
{{< /case-studies/quote >}}
</div>
</section>
<div class="banner3" style="background-image: url('/images/case-studies/nav/banner3.jpg')">
<div class="banner3text">
"The community is absolutely vital: being able to pass ideas around, talk about a lot of the similar challenges that were all facing, and just get help. I like that were able to tackle the same problems for different reasons but help each other along the way."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Travis Jeppson, Director of Engineering, Nav</span>
{{< case-studies/lead >}}
Founded in 2012, <a href="https://www.nav.com/">Nav</a> provides small business owners with access to their business credit scores from all three major commercial credit bureaus—Equifax, Experian and Dun & Bradstreet—as well as details on their businesses' financial health and financing options that best fit their needs. Its mission boils down to this, says Director of Engineering Travis Jeppson: "to increase the success rate of small businesses."
{{< /case-studies/lead >}}
</div>
</div>
<section class="section3">
<div class="fullcol">
Jeppson had worked with containers at his previous job, and pitched that technology to Navs management as a solution to these problems. He got the green light in early 2017. “We wanted our usage of cloud environments to be more tightly coupled with what we actually needed, so we started looking at containerization and orchestration to help us be able to run workloads that were distinct from one another but could share a similar resource pool,” he says.<br><br>
After evaluating a number of orchestration solutions, the company decided to adopt <a href="https://kubernetes.io/">Kubernetes</a> running on <a href="https://aws.amazon.com/">AWS</a>. The strength of the community around Kubernetes was a strong draw, as was its Google origins. Additionally, “the other solutions tended to be fairly heavy-handed, really complex, really large, and really hard to manage just off the bat,” says Jeppson. “Kubernetes gave us a very simple way to be able to step into an orchestration solution that fit our needs at the time, but the extensibility of it would also allow us to grow with it and build in more features and functionality later on.”<br><br>
Jeppsons four-person Engineering Services team got Kubernetes up and running in six months (they decided to use <a href="http://kubespray.io/">Kubespray</a> to spin up clusters), and the full migration of Navs 25 microservices and one primary monolith was completed in another six months. “We couldnt rewrite everything; we couldnt stop,” he says. “We had to stay up, we had to stay available, and we had to have minimal amount of downtime. So we got really comfortable around our building pipeline, our metrics and logging, and then around Kubernetes itself: how to launch it, how to upgrade it, how to service it. And we moved little by little.”
</div>
</section>
<div class="banner4" style="background-image: url('/images/case-studies/nav/banner4.jpg')" style="width:100%">
<div class="banner4text">
“Kubernetes has brought so much value to Nav by allowing all of these new freedoms that we had just never had before.” <br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Travis Jeppson, Director of Engineering, Nav</span>
</div>
</div>
<p>A couple of years ago, Nav recognized an obstacle in its own path to success. The business was growing rapidly, and "our cloud environments were getting very large, and our usage of those environments was extremely low, like under 1%," says Jeppson. "Most of the problem was around the ability to scale. We were just throwing money at it. 'Let's just spin up more servers. Let's just do more things in order to handle an increased load.' And with us being a startup, that could lead to our demise. We don't have the money to burn on that kind of stuff."</p>
<section class="section5" style="padding:0px !important">
<p>Plus, every new service had to go through 10 different people, taking an unacceptably long two weeks to launch. "All of the patch management and the server management was done very manually, and so we all had to watch it and maintain it really well," adds Jeppson. "It was just a very troublesome system."</p>
<div class="fullcol">
A crucial part of the process involved educating Navs 50 engineers and being transparent regarding the new workflow as well as the roadmap for the migration. Jeppson did regular presentations along the way, and a week of four-hours-a-day labs for the entire staff of engineers. He then created a repository in <a href="https://gitlab.com/">GitLab</a> to house all of the information. “We showed all the frontend and backend developers how to go in, create their own namespace using <a href="https://kubernetes.io/docs/tasks/tools/install-kubectl/">kubectl</a>, all themselves,” he says. “Now, a lot of times, they just come to us and say, This is ready. We click a little button in GitLab to allow it to release into production, and theyre off to the races.”<br><br>
Since the migration was completed in early 2018, the results have been impressive: Resource utilization, which led the company on this path in the first place, has increased from 1% to 40%. Launching a new service used to take two developers two weeks; now it takes only one developer less than 10 minutes. Deployments have increased 5x, from 10 a day to 50 a day. And the company is saving 50% in infrastructure costs on the computational side. “Next we want to go in to address the database side, and once we do that, then were going to continue to drop that cost quite a bit more,” says Jeppson.<br><br>
Kubernetes has also helped Nav with its compliance needs. Before, “we had to map one application to one server, mostly due to different compliance regulations around data,” Jeppson says. “With the Kubernetes API, we could add in network policies and segregate that data and restrict it if needed.” The company segregates its cluster into an unrestricted zone and a restricted zone, which has its own set of nodes where data protection happens. The company also uses the <a href="https://www.twistlock.com/">Twistlock</a> tool to ensure security, “and that makes it a lot easier to sleep at night,” he adds.
{{< case-studies/quote
image="/images/case-studies/nav/banner3.jpg"
author="Travis Jeppson, Director of Engineering, Nav"
>}}
"The community is absolutely vital: being able to pass ideas around, talk about a lot of the similar challenges that we're all facing, and just get help. I like that we're able to tackle the same problems for different reasons but help each other along the way."
{{< /case-studies/quote >}}
</div>
<p>Jeppson had worked with containers at his previous job, and pitched that technology to Nav's management as a solution to these problems. He got the green light in early 2017. "We wanted our usage of cloud environments to be more tightly coupled with what we actually needed, so we started looking at containerization and orchestration to help us be able to run workloads that were distinct from one another but could share a similar resource pool," he says.</p>
<div class="banner5" >
<div class="banner5text">
"Were talking four to 10 times the amount of traffic that we handle now, and its just like, 'Oh, yeah. Were good. Kubernetes handles this for us.'"<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Travis Jeppson, Director of Engineering, Nav</span></div>
</div>
<p>After evaluating a number of orchestration solutions, the company decided to adopt <a href="https://kubernetes.io/">Kubernetes</a> running on <a href="https://aws.amazon.com/">AWS</a>. The strength of the community around Kubernetes was a strong draw, as was its Google origins. Additionally, "the other solutions tended to be fairly heavy-handed, really complex, really large, and really hard to manage just off the bat," says Jeppson. "Kubernetes gave us a very simple way to be able to step into an orchestration solution that fit our needs at the time, but the extensibility of it would also allow us to grow with it and build in more features and functionality later on."</p>
<div class="fullcol">
With Kubernetes in place, the Nav team also started improving the systems metrics and logging by adopting <a href="https://prometheus.io/">Prometheus</a>. “Prometheus created a standard around metrics that was really easy for a developer to adopt,” says Jeppson. “They have the freedom to display what they want, to do what they need, and keep their codebase clean, and that to us was absolutely a must.”<br><br>
Next up for Nav in the coming year: looking at tracing, storage, and service mesh. Theyre currently evaluating <a href="https://www.envoyproxy.io/">Envoy</a>, <a href="https://opentracing.io/">OpenTracing</a>, and <a href="https://www.jaegertracing.io/">Jaeger</a> after spending much of KubeCon talking to other companies. “The community is absolutely vital: being able to pass ideas around, talk about a lot of the similar challenges that were all facing, and just get help. I like that were able to tackle the same problems for different reasons but help each other along the way,” says Jeppson. “Theres still so, so much to do around scalability, around being able to really fully adopt a cloud native solution.”<br><br>
Of course, it all starts with Kubernetes. With that technology, Jeppsons team has built a platform that allows Nav to scale, and that “has brought so much value to Nav by allowing all of these new freedoms that we had just never had before,” he says. <br><br>
Conversations about new products used to be bogged down by the fact theyd have to wait six months to get an environment set up with isolation and then figure out how to handle spikes of traffic. “But now its just nothing to us,” says Jeppson. “Were talking four to 10 times the amount of traffic that we handle now, and its just like, Oh, yeah. Were good. Kubernetes handles this for us.’”
<p>Jeppson's four-person Engineering Services team got Kubernetes up and running in six months (they decided to use <a href="http://kubespray.io/">Kubespray</a> to spin up clusters), and the full migration of Nav's 25 microservices and one primary monolith was completed in another six months. "We couldn't rewrite everything; we couldn't stop," he says. "We had to stay up, we had to stay available, and we had to have minimal amount of downtime. So we got really comfortable around our building pipeline, our metrics and logging, and then around Kubernetes itself: how to launch it, how to upgrade it, how to service it. And we moved little by little."</p>
</div>
</section>
{{< case-studies/quote
image="/images/case-studies/nav/banner4.jpg"
author="Travis Jeppson, Director of Engineering, Nav"
>}}
"Kubernetes has brought so much value to Nav by allowing all of these new freedoms that we had just never had before."
{{< /case-studies/quote >}}
<p>A crucial part of the process involved educating Nav's 50 engineers and being transparent regarding the new workflow as well as the roadmap for the migration. Jeppson did regular presentations along the way, and a week of four-hours-a-day labs for the entire staff of engineers. He then created a repository in <a href="https://gitlab.com/">GitLab</a> to house all of the information. "We showed all the frontend and backend developers how to go in, create their own namespace using <a href="https://kubernetes.io/docs/tasks/tools/install-kubectl/">kubectl</a>, all themselves," he says. "Now, a lot of times, they just come to us and say, 'This is ready.' We click a little button in GitLab to allow it to release into production, and they're off to the races."</p>
<p>Since the migration was completed in early 2018, the results have been impressive: Resource utilization, which led the company on this path in the first place, has increased from 1% to 40%. Launching a new service used to take two developers two weeks; now it takes only one developer less than 10 minutes. Deployments have increased 5x, from 10 a day to 50 a day. And the company is saving 50% in infrastructure costs on the computational side. "Next we want to go in to address the database side, and once we do that, then we're going to continue to drop that cost quite a bit more," says Jeppson.</p>
<p>Kubernetes has also helped Nav with its compliance needs. Before, "we had to map one application to one server, mostly due to different compliance regulations around data," Jeppson says. "With the Kubernetes API, we could add in network policies and segregate that data and restrict it if needed." The company segregates its cluster into an unrestricted zone and a restricted zone, which has its own set of nodes where data protection happens. The company also uses the <a href="https://www.twistlock.com/">Twistlock</a> tool to ensure security, "and that makes it a lot easier to sleep at night," he adds.</p>
{{< case-studies/quote author="Travis Jeppson, Director of Engineering, Nav" >}}
"We're talking four to 10 times the amount of traffic that we handle now, and it's just like, 'Oh, yeah. We're good. Kubernetes handles this for us.'"
{{< /case-studies/quote >}}
<p>With Kubernetes in place, the Nav team also started improving the system's metrics and logging by adopting <a href="https://prometheus.io/">Prometheus</a>. "Prometheus created a standard around metrics that was really easy for a developer to adopt," says Jeppson. "They have the freedom to display what they want, to do what they need, and keep their codebase clean, and that to us was absolutely a must."</p>
<p>Next up for Nav in the coming year: looking at tracing, storage, and service mesh. They're currently evaluating <a href="https://www.envoyproxy.io/">Envoy</a>, <a href="https://opentracing.io/">OpenTracing</a>, and <a href="https://www.jaegertracing.io/">Jaeger</a> after spending much of KubeCon talking to other companies. "The community is absolutely vital: being able to pass ideas around, talk about a lot of the similar challenges that we're all facing, and just get help. I like that we're able to tackle the same problems for different reasons but help each other along the way," says Jeppson. "There's still so, so much to do around scalability, around being able to really fully adopt a cloud native solution."</p>
<p>Of course, it all starts with Kubernetes. With that technology, Jeppson's team has built a platform that allows Nav to scale, and that "has brought so much value to Nav by allowing all of these new freedoms that we had just never had before," he says.</p>
<p>Conversations about new products used to be bogged down by the fact they'd have to wait six months to get an environment set up with isolation and then figure out how to handle spikes of traffic. "But now it's just nothing to us," says Jeppson. "We're talking four to 10 times the amount of traffic that we handle now, and it's just like, 'Oh, yeah. We're good. Kubernetes handles this for us.'"</p>
+64 -79
View File
@@ -3,94 +3,79 @@ title: Prowise Case Study
linkTitle: prowise
case_study_styles: true
cid: caseStudies
css: /css/style_case_studies.css
featured: false
new_case_study_styles: true
heading_background: /images/case-studies/nerdalize/banner1.jpg
heading_title_logo: /images/nerdalize_logo.png
subheading: >
Nerdalize: Providing Affordable and Sustainable Cloud Hosting with Kubernetes
case_study_details:
- Company: Nerdalize
- Location: Delft, Netherlands
- Industry: Cloud Provider
---
<div class="banner1" style="background-image: url('/images/case-studies/nerdalize/banner1.jpg')">
<h1> CASE STUDY:<img src="/images/nerdalize_logo.png" class="header_logo" style="width:25%;margin-bottom:-1%"><br> <div class="subhead" style="margin-top:1%">Nerdalize: Providing Affordable and Sustainable Cloud Hosting with Kubernetes
</div></h1>
</div>
<h2>Challenge</h2>
<div class="details">
Company &nbsp;<b>Nerdalize</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Delft, Netherlands </b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Cloud Provider</b>
</div>
<p>Nerdalize offers affordable cloud hosting for customers—and free heat and hot water for people who sign up to house the heating devices that contain the company's servers. The savings Nerdalize realizes by not running data centers are passed on to its customers. When the team began using Docker to make its software more portable, it realized it also needed a container orchestration solution. "As a cloud provider, we have internal services for hosting our backends and billing our customers, but we also need to offer our compute to our end users," says Digital Product Engineer Ad van der Veer. "Since we have these heating devices spread across the Netherlands, we need some way of tying that all together."</p>
<hr>
<section class="section1">
<div class="cols">
<div class="col1" style="width:100%"">
<h2>Solution</h2>
<p>After briefly using a basic scheduling setup with another open source tool, Nerdalize switched to Kubernetes. "On top of our heating devices throughout the Netherlands, we have a virtual machine layer, and on top of that we run Kubernetes clusters for our customers," says van der Veer. "As a small company, we have to provide a rock solid story in terms of the technology. Kubernetes allows us to offer a hybrid solution: 'You can run this on our cloud, but you can run it on other clouds as well. It runs in your internal hardware if you like.' And together with the Docker image standard and our multi-cloud dashboard, that allows them peace of mind."</p>
<h2>Challenge</h2>
Nerdalize offers affordable cloud hosting for customers—and free heat and hot water for people who sign up to house the heating devices that contain the companys servers. The savings Nerdalize realizes by not running data centers are passed on to its customers. When the team began using Docker to make its software more portable, it realized it also needed a container orchestration solution. “As a cloud provider, we have internal services for hosting our backends and billing our customers, but we also need to offer our compute to our end users,” says Digital Product Engineer Ad van der Veer. “Since we have these heating devices spread across the Netherlands, we need some way of tying that all together.”
<h2>Solution</h2>
After briefly using a basic scheduling setup with another open source tool, Nerdalize switched to Kubernetes. “On top of our heating devices throughout the Netherlands, we have a virtual machine layer, and on top of that we run Kubernetes clusters for our customers,” says van der Veer. “As a small company, we have to provide a rock solid story in terms of the technology. Kubernetes allows us to offer a hybrid solution: You can run this on our cloud, but you can run it on other clouds as well. It runs in your internal hardware if you like. And together with the Docker image standard and our multi-cloud dashboard, that allows them peace of mind.”
<h2>Impact</h2>
Nerdalize prides itself on being a Kubernetes-native cloud provider that charges its customers prices 40% below that of other cloud providers. “Every euro that we have to invest for licensing of software thats not open source comes from that 40%,” says van der Veer. If they had used a non-open source orchestration platform instead of Kubernetes, “that would reduce this proposition that we have of 40% less cost to like 30%. Kubernetes directly allows us to have this business model and this strategic advantage.” Nerdalize customers also benefit from time savings: One went from spending a day to set up VMs, network, and software, to spinning up a Kubernetes cluster in minutes. And for households using the heating devices, they save an average of 200 euro a year on their heating bill. The environmental impact? The annual reduction in CO2 emissions comes out to be 2 tons per Nerdalize household, which is equivalent to a car driving 8,000 km.
</div>
</div>
</section>
<div class="banner2">
<div class="banner2text">
“We can walk into a boardroom and put a Kubernetes logo up, and people accept it as an established technology. It becomes this centerpiece where other cloud native projects can tie in, so theres a network effect that each project empowers each other. This is something that has a lot of value when we have to talk to customers and convince them that our cloud fits their&nbsp;needs.”
<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>— AD VAN DER VEER, PRODUCT ENGINEER, NERDALIZE</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>Nerdalize is a cloud hosting provider that has no data centers. Instead, the four-year-old startup places its servers in homes across the Netherlands, inside heating devices it developed to turn the heat produced by the servers into heating and hot water for the residents.
</h2>
“Households save on their gas bills, and cloud users have a much more sustainable cloud solution,” says Maaike Stoops, Customer Experience Queen at Nerdalize. “And we dont have the overhead of building a data center, so our cloud is up to 40% more affordable.”
<br><br>
That business model has been enabled by the companys adoption of containerization and Kubernetes. “When we just got started, Docker was just introduced,” says Digital Product Engineer Ad van der Veer. “We began with a very basic bare metal setup, but once we developed the business, we saw that containerization technology was super useful to help our customers. As a cloud provider, we have internal services for hosting our backends and billing our customers, but we also need to offer our compute to our end users. Since we have these heating devices spread across the Netherlands, we need some way of tying that all together.”
<br><br>
After trying to develop its own scheduling system using another open source tool, Nerdalize found Kubernetes. “Kubernetes provided us with more functionality out of the gate,” says van der Veer.
</div>
</section>
<div class="banner3" style="background-image: url('/images/case-studies/nerdalize/banner3.jpg')">
<div class="banner3text">
“We always try to get a working version online first, like minimal viable products, and then move to stabilize that,” says van der Veer. “And I think that these kinds of day-two problems are now immediately solved. The rapid prototyping we saw internally is a very valuable aspect of Kubernetes.”<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>— AD VAN DER VEER, PRODUCT ENGINEER, NERDALIZE</span>
</div>
</div>
<section class="section3">
<div class="fullcol">
The team first experimented with a basic use case to run customers workloads on Kubernetes. “Getting the data working was kind of difficult, and at the time the installation wasnt that simple,” says van der Veer. “Then CNCF started, we saw the community grow, these problems got solved, and from there it became a very easy decision.”
<br><br>
The first Nerdalize product that was launched in 2017 was “100% containerized and Kubernetes native,” says van der Veer. “On top of our heating devices throughout the Netherlands, we have a virtual machine layer, and on top of that we run Kubernetes clusters for our customers. As a small company, we have to provide a rock solid story in terms of the technology. Kubernetes allows us to offer a hybrid solution: You can run this on our cloud, but you can run it on other clouds as well. It runs in your internal hardware if you like. And together with the Docker image standard and our multi-cloud dashboard, that gives them peace of mind.”
<br><br>
Not to mention the 40% cost savings. “Every euro that we have to invest for licensing of software thats not open source comes from that 40%,” says van der Veer. If Nerdalize had used a non-open source orchestration platform instead of Kubernetes, “that would reduce our cost savings proposition to like 30%. Kubernetes directly allows us to have this business model and this strategic advantage.”
</div>
</section>
<div class="banner4" style="background-image: url('/images/case-studies/nerdalize/banner4.jpg')" style="width:100%">
<div class="banner4text">
“One of our customers used to spend up to a day setting up the virtual machines, network and software every time they wanted to run a project in the cloud. On our platform, with Docker and Kubernetes, customers can have their projects running in a couple of minutes.”
<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- MAAIKE STOOPS, CUSTOMER EXPERIENCE QUEEN, NERDALIZE</span>
</div>
</div>
<section class="section5" style="padding:0px !important">
<div class="fullcol">
Nerdalize now has customers, from individual engineers to data-intensive startups and established companies, all around the world. (For the time being, though, the heating devices are exclusive to the Netherlands.) One of the most common use cases is batch workloads used by data scientists and researchers, and the time savings for these end users is profound. “One of our customers used to spend up to a day setting up the virtual machines, network and software every time they wanted to run a project in the cloud,” says Stoops. “On our platform, with Docker and Kubernetes, customers can have their projects running in a couple of minutes.”
<br><br>
As for households using the heating devices, they save an average of 200 euro a year on their heating bill. The environmental impact? The annual reduction in CO2 emissions comes out to 2 tons per Nerdalize household, which is equivalent to a car driving 8,000 km.
<br><br>
For the Nerdalize team, feature development—such as the accessible command line interface called Nerd, which recently went live—has also been sped up by Kubernetes. “We always try to get a working version online first, like minimal viable products, and then move to stabilize that,” says van der Veer. “And I think that these kinds of day-two problems are now immediately solved. The rapid prototyping we saw internally is a very valuable aspect of Kubernetes.”
<br><br>
Another unexpected benefit has been the growing influence and reputation of Kubernetes. “We can walk into a boardroom and put a Kubernetes logo up, and people accept it as an established technology,” says van der Veer. “It becomes this centerpiece where other cloud native projects can tie in, so theres a network effect that each project empowers each other. This is something that has a lot of value when we have to convince customers that our cloud fits their needs.”
</div>
<p>Nerdalize prides itself on being a Kubernetes-native cloud provider that charges its customers prices 40% below that of other cloud providers. "Every euro that we have to invest for licensing of software that's not open source comes from that 40%," says van der Veer. If they had used a non-open source orchestration platform instead of Kubernetes, "that would reduce this proposition that we have of 40% less cost to like 30%. Kubernetes directly allows us to have this business model and this strategic advantage." Nerdalize customers also benefit from time savings: One went from spending a day to set up VMs, network, and software, to spinning up a Kubernetes cluster in minutes. And for households using the heating devices, they save an average of 200 euro a year on their heating bill. The environmental impact? The annual reduction in CO2 emissions comes out to be 2 tons per Nerdalize household, which is equivalent to a car driving 8,000 km.</p>
<div class="banner5" >
<div class="banner5text">
“It shouldnt be too big of a hassle and too large of a commitment. It should be fun and easy for end users. So we really love Kubernetes in that way.”<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- MAAIKE STOOPS, CUSTOMER EXPERIENCE QUEEN, NERDALIZE</span></div>
</div>
{{< case-studies/quote author="AD VAN DER VEER, PRODUCT ENGINEER, NERDALIZE" >}}
"We can walk into a boardroom and put a Kubernetes logo up, and people accept it as an established technology. It becomes this centerpiece where other cloud native projects can tie in, so there's a network effect that each project empowers each other. This is something that has a lot of value when we have to talk to customers and convince them that our cloud fits their needs."
{{< /case-studies/quote >}}
<div class="fullcol">
{{< case-studies/lead >}}
Nerdalize is a cloud hosting provider that has no data centers. Instead, the four-year-old startup places its servers in homes across the Netherlands, inside heating devices it developed to turn the heat produced by the servers into heating and hot water for the residents.
{{< /case-studies/lead >}}
In fact, Nerdalize is currently looking into implementing other CNCF projects, such as <a href="https://prometheus.io/">Prometheus</a> for monitoring and <a href="https://rook.io/">Rook</a>, “which should help us with some of the data problems that we want to solve for our customers,” says van der Veer.
<br><br>
In the coming year, Nerdalize will scale up the number of households running its hardware to 50, or the equivalent of a small scale data center. Geographic redundancy and greater server ability for customers are two main goals. Spreading the word about Kubernetes is also in the game plan. “We offer a free namespace on our sandbox, multi-tenant Kubernetes cluster for anyone to try,” says van der Veer. “Whats more cool than trying your first Kubernetes project on houses, to warm a shower?”
<br><br>
Ultimately, this ties into Nerdalizes mission of supporting affordable and sustainable cloud hosting. “We want to be the disrupter of the cloud space, showing organizations that running in the cloud is easy and affordable,” says Stoops. “It shouldnt be too big of a hassle and too large of a commitment. It should be fun and easy for end users. So we really love Kubernetes in that way.”
</div>
<p>"Households save on their gas bills, and cloud users have a much more sustainable cloud solution," says Maaike Stoops, Customer Experience Queen at Nerdalize. "And we don't have the overhead of building a data center, so our cloud is up to 40% more affordable."</p>
</section>
<p>That business model has been enabled by the company's adoption of containerization and Kubernetes. "When we just got started, Docker was just introduced," says Digital Product Engineer Ad van der Veer. "We began with a very basic bare metal setup, but once we developed the business, we saw that containerization technology was super useful to help our customers. As a cloud provider, we have internal services for hosting our backends and billing our customers, but we also need to offer our compute to our end users. Since we have these heating devices spread across the Netherlands, we need some way of tying that all together."</p>
<p>After trying to develop its own scheduling system using another open source tool, Nerdalize found Kubernetes. "Kubernetes provided us with more functionality out of the gate," says van der Veer.</p>
{{< case-studies/quote
image="/images/case-studies/nerdalize/banner3.jpg"
author="AD VAN DER VEER, PRODUCT ENGINEER, NERDALIZE"
>}}
"We always try to get a working version online first, like minimal viable products, and then move to stabilize that," says van der Veer. "And I think that these kinds of day-two problems are now immediately solved. The rapid prototyping we saw internally is a very valuable aspect of Kubernetes."
{{< /case-studies/quote >}}
<p>The team first experimented with a basic use case to run customers' workloads on Kubernetes. "Getting the data working was kind of difficult, and at the time the installation wasn't that simple," says van der Veer. "Then CNCF started, we saw the community grow, these problems got solved, and from there it became a very easy decision."</p>
<p>The first Nerdalize product that was launched in 2017 was "100% containerized and Kubernetes native," says van der Veer. "On top of our heating devices throughout the Netherlands, we have a virtual machine layer, and on top of that we run Kubernetes clusters for our customers. As a small company, we have to provide a rock solid story in terms of the technology. Kubernetes allows us to offer a hybrid solution: 'You can run this on our cloud, but you can run it on other clouds as well. It runs in your internal hardware if you like.' And together with the Docker image standard and our multi-cloud dashboard, that gives them peace of mind."</p>
<p>Not to mention the 40% cost savings. "Every euro that we have to invest for licensing of software that's not open source comes from that 40%," says van der Veer. If Nerdalize had used a non-open source orchestration platform instead of Kubernetes, "that would reduce our cost savings proposition to like 30%. Kubernetes directly allows us to have this business model and this strategic advantage."</p>
{{< case-studies/quote
image="/images/case-studies/nerdalize/banner4.jpg"
author="MAAIKE STOOPS, CUSTOMER EXPERIENCE QUEEN, NERDALIZE"
>}}
"One of our customers used to spend up to a day setting up the virtual machines, network and software every time they wanted to run a project in the cloud. On our platform, with Docker and Kubernetes, customers can have their projects running in a couple of minutes."
{{< /case-studies/quote >}}
<p>Nerdalize now has customers, from individual engineers to data-intensive startups and established companies, all around the world. (For the time being, though, the heating devices are exclusive to the Netherlands.) One of the most common use cases is batch workloads used by data scientists and researchers, and the time savings for these end users is profound. "One of our customers used to spend up to a day setting up the virtual machines, network and software every time they wanted to run a project in the cloud," says Stoops. "On our platform, with Docker and Kubernetes, customers can have their projects running in a couple of minutes."</p>
<p>As for households using the heating devices, they save an average of 200 euro a year on their heating bill. The environmental impact? The annual reduction in CO2 emissions comes out to 2 tons per Nerdalize household, which is equivalent to a car driving 8,000 km.</p>
<p>For the Nerdalize team, feature development—such as the accessible command line interface called Nerd, which recently went live—has also been sped up by Kubernetes. "We always try to get a working version online first, like minimal viable products, and then move to stabilize that," says van der Veer. "And I think that these kinds of day-two problems are now immediately solved. The rapid prototyping we saw internally is a very valuable aspect of Kubernetes."</p>
<p>Another unexpected benefit has been the growing influence and reputation of Kubernetes. "We can walk into a boardroom and put a Kubernetes logo up, and people accept it as an established technology," says van der Veer. "It becomes this centerpiece where other cloud native projects can tie in, so there's a network effect that each project empowers each other. This is something that has a lot of value when we have to convince customers that our cloud fits their needs."</p>
{{< case-studies/quote author="MAAIKE STOOPS, CUSTOMER EXPERIENCE QUEEN, NERDALIZE" >}}
"It shouldn't be too big of a hassle and too large of a commitment. It should be fun and easy for end users. So we really love Kubernetes in that way."
{{< /case-studies/quote >}}
<p>In fact, Nerdalize is currently looking into implementing other CNCF projects, such as <a href="https://prometheus.io/">Prometheus</a> for monitoring and <a href="https://rook.io/">Rook</a>, "which should help us with some of the data problems that we want to solve for our customers," says van der Veer.</p>
<p>In the coming year, Nerdalize will scale up the number of households running its hardware to 50, or the equivalent of a small scale data center. Geographic redundancy and greater server ability for customers are two main goals. Spreading the word about Kubernetes is also in the game plan. "We offer a free namespace on our sandbox, multi-tenant Kubernetes cluster for anyone to try," says van der Veer. "What's more cool than trying your first Kubernetes project on houses, to warm a shower?"</p>
<p>Ultimately, this ties into Nerdalize's mission of supporting affordable and sustainable cloud hosting. "We want to be the disrupter of the cloud space, showing organizations that running in the cloud is easy and affordable," says Stoops. "It shouldn't be too big of a hassle and too large of a commitment. It should be fun and easy for end users. So we really love Kubernetes in that way."</p>
+57 -70
View File
@@ -3,87 +3,74 @@ title: NetEase Case Study
linkTitle: NetEase
case_study_styles: true
cid: caseStudies
css: /css/style_case_studies.css
logo: netease_featured_logo.png
featured: false
new_case_study_styles: true
heading_background: /images/case-studies/netease/banner1.jpg
heading_title_logo: /images/netease_logo.png
subheading: >
How NetEase Leverages Kubernetes to Support Internet Business Worldwide
case_study_details:
- Company: NetEase
- Location: Hangzhou, China
- Industry: Internet technology
---
<h2>Challenge</h2>
<div class="banner1" style="background-image: url('/images/case-studies/netease/banner1.jpg')">
<h1> CASE STUDY:<img src="/images/netease_logo.png" class="header_logo" style="width:22%;margin-bottom:-1%"><br> <div class="subhead" style="margin-top:1%"> How NetEase Leverages Kubernetes to Support Internet Business Worldwide</div></h1>
<p>Its gaming business is one of the largest in the world, but that's not all that <a href="https://netease-na.com/">NetEase</a> provides to Chinese consumers. The company also operates e-commerce, advertising, music streaming, online education, and email platforms; the last of which serves almost a billion users with free email services through sites like <a href="https://www.163.com/">163.com</a>. In 2015, the NetEase Cloud team providing the infrastructure for all of these systems realized that their R&D process was slowing down developers. "Our users needed to prepare all of the infrastructure by themselves," says Feng Changjian, Architect for NetEase Cloud and Container Service. "We were eager to provide the infrastructure and tools for our users automatically via serverless container service."</p>
</div>
<h2>Solution</h2>
<div class="details" style="font-size:1em">
Company &nbsp;<b>NetEase</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Hangzhou, China</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Internet technology</b>
</div>
<p>After considering building its own orchestration solution, NetEase decided to base its private cloud platform on <a href="https://kubernetes.io/">Kubernetes</a>. The fact that the technology came out of Google gave the team confidence that it could keep up with NetEase's scale. "After our 2-to-3-month evaluation, we believed it could satisfy our needs," says Feng. The team started working with Kubernetes in 2015, before it was even 1.0. Today, the NetEase internal cloud platform—which also leverages the CNCF projects <a href="https://prometheus.io/">Prometheus</a>, <a href="https://www.envoyproxy.io/">Envoy</a>, <a href="https://goharbor.io/">Harbor</a>, <a href="https://grpc.io/">gRPC</a>, and <a href="https://helm.sh/">Helm</a>—runs 10,000 nodes in a production cluster and can support up to 30,000 nodes in a cluster. Based on its learnings from its internal platform, the company introduced a Kubernetes-based cloud and microservices-oriented PaaS product, <a href="https://landscape.cncf.io/selected=netease-qingzhou-microservice">NetEase Qingzhou Microservice</a>, to outside customers.</p>
<hr>
<section class="section1">
<div class="cols">
<div class="col1" style="margin-left:-1.5% !important">
<h2>Challenge</h2>
Its gaming business is one of the largest in the world, but thats not all that <a href="https://netease-na.com/">NetEase</a> provides to Chinese consumers. The company also operates e-commerce, advertising, music streaming, online education, and email platforms; the last of which serves almost a billion users with free email services through sites like <a href="https://www.163.com/">163.com</a>. In 2015, the NetEase Cloud team providing the infrastructure for all of these systems realized that their R&D process was slowing down developers. “Our users needed to prepare all of the infrastructure by themselves,” says Feng Changjian, Architect for NetEase Cloud and Container Service. “We were eager to provide the infrastructure and tools for our users automatically via serverless container service.”
<br><br>
<h2>Solution</h2>
After considering building its own orchestration solution, NetEase decided to base its private cloud platform on <a href="https://kubernetes.io/">Kubernetes</a>. The fact that the technology came out of Google gave the team confidence that it could keep up with NetEases scale. “After our 2-to-3-month evaluation, we believed it could satisfy our needs,” says Feng. The team started working with Kubernetes in 2015, before it was even 1.0. Today, the NetEase internal cloud platform—which also leverages the CNCF projects <a href="https://prometheus.io/">Prometheus</a>, <a href="https://www.envoyproxy.io/">Envoy</a>, <a href="https://goharbor.io/">Harbor</a>, <a href="https://grpc.io/">gRPC</a>, and <a href="https://helm.sh/">Helm</a>—runs 10,000 nodes in a production cluster and can support up to 30,000 nodes in a cluster. Based on its learnings from its internal platform, the company introduced a Kubernetes-based cloud and microservices-oriented PaaS product, <a href="https://landscape.cncf.io/selected=netease-qingzhou-microservice">NetEase Qingzhou Microservice</a>, to outside customers.
<br><br>
<h2>Impact</h2>
The NetEase team reports that Kubernetes has increased R&D efficiency by more than 100%. Deployment efficiency has improved by 280%. “In the past, if we wanted to do upgrades, we needed to work with other teams, even in other departments,” says Feng. “We needed special staff to prepare everything, so it took about half an hour. Now we can do it in only 5 minutes.” The new platform also allows for mixed deployments using GPU and CPU resources. “Before, if we put all the resources toward the GPU, we wont have spare resources for the CPU. But now we have improvements thanks to the mixed deployments,” he says. Those improvements have also brought an increase in resource utilization.
</div>
</div>
</section>
<div class="banner2">
<div class="banner2text">
"The system can support 30,000 nodes in a single cluster. In production, we have gotten the data of 10,000 nodes in a single cluster. The whole internal system is using this system for development, test, and production."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>— Zeng Yuxing, Architect, NetEase</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>Its gaming business is the <a href="https://newzoo.com/insights/rankings/top-25-companies-game-revenues/">fifth-largest</a> in the world, but thats not all that <a href="https://netease-na.com/">NetEase</a> provides consumers.</h2>The company also operates e-commerce, advertising, music streaming, online education, and email platforms in China; the last of which serves almost a billion users with free email services through popular sites like <a href="https://www.163.com/">163.com</a> and <a href="https://www.126.com/">126.com</a>. With that kind of scale, the NetEase Cloud team providing the infrastructure for all of these systems realized in 2015 that their R&D process was making it hard for developers to keep up with demand. “Our users needed to prepare all of the infrastructure by themselves,” says Feng Changjian, Architect for NetEase Cloud and Container Service. “We were eager to provide the infrastructure and tools for our users automatically via serverless container service.”<br><br>
After considering building its own orchestration solution, NetEase decided to base its private cloud platform on <a href="https://kubernetes.io/">Kubernetes</a>. The fact that the technology came out of Google gave the team confidence that it could keep up with NetEases scale. “After our 2-to-3-month evaluation, we believed it could satisfy our needs,” says Feng.
</div>
</section>
<div class="banner3" style="background-image: url('/images/case-studies/netease/banner3.jpg')">
<div class="banner3text">
"We leveraged the programmability of Kubernetes so that we can build a platform to satisfy the needs of our internal customers for upgrades and deployment."
<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Feng Changjian, Architect for NetEase Cloud and Container Service, NetEase</span>
</div>
</div>
<section class="section3">
<div class="fullcol">
The team started adopting Kubernetes in 2015, before it was even 1.0, because it was relatively easy to use and enabled DevOps at the company. “We abandoned some of the concepts of Kubernetes; we only wanted to use the standardized framework,” says Feng. “We leveraged the programmability of Kubernetes so that we can build a platform to satisfy the needs of our internal customers for upgrades and deployment.”<br><br>
The team first focused on building the container platform to manage resources better, and then turned their attention to improving its support of microservices by adding internal systems such as monitoring. That has meant integrating the CNCF projects <a href="https://prometheus.io/">Prometheus</a>, <a href="https://www.envoyproxy.io/">Envoy</a>, <a href="https://goharbor.io/">Harbor</a>, <a href="https://grpc.io/">gRPC</a>, and <a href="https://helm.sh/">Helm</a>. “We are trying to provide a simplified and standardized process, so our users and customers can leverage our best practices,” says Feng.<br><br>
And the team is continuing to make improvements. For example, the e-commerce part of the business needs to leverage mixed deployments, which in the past required using two separate platforms: the infrastructure-as-a-service platform and the Kubernetes platform. More recently, NetEase has created a cross-platform application that enables using both with one-command deployment.
</div>
</section>
<div class="banner4" style="background-image: url('/images/case-studies/netease/banner4.jpg')">
<div class="banner4text">
"As long as a company has a mature team and enough developers, I think Kubernetes is a very good technology that can help them."
<span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br><br>- Li Lanqing, Kubernetes Developer, NetEase</span>
</div>
</div>
</div>
<p>The NetEase team reports that Kubernetes has increased R&D efficiency by more than 100%. Deployment efficiency has improved by 280%. "In the past, if we wanted to do upgrades, we needed to work with other teams, even in other departments," says Feng. "We needed special staff to prepare everything, so it took about half an hour. Now we can do it in only 5 minutes." The new platform also allows for mixed deployments using GPU and CPU resources. "Before, if we put all the resources toward the GPU, we won't have spare resources for the CPU. But now we have improvements thanks to the mixed deployments," he says. Those improvements have also brought an increase in resource utilization.</p>
<section class="section5" style="padding:0px !important">
<div class="fullcol">
Today, the NetEase internal cloud platform “can support 30,000 nodes in a single cluster,” says Architect Zeng Yuxing. “In production, we have gotten the data of 10,000 nodes in a single cluster. The whole internal system is using this system for development, test, and production.” <br><br>
The NetEase team reports that Kubernetes has increased R&D efficiency by more than 100%. Deployment efficiency has improved by 280%. “In the past, if we wanted to do upgrades, we needed to work with other teams, even in other departments,” says Feng. “We needed special staff to prepare everything, so it took about half an hour. Now we can do it in only 5 minutes.” The new platform also allows for mixed deployments using GPU and CPU resources. “Before, if we put all the resources toward the GPU, we wont have spare resources for the CPU. But now we have improvements thanks to the mixed deployments.” Those improvements have also brought an increase in resource utilization.
{{< case-studies/quote author="Zeng Yuxing, Architect, NetEase" >}}
"The system can support 30,000 nodes in a single cluster. In production, we have gotten the data of 10,000 nodes in a single cluster. The whole internal system is using this system for development, test, and production."
{{< /case-studies/quote >}}
</div>
{{< case-studies/lead >}}
Its gaming business is the <a href="https://newzoo.com/insights/rankings/top-25-companies-game-revenues/">fifth-largest</a> in the world, but that's not all that <a href="https://netease-na.com/">NetEase</a> provides consumers.
{{< /case-studies/lead >}}
<div class="banner5">
<div class="banner5text">
"By engaging with this community, we can gain some experience from it and we can also benefit from it. We can see what are the concerns and the challenges faced by the community, so we can get involved."<span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br><br>- Li Lanqing, Kubernetes Developer, NetEase</span>
<p>The company also operates e-commerce, advertising, music streaming, online education, and email platforms in China; the last of which serves almost a billion users with free email services through popular sites like <a href="https://www.163.com/">163.com</a> and <a href="https://www.126.com/">126.com</a>. With that kind of scale, the NetEase Cloud team providing the infrastructure for all of these systems realized in 2015 that their R&D process was making it hard for developers to keep up with demand. "Our users needed to prepare all of the infrastructure by themselves," says Feng Changjian, Architect for NetEase Cloud and Container Service. "We were eager to provide the infrastructure and tools for our users automatically via serverless container service."</p>
</div>
</div>
<div class="fullcol">
Based on the results and learnings from using its internal platform, the company introduced a Kubernetes-based cloud and microservices-oriented PaaS product, <a href="https://landscape.cncf.io/selected=netease-qingzhou-microservice">NetEase Qingzhou Microservice</a>, to outside customers. “The idea is that we can find the problems encountered by our game and e-commerce and cloud music providers, so we can integrate their experiences and provide a platform to satisfy the needs of our users,” says Zeng. <br><br>
With or without the use of the NetEase product, the team encourages other companies to try Kubernetes. “As long as a company has a mature team and enough developers, I think Kubernetes is a very good technology that can help them,” says Kubernetes developer Li Lanqing.<br><br>
As an end user as well as a vendor, NetEase has become more involved in the community, learning from other companies and sharing what theyve done. The team has been contributing to the Harbor and Envoy projects, providing feedback as the technologies are being tested at NetEase scale. “We are a team focusing on addressing the challenges of microservices architecture,” says Feng. “By engaging with this community, we can gain some experience from it and we can also benefit from it. We can see what are the concerns and the challenges faced by the community, so we can get involved.”
</div>
</section>
<p>After considering building its own orchestration solution, NetEase decided to base its private cloud platform on <a href="https://kubernetes.io/">Kubernetes</a>. The fact that the technology came out of Google gave the team confidence that it could keep up with NetEase's scale. "After our 2-to-3-month evaluation, we believed it could satisfy our needs," says Feng.</p>
{{< case-studies/quote
image="/images/case-studies/netease/banner3.jpg"
author="Feng Changjian, Architect for NetEase Cloud and Container Service, NetEase"
>}}
"We leveraged the programmability of Kubernetes so that we can build a platform to satisfy the needs of our internal customers for upgrades and deployment."
{{< /case-studies/quote >}}
<p>The team started adopting Kubernetes in 2015, before it was even 1.0, because it was relatively easy to use and enabled DevOps at the company. "We abandoned some of the concepts of Kubernetes; we only wanted to use the standardized framework," says Feng. "We leveraged the programmability of Kubernetes so that we can build a platform to satisfy the needs of our internal customers for upgrades and deployment."</p>
<p>The team first focused on building the container platform to manage resources better, and then turned their attention to improving its support of microservices by adding internal systems such as monitoring. That has meant integrating the CNCF projects <a href="https://prometheus.io/">Prometheus</a>, <a href="https://www.envoyproxy.io/">Envoy</a>, <a href="https://goharbor.io/">Harbor</a>, <a href="https://grpc.io/">gRPC</a>, and <a href="https://helm.sh/">Helm</a>. "We are trying to provide a simplified and standardized process, so our users and customers can leverage our best practices," says Feng.</p>
<p>And the team is continuing to make improvements. For example, the e-commerce part of the business needs to leverage mixed deployments, which in the past required using two separate platforms: the infrastructure-as-a-service platform and the Kubernetes platform. More recently, NetEase has created a cross-platform application that enables using both with one-command deployment.</p>
{{< case-studies/quote
image="/images/case-studies/netease/banner4.jpg"
author="Li Lanqing, Kubernetes Developer, NetEase"
>}}
"As long as a company has a mature team and enough developers, I think Kubernetes is a very good technology that can help them."
{{< /case-studies/quote >}}
<p>Today, the NetEase internal cloud platform "can support 30,000 nodes in a single cluster," says Architect Zeng Yuxing. "In production, we have gotten the data of 10,000 nodes in a single cluster. The whole internal system is using this system for development, test, and production."</p>
<p>The NetEase team reports that Kubernetes has increased R&D efficiency by more than 100%. Deployment efficiency has improved by 280%. "In the past, if we wanted to do upgrades, we needed to work with other teams, even in other departments," says Feng. "We needed special staff to prepare everything, so it took about half an hour. Now we can do it in only 5 minutes." The new platform also allows for mixed deployments using GPU and CPU resources. "Before, if we put all the resources toward the GPU, we won't have spare resources for the CPU. But now we have improvements thanks to the mixed deployments." Those improvements have also brought an increase in resource utilization.</p>
{{< case-studies/quote author="Li Lanqing, Kubernetes Developer, NetEase">}}
"By engaging with this community, we can gain some experience from it and we can also benefit from it. We can see what are the concerns and the challenges faced by the community, so we can get involved."
{{< /case-studies/quote >}}
<p>Based on the results and learnings from using its internal platform, the company introduced a Kubernetes-based cloud and microservices-oriented PaaS product, <a href="https://landscape.cncf.io/selected=netease-qingzhou-microservice">NetEase Qingzhou Microservice</a>, to outside customers. "The idea is that we can find the problems encountered by our game and e-commerce and cloud music providers, so we can integrate their experiences and provide a platform to satisfy the needs of our users," says Zeng.</p>
<p>With or without the use of the NetEase product, the team encourages other companies to try Kubernetes. "As long as a company has a mature team and enough developers, I think Kubernetes is a very good technology that can help them," says Kubernetes developer Li Lanqing.</p>
<p>As an end user as well as a vendor, NetEase has become more involved in the community, learning from other companies and sharing what they've done. The team has been contributing to the Harbor and Envoy projects, providing feedback as the technologies are being tested at NetEase scale. "We are a team focusing on addressing the challenges of microservices architecture," says Feng. "By engaging with this community, we can gain some experience from it and we can also benefit from it. We can see what are the concerns and the challenges faced by the community, so we can get involved."</p>
+50 -85
View File
@@ -2,107 +2,72 @@
title: New York Times Case Study
case_study_styles: true
cid: caseStudies
css: /css/style_case_studies.css
new_case_study_styles: true
heading_background: /images/case-studies/newyorktimes/banner1.jpg
heading_title_logo: /images/newyorktimes_logo.png
subheading: >
The New York Times: From Print to the Web to Cloud Native
case_study_details:
- Company: New York Times
- Location: New York, N.Y.
- Industry: News Media
---
<div class="banner1" style="padding-left:8% !important;background-image: url('/images/case-studies/newyorktimes/banner1.jpg')">
<h1> CASE STUDY:<img src="/images/newyorktimes_logo.png" class="header_logo"><br> <div class="subhead">The New York Times: From Print to the Web to Cloud Native
<h2>Challenge</h2>
</div></h1>
<p>When the company decided a few years ago to move out of its data centers, its first deployments on the public cloud were smaller, less critical applications managed on virtual machines. "We started building more and more tools, and at some point we realized that we were doing a disservice by treating Amazon as another data center," says Deep Kapadia, Executive Director, Engineering at The New York Times. Kapadia was tapped to lead a Delivery Engineering Team that would "design for the abstractions that cloud providers offer us."</p>
</div>
<h2>Solution</h2>
<div class="details" style="padding-left:6% !important">
Company &nbsp;<b>New York Times</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>New York, N.Y.
</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>News Media</b>
</div>
<p>The team decided to use <a href="https://cloud.google.com/">Google Cloud Platform</a> and its Kubernetes-as-a-service offering, <a href="https://cloud.google.com/kubernetes-engine/">GKE</a>.</p>
<hr />
<section class="section1">
<div class="cols">
<div class="col1">
<h2>Challenge</h2>
When the company decided a few years ago to move out of its data centers, its first deployments on the public cloud were smaller, less critical applications managed on virtual machines. "We started building more and more tools, and at some point we realized that we were doing a disservice by treating Amazon as another data center," says Deep Kapadia, Executive Director, Engineering at The New York Times. Kapadia was tapped to lead a Delivery Engineering Team that would "design for the abstractions that cloud providers offer us."
<h2>Impact</h2>
<br><br>
<h2>Solution</h2>
The team decided to use <a href="https://cloud.google.com/">Google Cloud Platform</a> and its Kubernetes-as-a-service offering, <a href="https://cloud.google.com/kubernetes-engine/">GKE</a>.
<br />
</div>
<p>Speed of delivery increased. Some of the legacy VM-based deployments took 45 minutes; with Kubernetes, that time was "just a few seconds to a couple of minutes," says Engineering Manager Brian Balser. Adds Li: "Teams that used to deploy on weekly schedules or had to coordinate schedules with the infrastructure team now deploy their updates independently, and can do it daily when necessary." Adopting Cloud Native Computing Foundation technologies allows for a more unified approach to deployment across the engineering staff, and portability for the company.</p>
<div class="col2">
{{< case-studies/quote author="Deep Kapadia, Executive Director, Engineering at The New York Times" >}}
{{< youtube DqS_IPw-c6o youtube-quote-sm >}}
{{< youtube Tm4VfJtOHt8 youtube-quote-sm >}}
"I think once you get over the initial hump, things get a lot easier and actually a lot faster."
{{< /case-studies/quote >}}
<h2>Impact</h2>
Speed of delivery increased. Some of the legacy VM-based deployments took 45 minutes; with Kubernetes, that time was "just a few seconds to a couple of minutes," says Engineering Manager Brian Balser. Adds Li: "Teams that used to deploy on weekly schedules or had to coordinate schedules with the infrastructure team now deploy their updates independently, and can do it daily when necessary." Adopting Cloud Native Computing Foundation technologies allows for a more unified approach to deployment across the engineering staff, and portability for the company.
<br />
</div>
<p>Founded in 1851 and known as the newspaper of record, The New York Times is a digital pioneer: Its first website launched in 1996, before Google even existed. After the company decided a few years ago to move out of its private data centers—including one located in the pricy real estate of Manhattan. It recently took another step into the future by going cloud native.</p>
</div>
</section>
<div class="banner2" style="padding-bottom:0% !important;padding-left:10% !important;">
<div class="banner2text" style="width:100% !important;padding-left:5% !important;padding-right:5% !important">
<div class="video" style="float:left;width:90%;">
<iframe style="padding:1%:" width="380" height="215" src="https://www.youtube.com/embed/DqS_IPw-c6o" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
<iframe style="padding:1%:" width="380" height="215" src="https://www.youtube.com/embed/Tm4VfJtOHt8" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
</div>
</div>
</div>
<br><br>
<div class="banner2" style="padding-top:10% !important;padding-left:5% !important;">
<div class="banner2text" style="padding-top:5% !important">
<br>
"I think once you get over the initial hump, things get a lot easier and actually a lot faster." — Deep Kapadia, Executive Director, Engineering at The&nbsp;New&nbsp;York&nbsp;Times</div>
</div>
</div>
<section class="section2">
<div class="fullcol">
Founded in 1851 and known as the newspaper of record, The New York Times is a digital pioneer: Its first website launched in 1996, before Google even existed. After the company decided a few years ago to move out of its private data centers—including one located in the pricy real estate of Manhattan. It recently took another step into the future by going cloud native.<br /><br />
At first, the infrastructure team "managed the virtual machines in the Amazon cloud, and they deployed more critical applications in our data centers and the less critical ones on <a href="https://aws.amazon.com/">AWS</a> as an experiment," says Deep Kapadia, Executive Director, Engineering at The New York Times. "We started building more and more tools, and at some point we realized that we were doing a disservice by treating Amazon as another data center."<br /><br />
To get the most out of the cloud, Kapadia was tapped to lead a new Delivery Engineering Team that would "design for the abstractions that cloud providers offer us." In mid-2016, they began looking at the <a href="https://cloud.google.com/">Google Cloud Platform</a> and its Kubernetes-as-a-service offering, <a href="https://cloud.google.com/kubernetes-engine/">GKE</a>.<br /><br />
At the time, says team member Tony Li, a Site Reliability Engineer, "We had some internal tooling that attempted to do what Kubernetes does for containers, but for VMs. We asked why are we building and maintaining these tools ourselves?"<br /><br />
In early 2017, the first production application—the nytimes.com mobile homepage—began running on Kubernetes, serving just 1% of the traffic. Today, almost 100% of the nytimes.com sites end-user facing applications run on GCP, with the majority on Kubernetes.
<p>At first, the infrastructure team "managed the virtual machines in the Amazon cloud, and they deployed more critical applications in our data centers and the less critical ones on <a href="https://aws.amazon.com/">AWS</a> as an experiment," says Deep Kapadia, Executive Director, Engineering at The New York Times. "We started building more and more tools, and at some point we realized that we were doing a disservice by treating Amazon as another data center."</p>
</div>
</section>
<div class="banner3" style="background-image: url('/images/case-studies/newyorktimes/banner3.jpg')">
<div class="banner3text">
"We had some internal tooling that attempted to do what Kubernetes does for containers, but for VMs. We asked why are we building and maintaining these tools ourselves?"
</div>
</div>
<section class="section3">
<div class="fullcol">
<p>To get the most out of the cloud, Kapadia was tapped to lead a new Delivery Engineering Team that would "design for the abstractions that cloud providers offer us." In mid-2016, they began looking at the <a href="https://cloud.google.com/">Google Cloud Platform</a> and its Kubernetes-as-a-service offering, <a href="https://cloud.google.com/kubernetes-engine/">GKE</a>.</p>
The team found that the speed of delivery was immediately impacted. "Deploying Docker images versus spinning up VMs was quite a lot faster," says Engineering Manager Brian Balser. Some of the legacy VM-based deployments took 45 minutes; with Kubernetes, that time was "just a few seconds to a couple of minutes."<br /><br />
The plan is to get as much as possible, not just the website, running on Kubernetes, and beyond that, moving toward serverless deployments. For instance, The New York Times crossword app was built on <a href="https://cloud.google.com/appengine/">Google App Engine</a>, which has been the main platform for the companys experimentation with serverless. "The hardest part was getting the engineers over the hurdle of how little they had to do," Chief Technology Officer Nick Rockwell recently told The CTO Advisor. "Our experience has been very, very good. We have invested a lot of work into deploying apps on container services, and Im really excited about experimenting with deploying those on App Engine Flex and <a href="https://aws.amazon.com/fargate/">AWS Fargate</a> and seeing how that feels, because thats a great migration path."<br /><br />
There are some exceptions to the move to cloud native, of course. "We have the print publishing business as well," says Kapadia. "A lot of that is definitely not going down the cloud-native path because theyre using vendor software and even special machinery that prints the physical paper. But even those teams are looking at things like App Engine and Kubernetes if they can."<br /><br />
Kapadia acknowledges that there was a steep learning curve for some engineers, but "I think once you get over the initial hump, things get a lot easier and actually a lot faster."
<p>At the time, says team member Tony Li, a Site Reliability Engineer, "We had some internal tooling that attempted to do what Kubernetes does for containers, but for VMs. We asked why are we building and maintaining these tools ourselves?"</p>
</div>
</section>
<div class="banner4" style="background-image: url('/images/case-studies/newyorktimes/banner4.jpg')">
<div class="banner4text">
"Right now, every team is running a small Kubernetes cluster, but it would be nice if we could all live in a larger ecosystem," says Kapadia. "Then we can harness the power of things like service mesh proxies that can actually do a lot of instrumentation between microservices, or service-to-service orchestration. Those are the new things that we want to experiment with as we go forward."
<p>In early 2017, the first production application—the nytimes.com mobile homepage—began running on Kubernetes, serving just 1% of the traffic. Today, almost 100% of the nytimes.com site's end-user facing applications run on GCP, with the majority on Kubernetes.</p>
</div>
</div>
<section class="section5" style="padding:0px !important">
<div class="fullcol">
At The New York Times, they did. As teams started sharing their own best practices with each other, "Were no longer the bottleneck for figuring out certain things," Kapadia says. "Most of the infrastructure and systems were managed by a centralized function. Weve sort of blown that up, partly because Google and Amazon have tools that allow us to do that. We provide teams with complete ownership of their Google Cloud Platform projects, and give them a set of sensible defaults or standards. We let them know, If this works for you as is, great! If not, come talk to us and well figure out how to make it work for you."<br /><br />
As a result, "Its really allowed teams to move at a much more rapid pace than they were able to in the past," says Kapadia. Adds Li: "The use of GKE means each team can get their own compute cluster, reducing the number of individual instances they have to care about since developers can treat the cluster as a whole. Because the ticket-based workflow was removed from requesting resources and connections, developers can just call an API to get what they want. Teams that used to deploy on weekly schedules or had to coordinate schedules with the infrastructure team now deploy their updates independently, and can do it daily when necessary."<br /><br />
Another benefit to adopting Kubernetes: allowing for a more unified approach to deployment across the engineering staff. "Before, many teams were building their own tools for deployment," says Balser. With Kubernetes—as well as the other CNCF projects The New York Times uses, including Fluentd to collect logs for all of its AWS servers, gRPC for its <a href="https://open.nytimes.com/publishing-with-apache-kafka-at-the-new-york-times-7f0e3b7d2077">Publishing Pipeline</a>, Prometheus, and Envoy—"we can benefit from the advances that each of these technologies make, instead of trying to catch up."
{{< case-studies/quote image="/images/case-studies/newyorktimes/banner3.jpg" >}}
"We had some internal tooling that attempted to do what Kubernetes does for containers, but for VMs. We asked why are we building and maintaining these tools ourselves?"
{{< /case-studies/quote >}}
</div>
<p>The team found that the speed of delivery was immediately impacted. "Deploying Docker images versus spinning up VMs was quite a lot faster," says Engineering Manager Brian Balser. Some of the legacy VM-based deployments took 45 minutes; with Kubernetes, that time was "just a few seconds to a couple of minutes."</p>
<div class="banner5">
<div class="banner5text">
<p>The plan is to get as much as possible, not just the website, running on Kubernetes, and beyond that, moving toward serverless deployments. For instance, The New York Times crossword app was built on <a href="https://cloud.google.com/appengine/">Google App Engine</a>, which has been the main platform for the company's experimentation with serverless. "The hardest part was getting the engineers over the hurdle of how little they had to do," Chief Technology Officer Nick Rockwell recently told The CTO Advisor. "Our experience has been very, very good. We have invested a lot of work into deploying apps on container services, and I'm really excited about experimenting with deploying those on App Engine Flex and <a href="https://aws.amazon.com/fargate/">AWS Fargate</a> and seeing how that feels, because that's a great migration path."</p>
Li calls the Cloud Native Computing Foundations projects "a northern star that we can all look at and follow."
</div>
</div>
<p>There are some exceptions to the move to cloud native, of course. "We have the print publishing business as well," says Kapadia. "A lot of that is definitely not going down the cloud-native path because they're using vendor software and even special machinery that prints the physical paper. But even those teams are looking at things like App Engine and Kubernetes if they can."</p>
<div class="fullcol">
These open-source technologies have given the company more portability. "CNCF has enabled us to follow an industry standard," says Kapadia. "It allows us to think about whether we want to move away from our current service providers. Most of our applications are connected to Fluentd. If we wish to switch our logging provider from provider A to provider B we can do that. Were running Kubernetes in GCP today, but if we want to run it in Amazon or Azure, we could potentially look into that as well."<br /><br />
Li calls the Cloud Native Computing Foundations projects "a northern star that we can all look at and follow." Led by that star, the team is looking ahead to a year of onboarding the remaining half of the 40 or so product engineering teams to extract even more value out of the technology. "Right now, every team is running a small Kubernetes cluster, but it would be nice if we could all live in a larger ecosystem," says Kapadia. "Then we can harness the power of things like service mesh proxies that can actually do a lot of instrumentation between microservices, or service-to-service orchestration. Those are the new things that we want to experiment with as we go forward."
<p>Kapadia acknowledges that there was a steep learning curve for some engineers, but "I think once you get over the initial hump, things get a lot easier and actually a lot faster."</p>
</div>
</section>
{{< case-studies/quote image="/images/case-studies/newyorktimes/banner4.jpg" >}}
"Right now, every team is running a small Kubernetes cluster, but it would be nice if we could all live in a larger ecosystem," says Kapadia. "Then we can harness the power of things like service mesh proxies that can actually do a lot of instrumentation between microservices, or service-to-service orchestration. Those are the new things that we want to experiment with as we go forward."
{{< /case-studies/quote >}}
<p>At The New York Times, they did. As teams started sharing their own best practices with each other, "We're no longer the bottleneck for figuring out certain things," Kapadia says. "Most of the infrastructure and systems were managed by a centralized function. We've sort of blown that up, partly because Google and Amazon have tools that allow us to do that. We provide teams with complete ownership of their Google Cloud Platform projects, and give them a set of sensible defaults or standards. We let them know, 'If this works for you as is, great! If not, come talk to us and we'll figure out how to make it work for you.'"</p>
<p>As a result, "It's really allowed teams to move at a much more rapid pace than they were able to in the past," says Kapadia. Adds Li: "The use of GKE means each team can get their own compute cluster, reducing the number of individual instances they have to care about since developers can treat the cluster as a whole. Because the ticket-based workflow was removed from requesting resources and connections, developers can just call an API to get what they want. Teams that used to deploy on weekly schedules or had to coordinate schedules with the infrastructure team now deploy their updates independently, and can do it daily when necessary."</p>
<p>Another benefit to adopting Kubernetes: allowing for a more unified approach to deployment across the engineering staff. "Before, many teams were building their own tools for deployment," says Balser. With Kubernetes—as well as the other CNCF projects The New York Times uses, including Fluentd to collect logs for all of its AWS servers, gRPC for its <a href="https://open.nytimes.com/publishing-with-apache-kafka-at-the-new-york-times-7f0e3b7d2077">Publishing Pipeline</a>, Prometheus, and Envoy—"we can benefit from the advances that each of these technologies make, instead of trying to catch up."</p>
{{< case-studies/quote >}}
Li calls the Cloud Native Computing Foundation's projects "a northern star that we can all look at and follow."
{{< /case-studies/quote >}}
<p>These open-source technologies have given the company more portability. "CNCF has enabled us to follow an industry standard," says Kapadia. "It allows us to think about whether we want to move away from our current service providers. Most of our applications are connected to Fluentd. If we wish to switch our logging provider from provider A to provider B we can do that. We're running Kubernetes in GCP today, but if we want to run it in Amazon or Azure, we could potentially look into that as well."</p>
<p>Li calls the Cloud Native Computing Foundation's projects "a northern star that we can all look at and follow." Led by that star, the team is looking ahead to a year of onboarding the remaining half of the 40 or so product engineering teams to extract even more value out of the technology. "Right now, every team is running a small Kubernetes cluster, but it would be nice if we could all live in a larger ecosystem," says Kapadia. "Then we can harness the power of things like service mesh proxies that can actually do a lot of instrumentation between microservices, or service-to-service orchestration. Those are the new things that we want to experiment with as we go forward."</p>
+54 -70
View File
@@ -3,91 +3,75 @@ title: Nokia Case Study
linkTitle: Nokia
case_study_styles: true
cid: caseStudies
css: /css/style_case_studies.css
logo: nokia_featured_logo.png
new_case_study_styles: true
heading_background: /images/case-studies/nokia/banner1.jpg
heading_title_logo: /images/nokia_logo.png
subheading: >
Nokia: Enabling 5G and DevOps at a Telecom Company with Kubernetes
case_study_details:
- Company: Nokia
- Location: Espoo, Finland
- Industry: Telecommunications
---
<h2>Challenge</h2>
<div class="banner1" style="background-image: url('/images/case-studies/nokia/banner1.jpg')">
<h1> CASE STUDY:<img src="/images/nokia_logo.png" class="header_logo" style="width:20%;margin-bottom:-2.2%"><br> <div class="subhead" style="margin-top:1%">Nokia: Enabling 5G and DevOps at a Telecom Company with Kubernetes
<p><a href="https://www.nokia.com/en_int">Nokia</a>'s core business is building telecom networks end-to-end; its main products are related to the infrastructure, such as antennas, switching equipment, and routing equipment. "As telecom vendors, we have to deliver our software to several telecom operators and put the software into their infrastructure, and each of the operators have a bit different infrastructure," says Gergely Csatari, Senior Open Source Engineer. "There are operators who are running on bare metal. There are operators who are running on virtual machines. There are operators who are running on <a href="https://cloud.vmware.com/">VMware Cloud</a> and <a href="https://www.openstack.org/">OpenStack</a> Cloud. We want to run the same product on all of these different infrastructures without changing the product itself."</p>
</div></h1>
<h2>Solution</h2>
</div>
<p>The company decided that moving to cloud native technologies would allow teams to have infrastructure-agnostic behavior in their products. Teams at Nokia began experimenting with Kubernetes in pre-1.0 versions. "The simplicity of the label-based scheduling of Kubernetes was a sign that showed us this architecture will scale, will be stable, and will be good for our purposes," says Csatari. The first Kubernetes-based product, the <a href="https://networks.nokia.com/products/telecom-application-server">Nokia Telephony Application Server</a>, went live in early 2018. "Now, all the products are doing some kind of re-architecture work, and they're moving to Kubernetes."</p>
<div class="details">
Company &nbsp;<b>Nokia</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Espoo, Finland
</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Telecommunications</b>
</div>
<hr>
<section class="section1">
<div class="cols">
<div class="col1" style="width:100%"">
<h2>Challenge</h2>
<a href="https://www.nokia.com/en_int">Nokia</a>s core business is building telecom networks end-to-end; its main products are related to the infrastructure, such as antennas, switching equipment, and routing equipment. "As telecom vendors, we have to deliver our software to several telecom operators and put the software into their infrastructure, and each of the operators have a bit different infrastructure," says Gergely Csatari, Senior Open Source Engineer. "There are operators who are running on bare metal. There are operators who are running on virtual machines. There are operators who are running on <a href="https://cloud.vmware.com/">VMware Cloud</a> and <a href="https://www.openstack.org/">OpenStack</a> Cloud. We want to run the same product on all of these different infrastructures without changing the product itself."
<h2>Solution</h2>
The company decided that moving to cloud native technologies would allow teams to have infrastructure-agnostic behavior in their products. Teams at Nokia began experimenting with Kubernetes in pre-1.0 versions. "The simplicity of the label-based scheduling of Kubernetes was a sign that showed us this architecture will scale, will be stable, and will be good for our purposes," says Csatari. The first Kubernetes-based product, the <a href="https://networks.nokia.com/products/telecom-application-server">Nokia Telephony Application Server</a>, went live in early 2018. "Now, all the products are doing some kind of re-architecture work, and theyre moving to Kubernetes."
<br>
<h2>Impact</h2>
Kubernetes has enabled Nokias foray into 5G. "When you develop something that is part of the operators infrastructure, you have to develop it for the future, and Kubernetes and containers are the forward-looking technologies," says Csatari. The teams using Kubernetes are already seeing clear benefits. "By separating the infrastructure and the application layer, we have less dependencies in the system, which means that its easier to implement features in the application layer," says Csatari. And because teams can test the exact same binary artifact independently of the target execution environment, "we find more errors in early phases of the testing, and we do not need to run the same tests on different target environments, like VMware, OpenStack, or bare metal," he adds. As a result, "we save several hundred hours in every release."
</div>
<p>Kubernetes has enabled Nokia's foray into 5G. "When you develop something that is part of the operator's infrastructure, you have to develop it for the future, and Kubernetes and containers are the forward-looking technologies," says Csatari. The teams using Kubernetes are already seeing clear benefits. "By separating the infrastructure and the application layer, we have less dependencies in the system, which means that it's easier to implement features in the application layer," says Csatari. And because teams can test the exact same binary artifact independently of the target execution environment, "we find more errors in early phases of the testing, and we do not need to run the same tests on different target environments, like VMware, OpenStack, or bare metal," he adds. As a result, "we save several hundred hours in every release."</p>
</div>
</section>
<div class="banner2">
<div class="banner2text">
"When people are picking up their phones and making a call on Nokia networks, they are creating containers in the background with Kubernetes."
<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Gergely Csatari, Senior Open Source Engineer, Nokia</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>Nokia was the first name in mobile phones when they were becoming ubiquitous in the late 1990s and early 2000s. But by 2014, the company had sold off its mobile device division and was focusing its core business not on the handhelds used for calls, but on the networks.</h2>
Today, Nokia is building telecom networks end-to-end—from antennas to switching and routing equipment—serving operators in more than 120 countries. "As telecom vendors, we have to deliver our software to several telecom operators and put the software into their infrastructure, and each of the operators have a bit different infrastructure," says Gergely Csatari, Senior Open Source Engineer at Nokia. "There are operators who are running on bare metal. There are operators who are running on virtual machines. There are operators who are running on VMware Cloud and OpenStack Cloud. We want to run the same product on all of these different infrastructures without changing the product itself."<br><br>
Looking for a way to allow its teams to build products with infrastructure-agnostic behavior, the company decided to embrace containerization, Kubernetes, and other cloud native technologies, a move that is being made across the telecom industry. Since early 2018, "when people are picking up their phones and making a call on Nokia networks, they are creating containers in the background with Kubernetes," says Csatari. "Now, all the products are doing some kind of re-architecture work, and theyre moving to Kubernetes."
{{< case-studies/quote author="Gergely Csatari, Senior Open Source Engineer, Nokia" >}}
"When people are picking up their phones and making a call on Nokia networks, they are creating containers in the background with Kubernetes."
{{< /case-studies/quote >}}
</div>
</section>
<div class="banner3" style="background-image: url('/images/case-studies/nokia/banner3.jpg')">
<div class="banner3text">
"Having the community and CNCF around Kubernetes is not only important for having a connection to other companies who are using Kubernetes and a forum where you can ask or discuss features of Kubernetes. But as a company who would like to contribute to Kubernetes, it was very important to have a CLA (Contributors License Agreement) which is connected to the CNCF and not to a particular company. That was a critical step for us to start contributing to Kubernetes and Helm."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Gergely Csatari, Senior Open Source Engineer, Nokia</span>
{{< case-studies/lead >}}
Nokia was the first name in mobile phones when they were becoming ubiquitous in the late 1990s and early 2000s. But by 2014, the company had sold off its mobile device division and was focusing its core business not on the handhelds used for calls, but on the networks.
{{< /case-studies/lead >}}
</div>
</div>
<section class="section3">
<div class="fullcol">
Nokias cloud native journey began about two years ago, when Csataris team was building the companys Telephony Application Server (TAS). "We wanted to have a service execution engine in the product, which was a totally separate function from all other parts," he says. "There, we had the possibility to think about new architectures and new tools that we could use. We created this particular product based on Kubernetes, and we liked the work, so we started to talk about cloud native and containers and all of these things. We did a very extensive research of different container orchestration tools. We knew that we have some, lets say, strange or different requirements because of the special environment that our software is running on."<br><br>
For one thing, Nokias software serves millions of people, and is required to have the carrier-grade "five nines" availability: to be up 99.999% of the time. "If you turn it to minutes, this means were allowed to have only 10 minutes of downtime in a whole year," says Csatari. "Downtime here means that you are not able to serve the person to full capacity, which means that we cannot fail. This includes software upgrades, everything, because when you call 911, youre using our software, and you expect that it will work."<br><br>
That meant that they needed to be able to set affinity and anti-affinity rules in their orchestration tools. "You cannot put all of the functions to the same physical host because physical hosts are failing," Csatari explains. "If you fail with one physical host, then you lose all of the core processing processes. Then there are no calls going through. So we have to divide them among the different physical hosts. At that time, only Kubernetes was able to provide these features. The simplicity of the label-based scheduling of Kubernetes was a sign that showed us this architecture will scale, will be stable, and will be good for our purposes."
<p>Today, Nokia is building telecom networks end-to-end—from antennas to switching and routing equipment—serving operators in more than 120 countries. "As telecom vendors, we have to deliver our software to several telecom operators and put the software into their infrastructure, and each of the operators have a bit different infrastructure," says Gergely Csatari, Senior Open Source Engineer at Nokia. "There are operators who are running on bare metal. There are operators who are running on virtual machines. There are operators who are running on VMware Cloud and OpenStack Cloud. We want to run the same product on all of these different infrastructures without changing the product itself."</p>
</div>
</section>
<div class="banner4" style="background-image: url('/images/case-studies/nokia/banner4.jpg')" style="width:100%">
<div class="banner4text">
"Kubernetes opened the window to all of these open source projects instead of implementing everything in house. Our engineers can focus more on the application level, which is actually the thing what we are selling, and not on the infrastructure level. For us, the most important thing about Kubernetes is it allows us to focus on value creation of our business." <br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Gergely Csatari, Senior Open Source Engineer, Nokia</span>
</div>
</div>
<p>Looking for a way to allow its teams to build products with infrastructure-agnostic behavior, the company decided to embrace containerization, Kubernetes, and other cloud native technologies, a move that is being made across the telecom industry. Since early 2018, "when people are picking up their phones and making a call on Nokia networks, they are creating containers in the background with Kubernetes," says Csatari. "Now, all the products are doing some kind of re-architecture work, and they're moving to Kubernetes."</p>
<section class="section5" style="padding:0px !important">
<div class="fullcol">
The TAS went live in early 2018, and now Kubernetes is also enabling Nokias foray into 5G. The company is introducing microservices architecture and Kubernetes while adding 5G features to existing products. And all new 5G product development will be on top of Kubernetes. "When you develop something that is part of the operators infrastructure, you have to develop it for the future, and Kubernetes and containers are the forward-looking technologies," says Csatari. <br><br>
There have been real time savings thanks to Kubernetes. "By separating the infrastructure and the application layer, we have less dependencies in the system, which means that its easier to implement features in the application layer," says Csatari. Because teams can test the exact same binary artifact independently of the target execution environment, "we find more errors in early phases of the testing, and we do not need to run the same tests on different target environments, like VMware, OpenStack or bare metal," he adds. As a result, "we save several hundred hours in every release."<br><br>
Moving from Nokias legacy cluster management system, which had been built in-house more than thirty years ago, to a Kubernetes platform also meant that "we started using Linux as a base operating system, so we just opened the window to all of these open source projects instead of implementing everything in house," says Csatari. (From CNCFs ecosystem, the team is already using <a href="https://helm.sh/">Helm</a>, <a href="https://grpc.io/">gRPC</a>, <a href="https://github.com/containernetworking">CNI</a>, <a href="https://prometheus.io/">Prometheus</a>, and <a href="https://www.envoyproxy.io/">Envoy</a>, and plans to implement <a href="https://coredns.io/">CoreDNS</a>.) "Our engineers can focus more on the application level, which is actually the thing what we are selling, and not on the infrastructure level. For us, the most important thing about Kubernetes is it allows us to focus on value creation of our business."
{{< case-studies/quote
image="/images/case-studies/nokia/banner3.jpg"
author="Gergely Csatari, Senior Open Source Engineer, Nokia"
>}}
"Having the community and CNCF around Kubernetes is not only important for having a connection to other companies who are using Kubernetes and a forum where you can ask or discuss features of Kubernetes. But as a company who would like to contribute to Kubernetes, it was very important to have a CLA (Contributors License Agreement) which is connected to the CNCF and not to a particular company. That was a critical step for us to start contributing to Kubernetes and Helm."
{{< /case-studies/quote >}}
</div>
<p>Nokia's cloud native journey began about two years ago, when Csatari's team was building the company's Telephony Application Server (TAS). "We wanted to have a service execution engine in the product, which was a totally separate function from all other parts," he says. "There, we had the possibility to think about new architectures and new tools that we could use. We created this particular product based on Kubernetes, and we liked the work, so we started to talk about cloud native and containers and all of these things. We did a very extensive research of different container orchestration tools. We knew that we have some, let's say, strange or different requirements because of the special environment that our software is running on."</p>
<div class="banner5" style="width:100%">
<div class="banner5text">
"I had some discussions at KubeCon with people from the networking SIG and the resource management working group, to work together on our requirements, and thats very exciting for me and my colleagues,"<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Gergely Csatari, Senior Open Source Engineer, Nokia</span></div>
</div>
<p>For one thing, Nokia's software serves millions of people, and is required to have the carrier-grade "five nines" availability: to be up 99.999% of the time. "If you turn it to minutes, this means we're allowed to have only 10 minutes of downtime in a whole year," says Csatari. "Downtime here means that you are not able to serve the person to full capacity, which means that we cannot fail. This includes software upgrades, everything, because when you call 911, you're using our software, and you expect that it will work."</p>
<div class="fullcol">
The company has a long-term goal of moving the entire product portfolio into the Kubernetes platform. To that end, Nokia teams are working together with other companies to add the features needed to use Kubernetes with the real-time, nanosecond-sensitive applications close to the edge of the radio network. <br><br>
And the CNCF community is proving to be a great forum for that collaboration. "I had some discussions at KubeCon with people from the networking SIG and the resource management working group, to work together on our requirements, and thats very exciting for me and my colleagues," says Csatari. "Previously, everybody had the same problem, but everybody just did it in his own, and now we are trying to solve the same problem together."<br><br>
Perhaps the biggest impact that Kubernetes is having on Nokia, Csatari believes, is that people are starting to think about how a telecom company can do DevOps. "We are building a DevOps pipeline, which reaches from the actual developer to the customers, and thinking about new ways how can we digitally deliver our software to our customers and get feedback from the customers right to the engineers," he says. "This is something that will fundamentally change how telecom companies are delivering software, and how quickly can we develop new features. This is because of the usage of containers and, of course, the usage of Kubernetes."
<p>That meant that they needed to be able to set affinity and anti-affinity rules in their orchestration tools. "You cannot put all of the functions to the same physical host because physical hosts are failing," Csatari explains. "If you fail with one physical host, then you lose all of the core processing processes. Then there are no calls going through. So we have to divide them among the different physical hosts. At that time, only Kubernetes was able to provide these features. The simplicity of the label-based scheduling of Kubernetes was a sign that showed us this architecture will scale, will be stable, and will be good for our purposes."</p>
</div>
</section>
{{< case-studies/quote
image="/images/case-studies/nokia/banner4.jpg"
author="Gergely Csatari, Senior Open Source Engineer, Nokia"
>}}
"Kubernetes opened the window to all of these open source projects instead of implementing everything in house. Our engineers can focus more on the application level, which is actually the thing what we are selling, and not on the infrastructure level. For us, the most important thing about Kubernetes is it allows us to focus on value creation of our business."
{{< /case-studies/quote >}}
<p>The TAS went live in early 2018, and now Kubernetes is also enabling Nokia's foray into 5G. The company is introducing microservices architecture and Kubernetes while adding 5G features to existing products. And all new 5G product development will be on top of Kubernetes. "When you develop something that is part of the operator's infrastructure, you have to develop it for the future, and Kubernetes and containers are the forward-looking technologies," says Csatari.</p>
<p>There have been real time savings thanks to Kubernetes. "By separating the infrastructure and the application layer, we have less dependencies in the system, which means that it's easier to implement features in the application layer," says Csatari. Because teams can test the exact same binary artifact independently of the target execution environment, "we find more errors in early phases of the testing, and we do not need to run the same tests on different target environments, like VMware, OpenStack or bare metal," he adds. As a result, "we save several hundred hours in every release."</p>
<p>Moving from Nokia's legacy cluster management system, which had been built in-house more than thirty years ago, to a Kubernetes platform also meant that "we started using Linux as a base operating system, so we just opened the window to all of these open source projects instead of implementing everything in house," says Csatari. (From CNCF's ecosystem, the team is already using <a href="https://helm.sh/">Helm</a>, <a href="https://grpc.io/">gRPC</a>, <a href="https://github.com/containernetworking">CNI</a>, <a href="https://prometheus.io/">Prometheus</a>, and <a href="https://www.envoyproxy.io/">Envoy</a>, and plans to implement <a href="https://coredns.io/">CoreDNS</a>.) "Our engineers can focus more on the application level, which is actually the thing what we are selling, and not on the infrastructure level. For us, the most important thing about Kubernetes is it allows us to focus on value creation of our business."</p>
{{< case-studies/quote author="Gergely Csatari, Senior Open Source Engineer, Nokia" >}}
"I had some discussions at KubeCon with people from the networking SIG and the resource management working group, to work together on our requirements, and that's very exciting for me and my colleagues,"
{{< /case-studies/quote >}}
<p>The company has a long-term goal of moving the entire product portfolio into the Kubernetes platform. To that end, Nokia teams are working together with other companies to add the features needed to use Kubernetes with the real-time, nanosecond-sensitive applications close to the edge of the radio network.</p>
<p>And the CNCF community is proving to be a great forum for that collaboration. "I had some discussions at KubeCon with people from the networking SIG and the resource management working group, to work together on our requirements, and that's very exciting for me and my colleagues," says Csatari. "Previously, everybody had the same problem, but everybody just did it in his own, and now we are trying to solve the same problem together."</p>
<p>Perhaps the biggest impact that Kubernetes is having on Nokia, Csatari believes, is that people are starting to think about how a telecom company can do DevOps. "We are building a DevOps pipeline, which reaches from the actual developer to the customers, and thinking about new ways how can we digitally deliver our software to our customers and get feedback from the customers right to the engineers," he says. "This is something that will fundamentally change how telecom companies are delivering software, and how quickly can we develop new features. This is because of the usage of containers and, of course, the usage of Kubernetes."</p>
+50 -85
View File
@@ -2,109 +2,74 @@
title: Nordstrom Case Study
case_study_styles: true
cid: caseStudies
css: /css/style_case_studies.css
new_case_study_styles: true
heading_background: /images/case-studies/nordstrom/banner1.jpg
heading_title_logo: /images/nordstrom_logo.png
subheading: >
Finding Millions in Potential Savings in a Tough Retail Climate
case_study_details:
- Company: Nordstrom
- Location: Seattle, Washington
- Industry: Retail
---
<div class="banner1" style="background-image: url('/images/case-studies/nordstrom/banner1.jpg')">
<h1> CASE STUDY:<img src="/images/nordstrom_logo.png" class="header_logo" style="margin-bottom:-1.5% !important;width:20% !important;"><br> <div class="subhead">Finding Millions in Potential Savings in a Tough Retail Climate
<h2>Challenge</h2>
<p>Nordstrom wanted to increase the efficiency and speed of its technology operations, which includes the Nordstrom.com e-commerce site. At the same time, Nordstrom Technology was looking for ways to tighten its technology operational costs.</p>
</div></h1>
<h2>Solution</h2>
</div>
<p>After embracing a DevOps transformation and launching a continuous integration/continuous deployment (CI/CD) project four years ago, the company reduced its deployment time from three months to 30 minutes. But they wanted to go even faster across environments, so they began their cloud native journey, adopting Docker containers orchestrated with <a href="http://kubernetes.io/">Kubernetes</a>.</p>
<div class="details">
Company &nbsp;<b>Nordstrom</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Seattle, Washington</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Retail</b>
</div>
<h2>Impact</h2>
<hr>
<section class="section1">
<div class="cols">
<div class="col1">
<h2>Challenge</h2>
Nordstrom wanted to increase the efficiency and speed of its technology operations, which includes the Nordstrom.com e-commerce site. At the same time, Nordstrom Technology was looking for ways to tighten its technology operational costs.
<p>Nordstrom Technology developers using Kubernetes now deploy faster and can "just focus on writing applications," says Dhawal Patel, a senior engineer on the team building a Kubernetes enterprise platform for Nordstrom. Furthermore, the team has increased Ops efficiency, improving CPU utilization from 5x to 12x depending on the workload. "We run thousands of virtual machines (VMs), but aren't effectively using all those resources," says Patel. "With Kubernetes, without even trying to make our cluster efficient, we are currently at a 10x increase."</p>
<br>
<h2>Solution</h2>
After embracing a DevOps transformation and launching a continuous integration/continuous deployment (CI/CD) project four years ago, the company reduced its deployment time from three months to 30 minutes. But they wanted to go even faster across environments, so they began their cloud native journey, adopting Docker containers orchestrated with <a href="http://kubernetes.io/">Kubernetes</a>.
{{< case-studies/quote author="Dhawal Patel, senior engineer at Nordstrom" >}}
"We are always looking for ways to optimize and provide more value through technology. With Kubernetes we are showcasing two types of efficiency that we can bring: Dev efficiency and Ops efficiency. It's a win-win."
{{< /case-studies/quote >}}
<br>
<p>When Dhawal Patel joined <a href="http://shop.nordstrom.com/">Nordstrom</a> five years ago as an application developer for the retailer's website, he realized there was an opportunity to help speed up development cycles.</p>
<p>In those early DevOps days, Nordstrom Technology still followed a traditional model of silo teams and functions. "As a developer, I was spending more time fixing environments than writing code and adding value to business," Patel says. "I was passionate about that—so I was given the opportunity to help fix it."</p>
</div>
<p>The company was eager to move faster, too, and in 2013 launched the first continuous integration/continuous deployment (CI/CD) project. That project was the first step in Nordstrom's cloud native journey.</p>
<div class="col2">
<p>Dev and Ops team members built a CI/CD pipeline, working with the company's servers on premise. The team chose <a href="https://www.chef.io/chef/">Chef</a>, and wrote cookbooks that automated virtual IP creation, servers, and load balancing. "After we completed the project, deployment went from three months to 30 minutes," says Patel. "We still had multiple environments—dev, test, staging, then production—so with each environment running the Chef cookbooks, it took 30 minutes. It was a huge achievement at that point."</p>
<h2>Impact</h2>
Nordstrom Technology developers using Kubernetes now deploy faster and can "just focus on writing applications," says Dhawal Patel, a senior engineer on the team building a Kubernetes enterprise platform for Nordstrom. Furthermore, the team has increased Ops efficiency, improving CPU utilization from 5x to 12x depending on the workload. "We run thousands of virtual machines (VMs), but arent effectively using all those resources," says Patel. "With Kubernetes, without even trying to make our cluster efficient, we are currently at a 10x increase."
<p>But new environments still took too long to turn up, so the next step was working in the cloud. Today, Nordstrom Technology has built an enterprise platform that allows the company's 1,500 developers to deploy applications running as Docker containers in the cloud, orchestrated with Kubernetes.</p>
</div>
</div>
</section>
<div class="banner2">
<div class="banner2text">
"We are always looking for ways to optimize and provide more value through technology. With Kubernetes we are showcasing two types of efficiency that we can bring: Dev efficiency and Ops efficiency. Its a win-win."
<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>-— Dhawal Patel, senior engineer at Nordstrom</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
When Dhawal Patel joined <a href="http://shop.nordstrom.com/">Nordstrom</a> five years ago as an application developer for the retailers website, he realized there was an opportunity to help speed up development cycles.
<br><br>
In those early DevOps days, Nordstrom Technology still followed a traditional model of silo teams and functions. "As a developer, I was spending more time fixing environments than writing code and adding value to business," Patel says. "I was passionate about that—so I was given the opportunity to help fix it."
<br><br>
The company was eager to move faster, too, and in 2013 launched the first continuous integration/continuous deployment (CI/CD) project. That project was the first step in Nordstroms cloud native journey.
<br><br>
Dev and Ops team members built a CI/CD pipeline, working with the companys servers on premise. The team chose <a href="https://www.chef.io/chef/">Chef</a>, and wrote cookbooks that automated virtual IP creation, servers, and load balancing. "After we completed the project, deployment went from three months to 30 minutes," says Patel. "We still had multiple environments—dev, test, staging, then production—so with each environment running the Chef cookbooks, it took 30 minutes. It was a huge achievement at that point."
<br><br>But new environments still took too long to turn up, so the next step was working in the cloud. Today, Nordstrom Technology has built an enterprise platform that allows the companys 1,500 developers to deploy applications running as Docker containers in the cloud, orchestrated with Kubernetes.
{{< case-studies/quote image="/images/case-studies/nordstrom/banner3.jpg" >}}
"We made a bet that Kubernetes was going to take off, informed by early indicators of community support and project velocity, so we rebuilt our system with Kubernetes at the core,"
{{< /case-studies/quote >}}
</div>
</section>
<div class="banner3" style="background-image: url('/images/case-studies/nordstrom/banner3.jpg')">
<div class="banner3text">
"We made a bet that Kubernetes was going to take off, informed by early indicators of community support and project velocity, so we rebuilt our system with Kubernetes at the core,"
</div>
</div>
<section class="section3">
<div class="fullcol">
<p>"The cloud provided faster access to resources, because it took weeks for us to get a virtual machine (VM) on premises," says Patel. "But now we can do the same thing in only five minutes."</p>
"The cloud provided faster access to resources, because it took weeks for us to get a virtual machine (VM) on premises," says Patel. "But now we can do the same thing in only five minutes."
<br><br>
Nordstroms first foray into scheduling containers on a cluster was a homegrown system based on CoreOS fleet. They began doing a few proofs of concept projects with that system until Kubernetes 1.0 was released when they made the switch. "We made a bet that Kubernetes was going to take off, informed by early indicators of community support and project velocity, so we rebuilt our system with Kubernetes at the core," says Marius Grigoriu, Sr. Manager of the Kubernetes team at Nordstrom.
While Kubernetes is often thought as a platform for microservices, the first application to launch on Kubernetes in a critical production role at Nordstrom was Jira. "It was not the ideal microservice we were hoping to get as our first application," Patel admits, "but the team that was working on it was really passionate about Docker and Kubernetes, and they wanted to try it out. They had their application running on premises, and wanted to move it to Kubernetes."
<br><br>
The benefits were immediate for the teams that came on board. "Teams running on our Kubernetes cluster loved the fact that they had fewer issues to worry about. They didnt need to manage infrastructure or operating systems," says Grigoriu. "Early adopters loved the declarative nature of Kubernetes. They loved the reduced surface area they had to deal with."
<p>Nordstrom's first foray into scheduling containers on a cluster was a homegrown system based on CoreOS fleet. They began doing a few proofs of concept projects with that system until Kubernetes 1.0 was released when they made the switch. "We made a bet that Kubernetes was going to take off, informed by early indicators of community support and project velocity, so we rebuilt our system with Kubernetes at the core," says Marius Grigoriu, Sr. Manager of the Kubernetes team at Nordstrom.</p>
</div>
</section>
<div class="banner4" style="background-image: url('/images/case-studies/nordstrom/banner4.jpg')">
<div class="banner4text">
"Teams running on our Kubernetes cluster loved the fact that they had fewer issues to worry about. They didnt need to manage infrastructure or operating systems," says Grigoriu. "Early adopters loved the declarative nature of Kubernetes. They loved the reduced surface area they had to deal with."
</div>
</div>
<p>While Kubernetes is often thought as a platform for microservices, the first application to launch on Kubernetes in a critical production role at Nordstrom was Jira. "It was not the ideal microservice we were hoping to get as our first application," Patel admits, "but the team that was working on it was really passionate about Docker and Kubernetes, and they wanted to try it out. They had their application running on premises, and wanted to move it to Kubernetes."</p>
<section class="section5">
<div class="fullcol">
To support these early adopters, Patels team began growing the cluster and building production-grade services. "We integrated with <a href="https://prometheus.io/">Prometheus</a> for monitoring, with a <a href="https://grafana.com/">Grafana</a> front end; we used <a href="http://www.fluentd.org/">Fluentd</a> to push logs to <a href="https://www.elastic.co/">Elasticsearch</a>, so that gives us log aggregation," says Patel. The team also added dozens of open-source components, including CNCF projects and has made contributions to Kubernetes, Terraform, and kube2iam.
<br><br>
There are now more than 60 development teams running Kubernetes in Nordstrom Technology, and as success stories have popped up, more teams have gotten on board. "Our initial customer base, the ones who were willing to try this out, are now going and evangelizing to the next set of users," says Patel. "One early adopter had Docker containers and he was not sure how to run it in production. We sat with him and within 15 minutes we deployed it in production. He thought it was amazing, and more people in his org started coming in."
<br><br>
For Nordstrom Technology, going cloud-native has vastly improved development and operational efficiency. The developers using Kubernetes now deploy faster and can focus on building value in their applications. One such team started with a 25-minute merge to deploy by launching virtual machines in the cloud. Switching to Kubernetes was a 5x speedup in their process, improving their merge to deploy time to 5 minutes.
</div>
<p>The benefits were immediate for the teams that came on board. "Teams running on our Kubernetes cluster loved the fact that they had fewer issues to worry about. They didn't need to manage infrastructure or operating systems," says Grigoriu. "Early adopters loved the declarative nature of Kubernetes. They loved the reduced surface area they had to deal with."</p>
<div class="banner5">
<div class="banner5text">
"With Kubernetes, without even trying to make our cluster efficient, we are currently at 40 percent CPU utilization—a 10x increase. we are running 2600+ customer pods that would have been 2600+ VMs if they had gone directly to the cloud. We are running them on 40 VMs now, so thats a huge reduction in operational overhead."
</div>
</div>
{{< case-studies/quote image="/images/case-studies/nordstrom/banner4.jpg">}}
"Teams running on our Kubernetes cluster loved the fact that they had fewer issues to worry about. They didn't need to manage infrastructure or operating systems," says Grigoriu. "Early adopters loved the declarative nature of Kubernetes. They loved the reduced surface area they had to deal with."
{{< /case-studies/quote >}}
<div class="fullcol">
Speed is great, and easily demonstrated, but perhaps the bigger impact lies in the operational efficiency. "We run thousands of VMs on AWS, and their overall average CPU utilization is about four percent," says Patel. "With Kubernetes, without even trying to make our cluster efficient, we are currently at 40 percent CPU utilization—a 10x increase. We are running 2600+ customer pods that would have been 2600+ VMs if they had gone directly to the cloud. We are running them on 40 VMs now, so thats a huge reduction in operational overhead."
<br><br>
Nordstrom Technology is also exploring running Kubernetes on bare metal on premises. "If we can build an on-premises Kubernetes cluster," says Patel, "we could bring the power of cloud to provision resources fast on-premises. Then for the developer, their interface is Kubernetes; they might not even realize or care that their services are now deployed on premises because theyre only working with Kubernetes."
For that reason, Patel is eagerly following Kubernetes development of multi-cluster capabilities. "With cluster federation, we can have our on-premise as the primary cluster and the cloud as a secondary burstable cluster," he says. "So, when there is an anniversary sale or Black Friday sale, and we need more containers - we can go to the cloud."
<br><br>
That kind of possibility—as well as the impact that Grigoriu and Patels team has already delivered using Kubernetes—is what led Nordstrom on its cloud native journey in the first place. "The way the retail environment is today, we are trying to build responsiveness and flexibility where we can," says Grigoriu. "Kubernetes makes it easy to: bring efficiency to both the Dev and Ops side of the equation. Its a win-win."
<p>To support these early adopters, Patel's team began growing the cluster and building production-grade services. "We integrated with <a href="https://prometheus.io/">Prometheus</a> for monitoring, with a <a href="https://grafana.com/">Grafana</a> front end; we used <a href="http://www.fluentd.org/">Fluentd</a> to push logs to <a href="https://www.elastic.co/">Elasticsearch</a>, so that gives us log aggregation," says Patel. The team also added dozens of open-source components, including CNCF projects and has made contributions to Kubernetes, Terraform, and kube2iam.</p>
</div>
</section>
<p>There are now more than 60 development teams running Kubernetes in Nordstrom Technology, and as success stories have popped up, more teams have gotten on board. "Our initial customer base, the ones who were willing to try this out, are now going and evangelizing to the next set of users," says Patel. "One early adopter had Docker containers and he was not sure how to run it in production. We sat with him and within 15 minutes we deployed it in production. He thought it was amazing, and more people in his org started coming in."</p>
<p>For Nordstrom Technology, going cloud-native has vastly improved development and operational efficiency. The developers using Kubernetes now deploy faster and can focus on building value in their applications. One such team started with a 25-minute merge to deploy by launching virtual machines in the cloud. Switching to Kubernetes was a 5x speedup in their process, improving their merge to deploy time to 5 minutes.</p>
{{< case-studies/quote >}}
"With Kubernetes, without even trying to make our cluster efficient, we are currently at 40 percent CPU utilization—a 10x increase. we are running 2600+ customer pods that would have been 2600+ VMs if they had gone directly to the cloud. We are running them on 40 VMs now, so that's a huge reduction in operational overhead."
{{< /case-studies/quote >}}
<p>Speed is great, and easily demonstrated, but perhaps the bigger impact lies in the operational efficiency. "We run thousands of VMs on AWS, and their overall average CPU utilization is about four percent," says Patel. "With Kubernetes, without even trying to make our cluster efficient, we are currently at 40 percent CPU utilization—a 10x increase. We are running 2600+ customer pods that would have been 2600+ VMs if they had gone directly to the cloud. We are running them on 40 VMs now, so that's a huge reduction in operational overhead."</p>
<p>Nordstrom Technology is also exploring running Kubernetes on bare metal on premises. "If we can build an on-premises Kubernetes cluster," says Patel, "we could bring the power of cloud to provision resources fast on-premises. Then for the developer, their interface is Kubernetes; they might not even realize or care that their services are now deployed on premises because they're only working with Kubernetes."</p>
<p>For that reason, Patel is eagerly following Kubernetes' development of multi-cluster capabilities. "With cluster federation, we can have our on-premise as the primary cluster and the cloud as a secondary burstable cluster," he says. "So, when there is an anniversary sale or Black Friday sale, and we need more containers - we can go to the cloud."</p>
<p>That kind of possibility—as well as the impact that Grigoriu and Patel's team has already delivered using Kubernetes—is what led Nordstrom on its cloud native journey in the first place. "The way the retail environment is today, we are trying to build responsiveness and flexibility where we can," says Grigoriu. "Kubernetes makes it easy to: bring efficiency to both the Dev and Ops side of the equation. It's a win-win."</p>

Some files were not shown because too many files have changed in this diff Show More