Keynote: The Cloud Native Journey @Apple - Alena Prokharchyk, Software Engineer, Apple
Apple's 2020 Kubernetes migration talk: namespace-based access, shared capacity, platform isolation and the organizational work of adoption.
字幕來源:Vidleaf 自動語音辨識,可能有誤。Vidleaf 加入 AI 標點,閱讀文字含已核對的名稱修正,時間戳保留。下方可查看原始字幕。
AI 生成摘要
Alena Prokharchyk describes Apple's move from an internal container platform toward Kubernetes. The talk explains the attraction of a flexible, community-supported system while acknowledging the learning curve and the need to reassess existing features. It covers platform access, capacity management, isolation and the different needs of developers and operations teams. Later sections discuss scaling, observability, developer productivity and participation in open source. The migration is also an organizational story: responsibilities for security, resources and reliability change alongside the technical stack. The linked chapters retain the specific choices and trade-offs described in the talk.
重點
- [1:37] Kubernetes is presented as a flexible platform with extensible components and an open community.
- [5:54] Shared infrastructure requires deliberate capacity management and isolation between tenants.
- [10:19] Platform adoption changes team responsibilities as well as the underlying technology.
根據字幕生成。請透過連結對照原影片核對。 Vidleaf 於 2026-10-20 核對。 概覽與重點由 Vidleaf 於 2026-10-21 核對。
完整概覽
Alena, an Apple software engineer who joined about a year ago to work on Kubernetes and cloud-native projects, explains what attracted her to the role and traces Apple's path from Mesos and its internally built container orchestrator Jarvis to Kubernetes, chosen as a more generic and flexible platform with plugin-based storage, runtime and network providers, CRDs and custom controllers, and a transparent community. The talk is candid about trade-offs such as a steep learning curve, re-evaluating previously built features against cloud-native best practices, and investing in training resources and support. It covers platform users including developers, application SREs, hardware QA engineers, machine learning and batch engineers using CPUs and GPUs, and Finance, along with cluster as a service and namespace as a service access models, the latter being primary today, plus centralized capacity control, multi-tenant privacy and security, CRD management, cloud-native tools, scaling with the open source Kubernetes PerfTest Cluster Loader, SIG scheduling contributions, and microVMs for defense in depth. At Apple's scale the company moved away from Cluster as a Service because of security management cost, resource inefficiency and operational burden, and began exploring alternatives such as virtual clusters, which offer self-service and virtualized control and data planes on shared Kubernetes infrastructure; microVMs let multiple untrusting tenants share nodes and a control plane with two layers of isolation. Growing footprint and distribution across data centers drive demand for multi-cluster workload management, and the team is researching API proxy solutions and investing in a function-as-a-service solution built on server-side WebAssembly to reduce platform complexity while maintaining high security and low resource utilization, with observability a top priority and end-user productivity pursued through CI/CD and developer tooling. Large-scale adoption brought organizational change: the security team grew, application and Kubernetes platform security were separated to maintain a shared responsibility model, capacity planning was rethought with a dedicated resource management team working with finance, and the SRE team shifted toward engineering and a stronger voice in platform architectural design, while a cross-team technical review board, a dedicated inner source and open source team, and community engagement through code, the CNCF TOC board, the Kubernetes release team, documentation and issues support collaboration; the migration ultimately changes not just the technical stack but the people involved.
附時間戳的章節摘要
Apple engineer on cloud scale
- [0:18] Alena works for Apple.
- [0:21] She joined about a year ago as a software engineer on Kubernetes and cloud-native projects.
- [0:21] Many people in the open-source community asked what attracted her most to the job.
- [0:34] Her answer is the scale of the cloud infrastructure and the variety of applications running on it.
- [0:41] She previously focused mainly on Kubernetes clusters provisioning.
- [0:41] She thought looking at things from the application and end-user end would help complete the circle.
Apple's Mesos History and Platform Consolidation
- [0:53] Learning a team or company's history helps explain current decisions and trade-offs.
- [1:00] Apple used Mesos for over five years with an internally built container orchestrator called Jarvis.
- [1:06] Mesos had a good reputation as a scheduling platform and scaled well to support multiple frameworks for Batch, Stateful and Stateless services.
- [1:16] The container orchestrator became a bottleneck for skills and responsibilities delegation, prompting consideration of other choices.
- [1:25] Apple also used other compute management solutions and wanted to consolidate them into a unified platform for better capacity utilization.
Why Kubernetes Was Chosen
- [1:37] Kubernetes was found to be an obvious winner as an orchestrator.
- [1:42] Kubernetes being more generic and flexible allowed better division of work among teams.
- [1:48] Choosing providers for storage, runtime, and network became just a plugin choice that could be re-evaluated without refactoring the entire system.
- [2:04] Developers were attracted by the ability to extend Kubernetes APIs and core functionality via CRDs and custom controllers.
- [2:14] The Kubernetes community was a huge asset to the platform, with transparency and power that gave developers comfort.
- [2:25] The goal was to meet demand from a diverse user base, including teams already running Kubernetes clusters and people who had never worked with Kubernetes but trusted the technology and wanted to adopt it.
Kubernetes Migration Trade-offs and Team Adaptation
- [2:41] A change of this magnitude requires honesty about the trade-offs needed for a successful migration.
- [2:50] Kubernetes' learning curve is steep for both end users and platform developers.
- [2:57] All previously built platform features had to be re-evaluated.
- [3:03] Features were questioned on alignment with cloud-native best practices and relevance to the new platform, which can be uncomfortable for people.
- [3:14] Because software is built by people, the team accepted that current processes would need to change and people would have to adapt.
- [3:24] The team was ready to invest in training resources and provide full support for developers to make adoption successful.
Apple Kubernetes Platform Users
- [3:34] Kubernetes became Apple's platform choice for compute management.
- [3:40] The target goal is to make the majority of Apple workloads run on Kubernetes.
- [3:46] The platform aims to maintain end-user focus while being built.
- [3:51] Understanding and categorizing platform users was required to establish common patterns for hardware and software infrastructure planning.
- [4:00] One user category is Java, Python, and Go developers who want to test and run applications in containers.
- [4:08] Another category is application SREs focused on building advanced deployment workflows for their teams.
- [4:16] Hardware QA engineers are another example, exploring creative solutions with cloud-native tools to make device validation easier for hardware teams.
- [4:29] Machine learning and batch workloads engineers run thousands of batch jobs daily using both CPU and GPUs for training machine learning models.
- [4:39] Finance is also a platform user, playing a big part in placement decisions and capacity planning.
- [4:46] All these users want cloud-native tools for better debugging, logging, monitoring, and tracing of their apps.
- [4:54] The platform developers' responsibility is to provide a scalable orchestration layer with secure resource isolation and reliable scheduling.
Kubernetes platform access models
- [5:03] Building high-level abstractions and CLI tools is also necessary for the platform's success and adoption.
- [5:11] A large infrastructure pool of compute and storage resources is managed by Kubernetes and can be offered to users in two ways: cluster as a service and namespace as a service.
- [5:25] Namespace as a Service is the primary model today.
- [5:29] SRE manages multi-tenant Kubernetes clusters while users operate in one or multiple namespaces, so users avoid infrastructure management overhead and can focus on application deployment and development.
- [5:29] Because cluster provisioning has been commodified, some teams may still want cluster as a service.
Centralized Capacity Control and Multi-Tenant Security
- [5:54] Centralized capacity control required abstracting resource management into its own system.
- [6:00] The system was made as generic as possible to streamline the solution for the hybrid cloud in the future.
- [6:06] The system dynamically balances clusters, priority, usage, and limits to find the best placement for user applications.
- [6:17] Resource isolation is handled by assigning priority and quota to each workload.
- [6:22] Privacy and security concerns of running applications in multi-tenant clusters still had to be addressed.
- [6:29] Privacy and security had to be addressed on both configuration and runtime levels.
- [6:34] Despite the namespace-as-a-service constraint, users were to have freedom to choose cloud-native tools to run in their namespaces.
- [6:42] Because some tools require CRDs, a cluster-level resource, a proper CRD management flow was needed to make that deployment possible.
Cloud-Native Tools for Platform and Developers
- [6:53] Solving the technical challenges relied on a wide array of cloud-native tools.
- [6:59] These tools include those used at the platform level and those recommended to application developers.
- [7:04] The tool list is incomplete and keeps growing as new projects are constantly evaluated and more areas for development and integration are found.
Kubernetes Scaling and Community Contribution
- [7:15] Only running things at scale could reveal certain issues despite careful planning.
- [7:20] They chose the open source Kubernetes PerfTest cluster loader tool to challenge their class 3s.
- [7:26] Developers can write their own framework, but they found Cluster Loader quite powerful.
- [7:32] They wanted to engage more with the community and invest time fixing and expanding the existing tool for others to use.
- [7:40] Scheduling was another immediate focus because they run mixed workloads including batch workloads and want reasonable resource utilization.
- [7:51] Participating in SIG scheduling and contributing back is important to stay as close to upstream as possible.
- [8:00] For some team members it was their first experience contributing to upstream Kubernetes, including joining SIG discussions and filing first issues.
- [8:20] In a multi-tenant environment, many customers' workloads run on the same machine.
MicroVM Isolation and Virtual Clusters
- [8:26] Defense in depth is a common pattern for meeting security requirements and isolating mixed levels of trust.
- [8:34] MicroVMs are being used to enable this level of isolation.
- [8:39] With microVMs, multiple untrusting tenants can run on the same nodes and share the same control plane while keeping two layers of isolation: virtual machine and container.
- [8:51] Cluster as a Service brings increased security management cost, resource utilization inefficiency, and operational burden at companies of Apple's scale.
- [9:02] As a result, they started exploring alternative models like virtual clusters.
Virtual Cluster and Multi-Cluster Management
- [9:07] Virtual Cluster provides User, Self Services, and Virtualized Kubernetes Control and Data Plane on shared Kubernetes infrastructure.
- [9:15] It eliminates the majority of security and operational concerns.
- [9:20] Deployment footprint growth and distribution across data centers drives demand for multi-cluster workload management.
- [9:20] They are researching API proxy solutions to offer improved self-healing, utilization efficiency, high-level obstructions, and developer workflow experiences for teams managing workloads across multiple clusters.
- [9:42] They want to reduce platform complexity for developers and operators while maintaining high security standards and low resource utilization.
- [9:42] They are investing in a function as a service solution leveraging server-side web assembly to achieve this.
Observability and Developer Productivity Priorities
Organizational Change from Tech Adoption
- [10:19] Adopting new technology at a large scale often brings organizational changes affecting managers, finance, tech teams, and leadership.
- [10:32] The transition is a long road with many growing pains.
- [10:35] The security team grew and took on extra responsibilities.
- [10:44] Application security and Kubernetes platform security required a clear separation of concern to maintain a shared responsibility model.
- [10:54] A goal was to rethink capacity planning, requiring a dedicated resource management team working closely with finance.
- [11:03] Some new teams were formed, some grew in size and responsibilities, and some developed new priorities.
- [11:11] The SRE team shifted from operational and systems focus to an emphasis on engineering and a stronger voice in platform architectural design.
- [11:21] A solid and stable platform made it possible to maintain focus on customer needs and innovate faster.
Cross-team review and open source support
- [11:30] Innovation requires collaboration, and a cross-team technical review board for cloud-native projects provides a safe place for peer feedback from people with different backgrounds.
- [11:44] Board members bring varied expertise, some in Kubernetes feature development and some in domains like security.
- [11:52] Combining their input is extremely useful during the design stage.
- [11:57] With a shared platform, sharing information becomes a necessity, and Apple has a dedicated team managing inner source and open source initiatives.
- [12:06] That team runs internal trainings on Cloud Native and Kubernetes, advises first-time open source contributors, and supports long-time contributors.
- [12:21] The team helps connect people and grow both internal and external collaborations.
- [12:27] The ongoing transformation leaves very little time for reflection, though reflection is always necessary.
- [12:33] Migration is not something everyone wants to do.
Cloud Migration and Open Source Community
- [12:37] Investing in modernizing applications and platforms benefits the future by enabling adoption of more cloud-native technologies on the existing foundation.
- [12:47] Large-scale migration taught the team to embrace community best practices and shared learnings, and they wanted to give back through many forms of engagement.
- [12:47] Engagement forms include writing code, serving on the CNCF TOC board, helping the Kubernetes release team, improving documentation, and filing issues.
- [13:08] Innovation is driven by sharing and collaboration.
- [13:12] Sharing with the broader open source community and with other teams in your company through inner source helps enable reuse of existing solutions and minimize redundancy.
- [13:23] Even a small change can begin to make larger cultural change a reality.
- [13:28] The migration ultimately changes not just the technical stack but the people involved in it.
[0:00] ♪ ♪ Hello everyone, my name is Alena and I work for Apple. I joined the company as a software engineer about a year ago to work on Kubernetes and cloud-native projects. Since then, so many people from the open-source community have asked me what attracted me the most to my new job.
[0:34] And the answer is easy. It is the scale of the cloud infrastructure and the variety of applications running on it. Before, I mainly focused on Kubernetes clusters provisioning. I thought that looking at things from the application and end-user end-guide scale would help to complete the circle, so here I am. When you join a new team or a company, getting to know its history helps to understand current decisions and trade-offs. Mesos has been used at Apple for over five years with an internally built container orchestrator called Jarvis.
[1:06] It had a good reputation as a scheduling platform and it scaled well to support multiple frameworks for running a variety of services like Batch, Stateful and Stateless. But the container orchestrator soon became a bottleneck for skills and responsibilities delegation, so we started considering other choices. In addition to Mesos, Apple used some other solutions for compute management. Along with the transition, we wanted to consolidate them and provide the unified platform for better capacity utilization.
[1:37] We found that Kubernetes was an obvious winner as an orchestrator. With Kubernetes being more generic and fluggable, it meant we could better divide work among teams. The decisions on what provider to choose for core components like storage, runtime, and network were no longer life or death decisions. We knew that it was just a plugin choice and the choice could always be re-evaluated without refactoring the entire system. Another big point of attraction for developers was an ability to extend Kubernetes APIs and core functionality by leveraging CRDs and custom controllers.
[2:14] The Kubernetes community was a huge asset to the platform. Its transparency and power was so obvious and provided a great level of comfort to developers. The goal was to meet the demand of diverse user base. We had teams who were already successfully running Kubernetes clusters in their organization. And we had people who had never worked with Kubernetes before, but trusted the technology and wanted to adopt it. When the change of this magnitude happens, it is important to be honest about the trade-offs that need to be made for successful migration.
[2:50] It is a known fact that Kubernetes' learning curve is steep, not only for end users, but for platform developers too. All the platform features that were built in the past had to be re-evaluated. Is the feature's current design aligned with the cloud-native best practices? Is this feature even relevant to the new platform? Asking and answering these questions can be uncomfortable for people. and software is built by people. We had to accept the fact that there would be a need for a change to the current processes, and people would have to adapt.
[3:24] We realized the impact of the decision. We were ready to invest in training resources and provide full support for developers, anything to make the adoption successful. At that point, Kubernetes became our platform choice for compute management at Apple. Our target goal is to make the majority of Apple workloads run on Kubernetes. We want to maintain end-user focus while building the platform. That required us to understand and categorize our platform users to establish common patterns for hardware and software infrastructure planning.
[4:00] One category of users are Java, Python, Go developers who want to test and run their applications in the containers. Another category are applications SREs whose focus is on building advanced deployment workflows for their teams. Another example is hardware QA engineers who are not afraid to try new things and explore creative solutions using cloud-native tools. anything to make it easier for hardware teams to validate devices. There are machine learning and batch workloads engineers who utilize the platform daily, running thousands of batch jobs that use both CPU and GPUs for training machine learning models.
[4:39] Finance is also a platform user as they're a big part of placement decisions and capacity planning. All of these users want to adopt cloud-native tools for better debugging, logging, monitoring, and tracing for their apps. Our responsibility as platform developers is to provide a scalable orchestration layer with secure resource isolation and reliable scheduling. Building high-level obstructions and CLI tools is also necessary for the platform's success and adoption.
[5:11] So we have this big infrastructure pool of compute and storage resources managed by Kubernetes. Providing it to users can be done in two ways: cluster as a service and namespace as a service. Namespace as a Service is our primary model today. SRE manages multi-tenant Kubernetes clusters and user operates in one or multiple namespaces. This way, users do not have an overhead of infrastructure management and can focus on application deployment and development. However, we realize that in the world where cluster provisioning has been commodified, some teams may still want cluster as a service.
[5:54] With the goal of centralized capacity control, we had to abstract resource management to its own system. We wanted to make it as generic as possible to streamline the solution for the hybrid cloud in the future. The system would do a dynamic balancing between clusters, priority, usage, and limits to find the best placement for the user application. Resource isolation would be handled by assigning priority and quota to each workload. However, we still had to address privacy and security concerns of running applications in multi-tenant clusters.
[6:29] It had to be done both on configuration and runtime levels. Even with the namespace as a service constraint, we wanted users to have a freedom to choose cloud-native tools to run in their namespaces. Some of these tools require CRDs, a cluster-level resource. We have to think of a proper CRD management flow to make that deployment possible. Solving these technical challenges would not have been possible without the wide array of cloud-native tools. those we use on the platform level, and those we recommend to application developers.
[7:04] This list is not complete and keeps on growing as we constantly evaluate new projects and find more areas for development and integration. With all the careful planning, only running things at scale could reveal certain issues. We have chosen open source Kubernetes PerfTest cluster loader tool. to challenge our class 3s. Developers can always write their own framework, but we found Cluster Loader being quite powerful. We wanted to engage more with the community and invest time in fixing and expanding the existing tool that could be used by others.
[7:40] Another area of immediate focus was scheduling. We run mixed types of workloads on Kubernetes, including batch workloads, and want to maintain a reasonable resource utilization. Participating in SIG scheduling and contributing back is very important to us, as we want to stay as close to the upstream as possible. For some people in our team, it was their very first experience contributing to Upstream Kubernetes, going through the process of joining SICK for discussions. Filing first Kubernetes issues and recognizing the various ways to help the community, it was all new and exciting.
[8:16] I would like to share some of our current priorities. In a multi-tenant environment, many customers' workloads run on the same machine. To meet security requirements and provide isolation between mixed level of trust, A common pattern is to leverage defense in depth. We are seeking to enable this level of isolation with microVMs. With that, multiple untrusting tenants can run on the same nodes and share the same control plane, while continuing to provide two layers of isolation: virtual machine and container.
[8:51] Cluster as a Service comes with the cost of increased security management, resource utilization inefficiency, and operational burden. in the companies of Apple's scale. As a result, we started exploring alternative models like virtual clusters. With Virtual Cluster, User, Self Services, Virtualized Kubernetes Control and Data Plane, on top of shared Kubernetes infrastructure. It eliminates the majority of security and operational concerns. With the deployment footprint growth and distribution across data centers, comes the demand for multi-cluster workload management. We are researching on API proxy solutions to offer improved self-healing, utilization efficiency, high-level obstructions, and developer workflow experiences for teams that manage workloads across multiple clusters.
[9:42] We want to reduce the platform complexity for developers and operators. At the same time, we want to maintain high security standards and low resource utilization. So we are investing in function as a service solution, leveraging server-side web assembly to solve this. With the constant additions of the new features and user workloads, observability becomes one of the top priorities. We want to keep the platform management sane as the platform grows. End-user productivity and happiness is our end goal. We are always looking into ways to improve it with compelling CI/CD and developer tooling.
[10:19] Adopting new technology on such a big scale often comes hand in hand with organizational changes. You need to change everything and everyone from managers and finance to tech teams and yourself. It is a long road with a lot of growing pains. Our security team grew and took on extra responsibilities. Insurance security in multi-attendant cluster is not a trivial task. We had to have a clear separation of concern between application security and Kubernetes platform security to maintain a shared responsibility model.
[10:54] One of our goals was to rethink capacity planning. Having a dedicated resource management team working close with the finance department was necessary. Some new teams were formed, some grew in size and responsibilities, and some developed a new set of priorities. SRE team used to be more operational and systems focused. Now it has an emphasis on engineering and a much stronger voice in the platform architectural design. Having a solid and stable platform made it possible to maintain focus on the customer's needs and innovate faster.
[11:30] Innovation is impossible without collaboration. Forming a cross-team technical review board for cloud-native based projects was invaluable to us. It is a safe place to get peer feedback from people having different backgrounds. Some have more experience with developing features for Kubernetes, and some have a deep expertise in a particular technical domain like security. Getting their combined input is extremely useful during the design stage. With a shared platform, sharing information becomes a necessity. We are lucky to have a dedicated team managing inner source and open source initiatives here at Apple.
[12:06] The team focuses on internal trainings on Cloud Native and Kubernetes, advises people who want to start making their first open source contributions, and supports those who have been contributing to open source for a while. The team helps to connect people and grow both internal and external collaborations. The ongoing transformation leaves very little time for reflection, but the reflection is always necessary. Migration is not something everyone wants to do.
[12:37] But those who invest in modernizing their application and platform benefit in the future by adopting more cloud-native technologies on top of the foundation. Migration at scale has taught us to embrace the community best practices and shared learnings. We wanted to give back and have realized that engagement comes in many forms: writing code, serving on TOC board for CNCF, helping Kubernetes release team, improving documentation, filing issues, and many more.
[13:08] Innovation is driven by sharing and collaboration. Sharing with a broader community in the open source, sharing with another team in your company through the inner source, helps to enable reuse of existing solutions and minimize redundancy. Even small change can begin to make larger cultural change a reality. We have realized that in the end the migration changes not just the technical stack, but the people involved in it. Please reach out to us if you have any questions. Thank you.
查看原始字幕
[0:00] ♪ ♪ Hello everyone, my name is Alina and I work for Apple. I joined the company as a software engineer about a year ago to work on Kubernetes and cloud-native projects. Since then, so many people from the open-source community have asked me what attracted me the most to my new job.
[0:34] And the answer is easy. It is the scale of the cloud infrastructure and the variety of applications running on it. Before, I mainly focused on Kubernetes clusters provisioning. I thought that looking at things from the application and end-user end-guide scale would help to complete the circle, so here I am. When you join a new team or a company, getting to know its history helps to understand current decisions and trade-offs. Mesos has been used at Apple for over five years with an internally built container orchestrator called Jarvis.
[1:06] It had a good reputation as a scheduling platform and it scaled well to support multiple frameworks for running a variety of services like Batch, Stateful and Stateless. But the container orchestrator soon became a bottleneck for skills and responsibilities delegation, so we started considering other choices. In addition to Mesos, Apple used some other solutions for compute management. Along with the transition, we wanted to consolidate them and provide the unified platform for better capacity utilization.
[1:37] We found that Kubernetes was an obvious winner as an orchestrator. With Kubernetes being more generic and fluggable, it meant we could better divide work among teams. The decisions on what provider to choose for core components like storage, runtime, and network were no longer life or death decisions. We knew that it was just a plugin choice and the choice could always be re-evaluated without refactoring the entire system. Another big point of attraction for developers was an ability to extend Kubernetes APIs and core functionality by leveraging CRDs and custom controllers.
[2:14] The Kubernetes community was a huge asset to the platform. Its transparency and power was so obvious and provided a great level of comfort to developers. The goal was to meet the demand of diverse user base. We had teams who were already successfully running Kubernetes clusters in their organization. And we had people who had never worked with Kubernetes before, but trusted the technology and wanted to adopt it. When the change of this magnitude happens, it is important to be honest about the trade-offs that need to be made for successful migration.
[2:50] It is a known fact that Kubernetes' learning curve is steep, not only for end users, but for platform developers too. All the platform features that were built in the past had to be re-evaluated. Is the feature's current design aligned with the cloud-native best practices? Is this feature even relevant to the new platform? Asking and answering these questions can be uncomfortable for people. and software is built by people. We had to accept the fact that there would be a need for a change to the current processes, and people would have to adapt.
[3:24] We realized the impact of the decision. We were ready to invest in training resources and provide full support for developers, anything to make the adoption successful. At that point, Kubernetes became our platform choice for compute management at Apple. Our target goal is to make the majority of Apple workloads run on Kubernetes. We want to maintain end-user focus while building the platform. That required us to understand and categorize our platform users to establish common patterns for hardware and software infrastructure planning.
[4:00] One category of users are Java, Python, Go developers who want to test and run their applications in the containers. Another category are applications SREs whose focus is on building advanced deployment workflows for their teams. Another example is hardware QA engineers who are not afraid to try new things and explore creative solutions using cloud-native tools. anything to make it easier for hardware teams to validate devices. There are machine learning and batch workloads engineers who utilize the platform daily, running thousands of batch jobs that use both CPU and GPUs for training machine learning models.
[4:39] Finance is also a platform user as they're a big part of placement decisions and capacity planning. All of these users want to adopt cloud-native tools for better debugging, logging, monitoring, and tracing for their apps. Our responsibility as platform developers is to provide a scalable orchestration layer with secure resource isolation and reliable scheduling. Building high-level obstructions and CLI tools is also necessary for the platform's success and adoption.
[5:11] So we have this big infrastructure pool of compute and storage resources managed by Kubernetes. Providing it to users can be done in two ways: cluster as a service and namespace as a service. Namespace as a Service is our primary model today. SRE manages multi-tenant Kubernetes clusters and user operates in one or multiple namespaces. This way, users do not have an overhead of infrastructure management and can focus on application deployment and development. However, we realize that in the world where cluster provisioning has been commodified, some teams may still want cluster as a service.
[5:54] With the goal of centralized capacity control, we had to abstract resource management to its own system. We wanted to make it as generic as possible to streamline the solution for the hybrid cloud in the future. The system would do a dynamic balancing between clusters, priority, usage, and limits to find the best placement for the user application. Resource isolation would be handled by assigning priority and quota to each workload. However, we still had to address privacy and security concerns of running applications in multi-tenant clusters.
[6:29] It had to be done both on configuration and runtime levels. Even with the namespace as a service constraint, we wanted users to have a freedom to choose cloud-native tools to run in their namespaces. Some of these tools require CRDs, a cluster-level resource. We have to think of a proper CRD management flow to make that deployment possible. Solving these technical challenges would not have been possible without the wide array of cloud-native tools. those we use on the platform level, and those we recommend to application developers.
[7:04] This list is not complete and keeps on growing as we constantly evaluate new projects and find more areas for development and integration. With all the careful planning, only running things at scale could reveal certain issues. We have chosen open source Kubernetes PerfTest cluster loader tool. to challenge our class 3s. Developers can always write their own framework, but we found Cluster Loader being quite powerful. We wanted to engage more with the community and invest time in fixing and expanding the existing tool that could be used by others.
[7:40] Another area of immediate focus was scheduling. We run mixed types of workloads on Kubernetes, including batch workloads, and want to maintain a reasonable resource utilization. Participating in SIG scheduling and contributing back is very important to us, as we want to stay as close to the upstream as possible. For some people in our team, it was their very first experience contributing to Upstream Kubernetes, going through the process of joining SICK for discussions. Filing first Kubernetes issues and recognizing the various ways to help the community, it was all new and exciting.
[8:16] I would like to share some of our current priorities. In a multi-tenant environment, many customers' workloads run on the same machine. To meet security requirements and provide isolation between mixed level of trust, A common pattern is to leverage defense in depth. We are seeking to enable this level of isolation with microVMs. With that, multiple untrusting tenants can run on the same nodes and share the same control plane, while continuing to provide two layers of isolation: virtual machine and container.
[8:51] Cluster as a Service comes with the cost of increased security management, resource utilization inefficiency, and operational burden. in the companies of Apple's scale. As a result, we started exploring alternative models like virtual clusters. With Virtual Cluster, User, Self Services, Virtualized Kubernetes Control and Data Plane, on top of shared Kubernetes infrastructure. It eliminates the majority of security and operational concerns. With the deployment footprint growth and distribution across data centers, comes the demand for multi-cluster workload management. We are researching on API proxy solutions to offer improved self-healing, utilization efficiency, high-level obstructions, and developer workflow experiences for teams that manage workloads across multiple clusters.
[9:42] We want to reduce the platform complexity for developers and operators. At the same time, we want to maintain high security standards and low resource utilization. So we are investing in function as a service solution, leveraging server-side web assembly to solve this. With the constant additions of the new features and user workloads, observability becomes one of the top priorities. We want to keep the platform management sane as the platform grows. End-user productivity and happiness is our end goal. We are always looking into ways to improve it with compelling CI/CD and developer tooling.
[10:19] Adopting new technology on such a big scale often comes hand in hand with organizational changes. You need to change everything and everyone from managers and finance to tech teams and yourself. It is a long road with a lot of growing pains. Our security team grew and took on extra responsibilities. Insurance security in multi-attendant cluster is not a trivial task. We had to have a clear separation of concern between application security and Kubernetes platform security to maintain a shared responsibility model.
[10:54] One of our goals was to rethink capacity planning. Having a dedicated resource management team working close with the finance department was necessary. Some new teams were formed, some grew in size and responsibilities, and some developed a new set of priorities. SRE team used to be more operational and systems focused. Now it has an emphasis on engineering and a much stronger voice in the platform architectural design. Having a solid and stable platform made it possible to maintain focus on the customer's needs and innovate faster.
[11:30] Innovation is impossible without collaboration. Forming a cross-team technical review board for cloud-native based projects was invaluable to us. It is a safe place to get peer feedback from people having different backgrounds. Some have more experience with developing features for Kubernetes, and some have a deep expertise in a particular technical domain like security. Getting their combined input is extremely useful during the design stage. With a shared platform, sharing information becomes a necessity. We are lucky to have a dedicated team managing inner source and open source initiatives here at Apple.
[12:06] The team focuses on internal trainings on Cloud Native and Kubernetes, advises people who want to start making their first open source contributions, and supports those who have been contributing to open source for a while. The team helps to connect people and grow both internal and external collaborations. The ongoing transformation leaves very little time for reflection, but the reflection is always necessary. Migration is not something everyone wants to do.
[12:37] But those who invest in modernizing their application and platform benefit in the future by adopting more cloud-native technologies on top of the foundation. Migration at scale has taught us to embrace the community best practices and shared learnings. We wanted to give back and have realized that engagement comes in many forms: writing code, serving on TOC board for CNCF, helping Kubernetes release team, improving documentation, filing issues, and many more.
[13:08] Innovation is driven by sharing and collaboration. Sharing with a broader community in the open source, sharing with another team in your company through the inner source, helps to enable reuse of existing solutions and minimize redundancy. Even small change can begin to make larger cultural change a reality. We have realized that in the end the migration changes not just the technical stack, but the people involved in it. Please reach out to us if you have any questions. Thank you.
在 Vidleaf 工作台開啟
檢索字幕、選取句子、複製附時間戳的引用,或按需翻譯。
來源署名
「Keynote: The Cloud Native Journey @Apple - Alena Prokharchyk, Software Engineer, Apple」由 CNCF [Cloud Native Computing Foundation] 發布,採用 CC BY 3.0 授權。來源影片:https://www.youtube.com/watch?v=Tx8qXC-U3KM。此頁呈現影片的文字字幕,由 Vidleaf 加入段落與時間戳。創作者與 Vidleaf 無隸屬或背書關係。頁面若提供 AI 標點、名稱修正或摘要,會分開標示,原始字幕仍可查看。
若你是創作者或權利人,可申請更正或下架: copyright@vidleaf.app (參閱 關於這些頁面)。
最後更新