Skip to content

Commit a1c493f

Browse files
authored
Merge pull request #50098 from michellengnx/merged-main-dev-1.33
Merge main branch into dev-1.33
2 parents 4b5ed9f + 5dead83 commit a1c493f

File tree

22 files changed

+644
-361
lines changed

22 files changed

+644
-361
lines changed
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
---
2+
layout: blog
3+
title: "Spotlight on SIG Apps"
4+
slug: sig-apps-spotlight-2025
5+
canonicalUrl: https://www.kubernetes.dev/blog/2025/03/12/sig-apps-spotlight-2025
6+
date: 2025-03-12
7+
author: "Sandipan Panda (DevZero)"
8+
---
9+
10+
In our ongoing SIG Spotlight series, we dive into the heart of the Kubernetes project by talking to
11+
the leaders of its various Special Interest Groups (SIGs). This time, we focus on
12+
**[SIG Apps](https://github.com/kubernetes/community/tree/master/sig-apps#apps-special-interest-group)**,
13+
the group responsible for everything related to developing, deploying, and operating applications on
14+
Kubernetes. [Sandipan Panda](https://www.linkedin.com/in/sandipanpanda)
15+
([DevZero](https://www.devzero.io/)) had the opportunity to interview [Maciej
16+
Szulik](https://github.com/soltysh) ([Defense Unicorns](https://defenseunicorns.com/)) and [Janet
17+
Kuo](https://github.com/janetkuo) ([Google](https://about.google/)), the chairs and tech leads of
18+
SIG Apps. They shared their experiences, challenges, and visions for the future of application
19+
management within the Kubernetes ecosystem.
20+
21+
## Introductions
22+
23+
**Sandipan: Hello, could you start by telling us a bit about yourself, your role, and your journey
24+
within the Kubernetes community that led to your current roles in SIG Apps?**
25+
26+
**Maciej**: Hey, my name is Maciej, and I’m one of the leads for SIG Apps. Aside from this role, you
27+
can also find me helping
28+
[SIG CLI](https://github.com/kubernetes/community/tree/master/sig-cli#readme) and also being one of
29+
the Steering Committee members. I’ve been contributing to Kubernetes since late 2014 in various
30+
areas, including controllers, apiserver, and kubectl.
31+
32+
**Janet**: Certainly! I'm Janet, a Staff Software Engineer at Google, and I've been deeply involved
33+
with the Kubernetes project since its early days, even before the 1.0 launch in 2015. It's been an
34+
amazing journey!
35+
36+
My current role within the Kubernetes community is one of the chairs and tech leads of SIG Apps. My
37+
journey with SIG Apps started organically. I started with building the Deployment API and adding
38+
rolling update functionalities. I naturally gravitated towards SIG Apps and became increasingly
39+
involved. Over time, I took on more responsibilities, culminating in my current leadership roles.
40+
41+
## About SIG Apps
42+
43+
*All following answers were jointly provided by Maciej and Janet.*
44+
45+
**Sandipan: For those unfamiliar, could you provide an overview of SIG Apps' mission and objectives?
46+
What key problems does it aim to solve within the Kubernetes ecosystem?**
47+
48+
As described in our
49+
[charter](https://github.com/kubernetes/community/blob/master/sig-apps/charter.md#scope), we cover a
50+
broad area related to developing, deploying, and operating applications on Kubernetes. That, in
51+
short, means we’re open to each and everyone showing up at our bi-weekly meetings and discussing the
52+
ups and downs of writing and deploying various applications on Kubernetes.
53+
54+
**Sandipan: What are some of the most significant projects or initiatives currently being undertaken
55+
by SIG Apps?**
56+
57+
At this point in time, the main factors driving the development of our controllers are the
58+
challenges coming from running various AI-related workloads. It’s worth giving credit here to two
59+
working groups we’ve sponsored over the past years:
60+
61+
1. [The Batch Working Group](https://github.com/kubernetes/community/tree/master/wg-batch), which is
62+
looking at running HPC, AI/ML, and data analytics jobs on top of Kubernetes.
63+
2. [The Serving Working Group](https://github.com/kubernetes/community/tree/master/wg-serving), which
64+
is focusing on hardware-accelerated AI/ML inference.
65+
66+
## Best practices and challenges
67+
68+
**Sandipan: SIG Apps plays a crucial role in developing application management best practices for
69+
Kubernetes. Can you share some of these best practices and how they help improve application
70+
lifecycle management?**
71+
72+
1. Implementing [health checks and readiness probes](/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/)
73+
ensures that your applications are healthy and ready to serve traffic, leading to improved
74+
reliability and uptime. The above, combined with comprehensive logging, monitoring, and tracing
75+
solutions, will provide insights into your application's behavior, enabling you to identify and
76+
resolve issues quickly.
77+
78+
2. [Auto-scale your application](/docs/concepts/workloads/autoscaling/) based
79+
on resource utilization or custom metrics, optimizing resource usage and ensuring your
80+
application can handle varying loads.
81+
82+
3. Use Deployment for stateless applications, StatefulSet for stateful applications, Job
83+
and CronJob for batch workloads, and DaemonSet for running a daemon on each node. Use
84+
Operators and CRDs to extend the Kubernetes API to automate the deployment, management, and
85+
lifecycle of complex applications, making them easier to operate and reducing manual
86+
intervention.
87+
88+
**Sandipan: What are some of the common challenges SIG Apps faces, and how do you address them?**
89+
90+
The biggest challenge we’re facing all the time is the need to reject a lot of features, ideas, and
91+
improvements. This requires a lot of discipline and patience to be able to explain the reasons
92+
behind those decisions.
93+
94+
**Sandipan: How has the evolution of Kubernetes influenced the work of SIG Apps? Are there any
95+
recent changes or upcoming features in Kubernetes that you find particularly relevant or beneficial
96+
for SIG Apps?**
97+
98+
The main benefit for both us and the whole community around SIG Apps is the ability to extend
99+
kubernetes with [Custom Resource Definitions](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/)
100+
and the fact that users can build their own custom controllers leveraging the built-in ones to
101+
achieve whatever sophisticated use cases they might have and we, as the core maintainers, haven’t
102+
considered or weren’t able to efficiently resolve inside Kubernetes.
103+
104+
## Contributing to SIG Apps
105+
106+
**Sandipan: What opportunities are available for new contributors who want to get involved with SIG
107+
Apps, and what advice would you give them?**
108+
109+
We get the question, "What good first issue might you recommend we start with?" a lot :-) But
110+
unfortunately, there’s no easy answer to it. We always tell everyone that the best option to start
111+
contributing to core controllers is to find one you are willing to spend some time with. Read
112+
through the code, then try running unit tests and integration tests focusing on that
113+
controller. Once you grasp the general idea, try breaking it and the tests again to verify your
114+
breakage. Once you start feeling confident you understand that particular controller, you may want
115+
to search through open issues affecting that controller and either provide suggestions, explaining
116+
the problem users have, or maybe attempt your first fix.
117+
118+
Like we said, there are no shortcuts on that road; you need to spend the time with the codebase to
119+
understand all the edge cases we’ve slowly built up to get to the point where we are. Once you’re
120+
successful with one controller, you’ll need to repeat that same process with others all over again.
121+
122+
**Sandipan: How does SIG Apps gather feedback from the community, and how is this feedback
123+
integrated into your work?**
124+
125+
We always encourage everyone to show up and present their problems and solutions during our
126+
bi-weekly [meetings](https://github.com/kubernetes/community/tree/master/sig-apps#meetings). As long
127+
as you’re solving an interesting problem on top of Kubernetes and you can provide valuable feedback
128+
about any of the core controllers, we’re always happy to hear from everyone.
129+
130+
## Looking ahead
131+
132+
**Sandipan: Looking ahead, what are the key focus areas or upcoming trends in application management
133+
within Kubernetes that SIG Apps is excited about? How is the SIG adapting to these trends?**
134+
135+
Definitely the current AI hype is the major driving factor; as mentioned above, we have two working
136+
groups, each covering a different aspect of it.
137+
138+
**Sandipan: What are some of your favorite things about this SIG?**
139+
140+
Without a doubt, the people that participate in our meetings and on
141+
[Slack](https://kubernetes.slack.com/messages/sig-apps), who tirelessly help triage issues, pull
142+
requests and invest a lot of their time (very frequently their private time) into making kubernetes
143+
great!
144+
145+
---
146+
147+
SIG Apps is an essential part of the Kubernetes community, helping to shape how applications are
148+
deployed and managed at scale. From its work on improving Kubernetes' workload APIs to driving
149+
innovation in AI/ML application management, SIG Apps is continually adapting to meet the needs of
150+
modern application developers and operators. Whether you’re a new contributor or an experienced
151+
developer, there’s always an opportunity to get involved and make an impact.
152+
153+
If you’re interested in learning more or contributing to SIG Apps, be sure to check out their [SIG
154+
README](https://github.com/kubernetes/community/tree/master/sig-apps) and join their bi-weekly [meetings](https://github.com/kubernetes/community/tree/master/sig-apps#meetings).
155+
156+
- [SIG Apps Mailing List](https://groups.google.com/a/kubernetes.io/g/sig-apps)
157+
- [SIG Apps on Slack](https://kubernetes.slack.com/messages/sig-apps)

content/en/blog/_posts/2025-01-15-swap-fresh-improvements.md renamed to content/en/blog/_posts/2025-03-24-swap-fresh-improvements.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
---
22
layout: blog
3-
title: "Kubernetes 1.32: Fresh Swap Features for Linux Users"
4-
date: 2025-01-15T10:00:00-08:00
5-
draft: true
3+
title: "Fresh Swap Features for Linux Users in Kubernetes 1.32"
4+
date: 2025-03-24T10:00:00-08:00
65
slug: swap-linux-improvements
76
author: >
87
Itamar Holder (Red Hat)

content/en/docs/reference/access-authn-authz/authentication.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,7 @@ presents a valid certificate signed by the cluster's certificate authority
3333
the username from the common name field in the 'subject' of the cert (e.g.,
3434
"/CN=bob"). From there, the role based access control (RBAC) sub-system would
3535
determine whether the user is authorized to perform a specific operation on a
36-
resource. For more details, refer to the normal users topic in
37-
[certificate request](/docs/reference/access-authn-authz/certificate-signing-requests/#normal-user)
38-
for more details about this.
36+
resource.
3937

4038
In contrast, service accounts are users managed by the Kubernetes API. They are
4139
bound to specific namespaces, and created automatically by the API server or
@@ -1815,5 +1813,6 @@ You can only make `SelfSubjectReview` requests if:
18151813

18161814
## {{% heading "whatsnext" %}}
18171815

1816+
* To learn about issuing certificates for users, read [Issue a Certificate for a Kubernetes API Client Using A CertificateSigningRequest](/docs/tasks/tls/certificate-issue-client-csr/)
18181817
* Read the [client authentication reference (v1beta1)](/docs/reference/config-api/client-authentication.v1beta1/)
18191818
* Read the [client authentication reference (v1)](/docs/reference/config-api/client-authentication.v1/)

content/en/docs/reference/access-authn-authz/certificate-signing-requests.md

Lines changed: 1 addition & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -489,133 +489,10 @@ signer-unlinked ClusterTrustBundles **must not** contain a colon (`:`).
489489
The contents of ClusterTrustBundles can be injected into the container filesystem, similar to ConfigMaps and Secrets.
490490
See the [clusterTrustBundle projected volume source](/docs/concepts/storage/projected-volumes#clustertrustbundle) for more details.
491491

492-
<!-- TODO this should become a task page -->
493-
## How to issue a certificate for a user {#normal-user}
494-
495-
A few steps are required in order to get a normal user to be able to
496-
authenticate and invoke an API. First, this user must have a certificate issued
497-
by the Kubernetes cluster, and then present that certificate to the Kubernetes API.
498-
499-
### Create private key
500-
501-
The following scripts show how to generate PKI private key and CSR. It is
502-
important to set CN and O attribute of the CSR. CN is the name of the user and
503-
O is the group that this user will belong to. You can refer to
504-
[RBAC](/docs/reference/access-authn-authz/rbac/) for standard groups.
505-
506-
```shell
507-
openssl genrsa -out myuser.key 2048
508-
openssl req -new -key myuser.key -out myuser.csr -subj "/CN=myuser"
509-
```
510-
511-
### Create a CertificateSigningRequest {#create-certificatessigningrequest}
512-
513-
Create a [CertificateSigningRequest](/docs/reference/kubernetes-api/authentication-resources/certificate-signing-request-v1/)
514-
and submit it to a Kubernetes Cluster via kubectl. Below is a script to generate the
515-
CertificateSigningRequest.
516-
517-
```shell
518-
cat <<EOF | kubectl apply -f -
519-
apiVersion: certificates.k8s.io/v1
520-
kind: CertificateSigningRequest
521-
metadata:
522-
name: myuser
523-
spec:
524-
request: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ1ZqQ0NBVDRDQVFBd0VURVBNQTBHQTFVRUF3d0dZVzVuWld4aE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRgpBQU9DQVE4QU1JSUJDZ0tDQVFFQTByczhJTHRHdTYxakx2dHhWTTJSVlRWMDNHWlJTWWw0dWluVWo4RElaWjBOCnR2MUZtRVFSd3VoaUZsOFEzcWl0Qm0wMUFSMkNJVXBGd2ZzSjZ4MXF3ckJzVkhZbGlBNVhwRVpZM3ExcGswSDQKM3Z3aGJlK1o2MVNrVHF5SVBYUUwrTWM5T1Nsbm0xb0R2N0NtSkZNMUlMRVI3QTVGZnZKOEdFRjJ6dHBoaUlFMwpub1dtdHNZb3JuT2wzc2lHQ2ZGZzR4Zmd4eW8ybmlneFNVekl1bXNnVm9PM2ttT0x1RVF6cXpkakJ3TFJXbWlECklmMXBMWnoyalVnald4UkhCM1gyWnVVV1d1T09PZnpXM01LaE8ybHEvZi9DdS8wYk83c0x0MCt3U2ZMSU91TFcKcW90blZtRmxMMytqTy82WDNDKzBERHk5aUtwbXJjVDBnWGZLemE1dHJRSURBUUFCb0FBd0RRWUpLb1pJaHZjTgpBUUVMQlFBRGdnRUJBR05WdmVIOGR4ZzNvK21VeVRkbmFjVmQ1N24zSkExdnZEU1JWREkyQTZ1eXN3ZFp1L1BVCkkwZXpZWFV0RVNnSk1IRmQycVVNMjNuNVJsSXJ3R0xuUXFISUh5VStWWHhsdnZsRnpNOVpEWllSTmU3QlJvYXgKQVlEdUI5STZXT3FYbkFvczFqRmxNUG5NbFpqdU5kSGxpT1BjTU1oNndLaTZzZFhpVStHYTJ2RUVLY01jSVUyRgpvU2djUWdMYTk0aEpacGk3ZnNMdm1OQUxoT045UHdNMGM1dVJVejV4T0dGMUtCbWRSeEgvbUNOS2JKYjFRQm1HCkkwYitEUEdaTktXTU0xMzhIQXdoV0tkNjVoVHdYOWl4V3ZHMkh4TG1WQzg0L1BHT0tWQW9FNkpsYWFHdTlQVmkKdjlOSjVaZlZrcXdCd0hKbzZXdk9xVlA3SVFjZmg3d0drWm89Ci0tLS0tRU5EIENFUlRJRklDQVRFIFJFUVVFU1QtLS0tLQo=
525-
signerName: kubernetes.io/kube-apiserver-client
526-
expirationSeconds: 86400 # one day
527-
usages:
528-
- client auth
529-
EOF
530-
```
531-
532-
Some points to note:
533-
534-
- `usages` has to be '`client auth`'
535-
- `expirationSeconds` could be made longer (i.e. `864000` for ten days) or shorter (i.e. `3600` for one hour)
536-
- `request` is the base64 encoded value of the CSR file content.
537-
You can get the content using this command:
538-
539-
```shell
540-
cat myuser.csr | base64 | tr -d "\n"
541-
```
542-
543-
544-
### Approve the CertificateSigningRequest {#approve-certificate-signing-request}
545-
546-
Use kubectl to create a CSR and approve it.
547-
548-
Get the list of CSRs:
549-
550-
```shell
551-
kubectl get csr
552-
```
553-
554-
Approve the CSR:
555-
556-
```shell
557-
kubectl certificate approve myuser
558-
```
559-
560-
### Get the certificate
561-
562-
Retrieve the certificate from the CSR:
563-
564-
```shell
565-
kubectl get csr/myuser -o yaml
566-
```
567-
568-
The certificate value is in Base64-encoded format under `status.certificate`.
569-
570-
Export the issued certificate from the CertificateSigningRequest.
571-
572-
```shell
573-
kubectl get csr myuser -o jsonpath='{.status.certificate}'| base64 -d > myuser.crt
574-
```
575-
576-
### Create Role and RoleBinding
577-
578-
With the certificate created it is time to define the Role and RoleBinding for
579-
this user to access Kubernetes cluster resources.
580-
581-
This is a sample command to create a Role for this new user:
582-
583-
```shell
584-
kubectl create role developer --verb=create --verb=get --verb=list --verb=update --verb=delete --resource=pods
585-
```
586-
587-
This is a sample command to create a RoleBinding for this new user:
588-
589-
```shell
590-
kubectl create rolebinding developer-binding-myuser --role=developer --user=myuser
591-
```
592-
593-
### Add to kubeconfig
594-
595-
The last step is to add this user into the kubeconfig file.
596-
597-
First, you need to add new credentials:
598-
599-
```shell
600-
kubectl config set-credentials myuser --client-key=myuser.key --client-certificate=myuser.crt --embed-certs=true
601-
602-
```
603-
604-
Then, you need to add the context:
605-
606-
```shell
607-
kubectl config set-context myuser --cluster=kubernetes --user=myuser
608-
```
609-
610-
To test it, change the context to `myuser`:
611-
612-
```shell
613-
kubectl config use-context myuser
614-
```
615-
616492
## {{% heading "whatsnext" %}}
617493

618494
* Read [Manage TLS Certificates in a Cluster](/docs/tasks/tls/managing-tls-in-a-cluster/)
495+
* Read [Issue a Certificate for a Kubernetes API Client Using A CertificateSigningRequest](/docs/tasks/tls/certificate-issue-client-csr/)
619496
* View the source code for the kube-controller-manager built in
620497
[signer](https://github.com/kubernetes/kubernetes/blob/32ec6c212ec9415f604ffc1f4c1f29b782968ff1/pkg/controller/certificates/signer/cfssl_signer.go)
621498
* View the source code for the kube-controller-manager built in

content/en/docs/setup/production-environment/tools/kubeadm/high-availability.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ option. Your cluster requirements may need a different configuration.
146146
connection:
147147

148148
```shell
149-
nc -v <LOAD_BALANCER_IP> <PORT>
149+
nc -zv -w 2 <LOAD_BALANCER_IP> <PORT>
150150
```
151151

152152
A connection refused error is expected because the API server is not yet

content/en/docs/setup/production-environment/tools/kubeadm/install-kubeadm.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ need to be open in order for Kubernetes components to communicate with each othe
6060
You can use tools like [netcat](https://netcat.sourceforge.net) to check if a port is open. For example:
6161

6262
```shell
63-
nc 127.0.0.1 6443 -v
63+
nc 127.0.0.1 6443 -zv -w 2
6464
```
6565

6666
The pod network plugin you use may also require certain ports to be

0 commit comments

Comments
 (0)