@@ -31,6 +31,7 @@ import (
3131 "k8s.io/apimachinery/pkg/util/intstr"
3232 "k8s.io/apimachinery/pkg/util/sets"
3333
34+ netcfg "knative.dev/networking/pkg/config"
3435 netheader "knative.dev/networking/pkg/http/header"
3536 "knative.dev/pkg/kmeta"
3637 "knative.dev/pkg/ptr"
@@ -41,6 +42,7 @@ import (
4142 v1 "knative.dev/serving/pkg/apis/serving/v1"
4243 "knative.dev/serving/pkg/autoscaler/config/autoscalerconfig"
4344 "knative.dev/serving/pkg/deployment"
45+ "knative.dev/serving/pkg/networking"
4446 "knative.dev/serving/pkg/observability"
4547 "knative.dev/serving/pkg/queue"
4648
5658 Name : servingContainerName ,
5759 Image : "busybox" ,
5860 Ports : buildContainerPorts (v1 .DefaultUserPort ),
59- Lifecycle : userLifecycle ,
61+ Lifecycle : makeUserLifecycle ( false ) ,
6062 TerminationMessagePolicy : corev1 .TerminationMessageFallbackToLogsOnError ,
6163 Stdin : false ,
6264 TTY : false ,
@@ -253,7 +255,7 @@ func defaultSidecarContainer(containerName string) *corev1.Container {
253255 return & corev1.Container {
254256 Name : containerName ,
255257 Image : "ubuntu" ,
256- Lifecycle : userLifecycle ,
258+ Lifecycle : makeUserLifecycle ( false ) ,
257259 TerminationMessagePolicy : corev1 .TerminationMessageFallbackToLogsOnError ,
258260 Stdin : false ,
259261 TTY : false ,
@@ -1749,6 +1751,112 @@ func TestMakePodSpec(t *testing.T) {
17491751 }
17501752}
17511753
1754+ func TestMakePodSpecWithSystemInternalTLS (t * testing.T ) {
1755+ tests := []struct {
1756+ name string
1757+ rev * v1.Revision
1758+ tlsEnabled bool
1759+ wantScheme corev1.URIScheme
1760+ }{{
1761+ name : "system internal TLS disabled" ,
1762+ rev : revision ("bar" , "foo" ,
1763+ withContainers ([]corev1.Container {{
1764+ Name : servingContainerName ,
1765+ Image : "busybox" ,
1766+ ReadinessProbe : withTCPReadinessProbe (v1 .DefaultUserPort ),
1767+ }}),
1768+ WithContainerStatuses ([]v1.ContainerStatus {{
1769+ ImageDigest : "busybox@sha256:deadbeef" ,
1770+ }}),
1771+ ),
1772+ tlsEnabled : false ,
1773+ wantScheme : corev1 .URISchemeHTTP ,
1774+ }, {
1775+ name : "system internal TLS enabled" ,
1776+ rev : revision ("bar" , "foo" ,
1777+ withContainers ([]corev1.Container {{
1778+ Name : servingContainerName ,
1779+ Image : "busybox" ,
1780+ ReadinessProbe : withTCPReadinessProbe (v1 .DefaultUserPort ),
1781+ }}),
1782+ WithContainerStatuses ([]v1.ContainerStatus {{
1783+ ImageDigest : "busybox@sha256:deadbeef" ,
1784+ }}),
1785+ ),
1786+ tlsEnabled : true ,
1787+ wantScheme : corev1 .URISchemeHTTPS ,
1788+ }}
1789+
1790+ for _ , test := range tests {
1791+ t .Run (test .name , func (t * testing.T ) {
1792+ cfg := revConfig ()
1793+ if test .tlsEnabled {
1794+ cfg .Network .SystemInternalTLS = netcfg .EncryptionEnabled
1795+ }
1796+ got , err := makePodSpec (test .rev , cfg )
1797+ if err != nil {
1798+ t .Fatal ("makePodSpec returned error:" , err )
1799+ }
1800+ // Check that all user containers have the correct lifecycle scheme
1801+ for _ , container := range got .Containers {
1802+ if container .Name == QueueContainerName {
1803+ continue
1804+ }
1805+ if container .Lifecycle == nil || container .Lifecycle .PreStop == nil ||
1806+ container .Lifecycle .PreStop .HTTPGet == nil {
1807+ t .Errorf ("Container %s missing PreStop HTTPGet" , container .Name )
1808+ continue
1809+ }
1810+ if container .Lifecycle .PreStop .HTTPGet .Scheme != test .wantScheme {
1811+ t .Errorf ("Container %s PreStop scheme = %v, want %v" ,
1812+ container .Name , container .Lifecycle .PreStop .HTTPGet .Scheme , test .wantScheme )
1813+ }
1814+ }
1815+ })
1816+ }
1817+ }
1818+
1819+ func TestMakeUserLifecycle (t * testing.T ) {
1820+ tests := []struct {
1821+ name string
1822+ systemInternalTLSEnabled bool
1823+ wantScheme corev1.URIScheme
1824+ }{{
1825+ name : "system internal TLS disabled" ,
1826+ systemInternalTLSEnabled : false ,
1827+ wantScheme : corev1 .URISchemeHTTP ,
1828+ }, {
1829+ name : "system internal TLS enabled" ,
1830+ systemInternalTLSEnabled : true ,
1831+ wantScheme : corev1 .URISchemeHTTPS ,
1832+ }}
1833+
1834+ for _ , test := range tests {
1835+ t .Run (test .name , func (t * testing.T ) {
1836+ got := makeUserLifecycle (test .systemInternalTLSEnabled )
1837+ if got == nil {
1838+ t .Fatal ("makeUserLifecycle returned nil" )
1839+ }
1840+ if got .PreStop == nil {
1841+ t .Fatal ("makeUserLifecycle returned nil PreStop" )
1842+ }
1843+ if got .PreStop .HTTPGet == nil {
1844+ t .Fatal ("makeUserLifecycle returned nil HTTPGet" )
1845+ }
1846+ if got .PreStop .HTTPGet .Scheme != test .wantScheme {
1847+ t .Errorf ("makeUserLifecycle scheme = %v, want %v" , got .PreStop .HTTPGet .Scheme , test .wantScheme )
1848+ }
1849+ // Verify other PreStop hook properties remain the same
1850+ if got .PreStop .HTTPGet .Port .IntValue () != networking .QueueAdminPort {
1851+ t .Errorf ("makeUserLifecycle port = %v, want %v" , got .PreStop .HTTPGet .Port .IntValue (), networking .QueueAdminPort )
1852+ }
1853+ if got .PreStop .HTTPGet .Path != queue .RequestQueueDrainPath {
1854+ t .Errorf ("makeUserLifecycle path = %v, want %v" , got .PreStop .HTTPGet .Path , queue .RequestQueueDrainPath )
1855+ }
1856+ })
1857+ }
1858+ }
1859+
17521860var quantityComparer = cmp .Comparer (func (x , y resource.Quantity ) bool {
17531861 return x .Cmp (y ) == 0
17541862})
0 commit comments