Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Removed label from services. Added label to oauth2 proxy (#1303) #1304

Merged
merged 1 commit into from
Feb 27, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions charts/radix-operator/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: v2
name: radix-operator
version: 1.52.5
appVersion: 1.72.5
version: 1.52.6
appVersion: 1.72.6
kubeVersion: ">=1.24.0"
description: Radix Operator
keywords:
Expand Down
186 changes: 0 additions & 186 deletions code

This file was deleted.

6 changes: 0 additions & 6 deletions pkg/apis/defaults/auxiliary.go

This file was deleted.

6 changes: 3 additions & 3 deletions pkg/apis/deployment/deployment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1048,7 +1048,7 @@ func TestObjectSynced_ServiceAccountSettingsAndRbac(t *testing.T) {
sa := serviceAccounts.Items[0]
assert.Equal(t, utils.GetComponentServiceAccountName(componentName), sa.Name)
assert.Equal(t, map[string]string{"azure.workload.identity/client-id": clientId}, sa.Annotations)
assert.Equal(t, map[string]string{kube.RadixComponentLabel: componentName, kube.IsServiceAccountForComponent: "true", "azure.workload.identity/use": "true"}, sa.Labels)
assert.Equal(t, map[string]string{kube.RadixComponentLabel: componentName, kube.IsServiceAccountForComponent: "true"}, sa.Labels)

deployments, _ := client.AppsV1().Deployments(utils.GetEnvironmentNamespace(appName, envName)).List(context.Background(), metav1.ListOptions{})
expectedDeployments := getDeploymentsForRadixComponents(deployments.Items)
Expand All @@ -1072,7 +1072,7 @@ func TestObjectSynced_ServiceAccountSettingsAndRbac(t *testing.T) {
sa = serviceAccounts.Items[0]
assert.Equal(t, utils.GetComponentServiceAccountName(componentName), sa.Name)
assert.Equal(t, map[string]string{"azure.workload.identity/client-id": newClientId}, sa.Annotations)
assert.Equal(t, map[string]string{kube.RadixComponentLabel: componentName, kube.IsServiceAccountForComponent: "true", "azure.workload.identity/use": "true"}, sa.Labels)
assert.Equal(t, map[string]string{kube.RadixComponentLabel: componentName, kube.IsServiceAccountForComponent: "true"}, sa.Labels)

deployments, _ = client.AppsV1().Deployments(utils.GetEnvironmentNamespace(appName, envName)).List(context.Background(), metav1.ListOptions{})
expectedDeployments = getDeploymentsForRadixComponents(deployments.Items)
Expand Down Expand Up @@ -1141,7 +1141,7 @@ func TestObjectSynced_ServiceAccountSettingsAndRbac(t *testing.T) {
sa := serviceAccounts.Items[0]
assert.Equal(t, utils.GetComponentServiceAccountName(componentName), sa.Name)
assert.Equal(t, map[string]string{"azure.workload.identity/client-id": clientId}, sa.Annotations)
assert.Equal(t, map[string]string{kube.RadixComponentLabel: componentName, kube.IsServiceAccountForComponent: "true", "azure.workload.identity/use": "true"}, sa.Labels)
assert.Equal(t, map[string]string{kube.RadixComponentLabel: componentName, kube.IsServiceAccountForComponent: "true"}, sa.Labels)
})

t.Run("component removed, custom SA is garbage collected", func(t *testing.T) {
Expand Down
4 changes: 2 additions & 2 deletions pkg/apis/deployment/networkpolicy.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import (
"context"
"errors"

"github.com/equinor/radix-operator/pkg/apis/defaults"
"github.com/equinor/radix-operator/pkg/apis/kube"
radixv1 "github.com/equinor/radix-operator/pkg/apis/radix/v1"
"github.com/equinor/radix-operator/pkg/apis/utils"
corev1 "k8s.io/api/core/v1"
v1 "k8s.io/api/networking/v1"
Expand Down Expand Up @@ -74,7 +74,7 @@ func allowOauthAuxComponentEgressNetworkPolicy(appName string, env string, owner
// This is because egress rule must allow traffic to the login.microsoftonline.com FQDN.
// This FQDN has IP ranges 20.190.128.0/18 and 40.126.0.0/18 as of April 2022,
// but may change at some point in the future.
return allowEgressNetworkByPortPolicy("radix-allow-oauth-aux-egress", kube.RadixAuxiliaryComponentTypeLabel, defaults.OAuthProxyAuxiliaryComponentType, appName, env, owner, []egreessPortPolicy{
return allowEgressNetworkByPortPolicy("radix-allow-oauth-aux-egress", kube.RadixAuxiliaryComponentTypeLabel, radixv1.OAuthProxyAuxiliaryComponentType, appName, env, owner, []egreessPortPolicy{
{port: 53, protocol: corev1.ProtocolTCP},
{port: 53, protocol: corev1.ProtocolUDP},
{port: 443, protocol: corev1.ProtocolTCP},
Expand Down
43 changes: 21 additions & 22 deletions pkg/apis/deployment/oauthproxyresourcemanager.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
"github.com/equinor/radix-operator/pkg/apis/defaults"
"github.com/equinor/radix-operator/pkg/apis/ingress"
"github.com/equinor/radix-operator/pkg/apis/kube"
v1 "github.com/equinor/radix-operator/pkg/apis/radix/v1"
"github.com/equinor/radix-operator/pkg/apis/radix/v1"
"github.com/equinor/radix-operator/pkg/apis/securitycontext"
"github.com/equinor/radix-operator/pkg/apis/utils"
"github.com/equinor/radix-operator/pkg/apis/utils/annotations"
Expand Down Expand Up @@ -234,7 +234,7 @@ func (o *oauthProxyResourceManager) isEligibleForGarbageCollection(object metav1
if appName := object.GetLabels()[kube.RadixAppLabel]; appName != o.rd.Spec.AppName {
return false
}
if auxType := object.GetLabels()[kube.RadixAuxiliaryComponentTypeLabel]; auxType != defaults.OAuthProxyAuxiliaryComponentType {
if auxType := object.GetLabels()[kube.RadixAuxiliaryComponentTypeLabel]; auxType != v1.OAuthProxyAuxiliaryComponentType {
return false
}
auxTargetComponentName, nameExist := RadixComponentNameFromAuxComponentLabel(object)
Expand Down Expand Up @@ -466,7 +466,7 @@ func (o *oauthProxyResourceManager) createOrUpdateService(ctx context.Context, c
}

func (o *oauthProxyResourceManager) createOrUpdateSecret(ctx context.Context, component v1.RadixCommonDeployComponent) error {
secretName := utils.GetAuxiliaryComponentSecretName(component.GetName(), defaults.OAuthProxyAuxiliaryComponentSuffix)
secretName := utils.GetAuxiliaryComponentSecretName(component.GetName(), v1.OAuthProxyAuxiliaryComponentSuffix)
existingSecret, err := o.kubeutil.GetSecret(ctx, o.rd.Namespace, secretName)
if err != nil {
if !kubeerrors.IsNotFound(err) {
Expand Down Expand Up @@ -501,7 +501,7 @@ func (o *oauthProxyResourceManager) createOrUpdateRbac(ctx context.Context, comp
}

func (o *oauthProxyResourceManager) createOrUpdateAppAdminRbac(ctx context.Context, component v1.RadixCommonDeployComponent) error {
secretName := utils.GetAuxiliaryComponentSecretName(component.GetName(), defaults.OAuthProxyAuxiliaryComponentSuffix)
secretName := utils.GetAuxiliaryComponentSecretName(component.GetName(), v1.OAuthProxyAuxiliaryComponentSuffix)
roleName := o.getRoleAndRoleBindingName("radix-app-adm", component.GetName())
namespace := o.rd.Namespace

Expand All @@ -528,7 +528,7 @@ func (o *oauthProxyResourceManager) createOrUpdateAppAdminRbac(ctx context.Conte
}

func (o *oauthProxyResourceManager) createOrUpdateAppReaderRbac(ctx context.Context, component v1.RadixCommonDeployComponent) error {
secretName := utils.GetAuxiliaryComponentSecretName(component.GetName(), defaults.OAuthProxyAuxiliaryComponentSuffix)
secretName := utils.GetAuxiliaryComponentSecretName(component.GetName(), v1.OAuthProxyAuxiliaryComponentSuffix)
roleName := o.getRoleAndRoleBindingName("radix-app-reader", component.GetName())
namespace := o.rd.Namespace

Expand All @@ -552,12 +552,12 @@ func (o *oauthProxyResourceManager) createOrUpdateAppReaderRbac(ctx context.Cont
}

func (o *oauthProxyResourceManager) getRoleAndRoleBindingName(prefix, componentName string) string {
deploymentName := utils.GetAuxiliaryComponentDeploymentName(componentName, defaults.OAuthProxyAuxiliaryComponentSuffix)
deploymentName := utils.GetAuxiliaryComponentDeploymentName(componentName, v1.OAuthProxyAuxiliaryComponentSuffix)
return fmt.Sprintf("%s-%s", prefix, deploymentName)
}

func buildOAuthProxySecret(appName string, component v1.RadixCommonDeployComponent) (*corev1.Secret, error) {
secretName := utils.GetAuxiliaryComponentSecretName(component.GetName(), defaults.OAuthProxyAuxiliaryComponentSuffix)
secretName := utils.GetAuxiliaryComponentSecretName(component.GetName(), v1.OAuthProxyAuxiliaryComponentSuffix)

secret := &corev1.Secret{
Type: corev1.SecretTypeOpaque,
Expand All @@ -576,7 +576,7 @@ func buildOAuthProxySecret(appName string, component v1.RadixCommonDeployCompone
}

func (o *oauthProxyResourceManager) buildServiceSpec(component v1.RadixCommonDeployComponent) *corev1.Service {
serviceName := utils.GetAuxiliaryComponentServiceName(component.GetName(), defaults.OAuthProxyAuxiliaryComponentSuffix)
serviceName := utils.GetAuxiliaryComponentServiceName(component.GetName(), v1.OAuthProxyAuxiliaryComponentSuffix)

service := &corev1.Service{
ObjectMeta: metav1.ObjectMeta{
Expand Down Expand Up @@ -624,7 +624,7 @@ func (o *oauthProxyResourceManager) createOrUpdateDeployment(ctx context.Context
}

func (o *oauthProxyResourceManager) getCurrentAndDesiredDeployment(ctx context.Context, component v1.RadixCommonDeployComponent) (*appsv1.Deployment, *appsv1.Deployment, error) {
deploymentName := utils.GetAuxiliaryComponentDeploymentName(component.GetName(), defaults.OAuthProxyAuxiliaryComponentSuffix)
deploymentName := utils.GetAuxiliaryComponentDeploymentName(component.GetName(), v1.OAuthProxyAuxiliaryComponentSuffix)

currentDeployment, err := o.kubeutil.GetDeployment(ctx, o.rd.Namespace, deploymentName)
if err != nil && !kubeerrors.IsNotFound(err) {
Expand All @@ -639,7 +639,9 @@ func (o *oauthProxyResourceManager) getCurrentAndDesiredDeployment(ctx context.C
}

func (o *oauthProxyResourceManager) getDesiredDeployment(component v1.RadixCommonDeployComponent) (*appsv1.Deployment, error) {
deploymentName := utils.GetAuxiliaryComponentDeploymentName(component.GetName(), defaults.OAuthProxyAuxiliaryComponentSuffix)
componentName := component.GetName()
deploymentName := utils.GetAuxiliaryComponentDeploymentName(componentName, v1.OAuthProxyAuxiliaryComponentSuffix)
oauth2 := component.GetAuthentication().GetOAuth2()
readinessProbe, err := getReadinessProbeWithDefaultsFromEnv(defaults.OAuthProxyPortNumber)
if err != nil {
return nil, err
Expand All @@ -664,12 +666,15 @@ func (o *oauthProxyResourceManager) getDesiredDeployment(component v1.RadixCommo
},
Template: corev1.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Labels: radixlabels.ForAuxComponent(o.rd.Spec.AppName, component),
Labels: radixlabels.Merge(
radixlabels.ForAuxComponent(o.rd.Spec.AppName, component),
radixlabels.ForOAuthProxyPodWithRadixIdentity(oauth2),
),
},
Spec: corev1.PodSpec{
Containers: []corev1.Container{
{
Name: component.GetName(),
Name: componentName,
Image: o.oauth2ProxyDockerImage,
ImagePullPolicy: corev1.PullAlways,
Env: o.getEnvVars(component),
Expand All @@ -687,19 +692,13 @@ func (o *oauthProxyResourceManager) getDesiredDeployment(component v1.RadixCommo
Resources: resources.New(resources.WithMemoryMega(100), resources.WithCPUMilli(10)),
},
},
SecurityContext: securitycontext.Pod(securitycontext.WithPodSeccompProfile(corev1.SeccompProfileTypeRuntimeDefault)),
Affinity: utils.GetAffinityForOAuthAuxComponent(),
SecurityContext: securitycontext.Pod(securitycontext.WithPodSeccompProfile(corev1.SeccompProfileTypeRuntimeDefault)),
Affinity: utils.GetAffinityForOAuthAuxComponent(),
ServiceAccountName: oauth2.GetServiceAccountName(componentName),
},
},
},
}
if component.GetAuthentication().GetOAuth2().GetUseAzureIdentity() {
desiredDeployment.Spec.Template.Labels = radixlabels.Merge(
desiredDeployment.Spec.Template.GetLabels(),
radixlabels.ForPodWithRadixIdentity(component.GetIdentity()),
)
desiredDeployment.Spec.Template.Spec.ServiceAccountName = utils.GetOAuthProxyServiceAccountName(component.GetName())
}
oauthutil.MergeAuxComponentResourceLabels(desiredDeployment, o.rd.Spec.AppName, component)
return desiredDeployment, nil
}
Expand Down Expand Up @@ -734,7 +733,7 @@ func (o *oauthProxyResourceManager) getEnvVars(component v1.RadixCommonDeployCom
envVars = append(envVars, corev1.EnvVar{Name: "OAUTH2_PROXY_EMAIL_DOMAINS", Value: "*"})
envVars = append(envVars, corev1.EnvVar{Name: "OAUTH2_PROXY_SKIP_CLAIMS_FROM_PROFILE_URL", Value: "true"})
envVars = append(envVars, corev1.EnvVar{Name: "OAUTH2_PROXY_HTTP_ADDRESS", Value: fmt.Sprintf("%s://:%v", "http", defaults.OAuthProxyPortNumber)})
secretName := utils.GetAuxiliaryComponentSecretName(component.GetName(), defaults.OAuthProxyAuxiliaryComponentSuffix)
secretName := utils.GetAuxiliaryComponentSecretName(component.GetName(), v1.OAuthProxyAuxiliaryComponentSuffix)
envVars = append(envVars, o.createEnvVarWithSecretRef(oauth2ProxyCookieSecretEnvironmentVariable, secretName, defaults.OAuthCookieSecretKeyName))

if oauth.GetUseAzureIdentity() {
Expand Down
Loading
Loading