pulumi / pulumi-kubernetes

A Pulumi resource provider for Kubernetes to manage API resources and workloads in running clusters
https://www.pulumi.com/docs/reference/clouds/kubernetes/
Apache License 2.0
404 stars 115 forks source link

ingressclassparams.elbv2.k8s.aws "alb" already exists #2035

Open yasin-kismet opened 2 years ago

yasin-kismet commented 2 years ago

What happened?

I am trying to deploy 2 different applications on AWS eks using pulumi. If I am applying ingress for the first time, there is no problem, but when I want to make an update, I get the error ingressclassparams.elbv2.k8s.aws "alb" already exists.

Steps to reproduce

Since my application is a bit complex, I tried to deploy a simple application to a new aws account, but I got the same error.

cluster.ts

import * as eks from '@pulumi/eks';
import * as k8s from '@pulumi/kubernetes';
import * as awsx from '@pulumi/awsx';
import { Output } from '@pulumi/pulumi';
import * as config from '../config';

import {
  vpc,
  sg,
  cert,
  awsAlbServiceAccountName,
  kubeSystemNameSpace,
} from './input';
import { managerService } from './manager';
import { hasuraService } from './hasura';

const namespaceName = 'default';
const cluster = new eks.Cluster(config.CLUSTER_NAME, {
  name: config.CLUSTER_NAME,
  vpcId: vpc.id,
  publicSubnetIds: vpc.publicSubnetIds,
  privateSubnetIds: vpc.privateSubnetIds,
  instanceType: config.CLUSTER_NODE_INSTANCE_TYPE,
  createOidcProvider: true,
  desiredCapacity: 2,
  minSize: 1,
  maxSize: 3,
});

sg.createIngressRule('postgres-access', {
  location: {
    sourceSecurityGroupId: cluster.nodeSecurityGroup.id,
  },
  ports: new awsx.ec2.TcpPorts(5432),
  description: 'Postgres access for nodes',
});

const kubeconfig: Output<any> = cluster.kubeconfig;

const urn: Output<string> = cluster.urn;

const helmChartTransformation = (obj: any) => {
  if (obj['kind'] === 'CustomResourceDefinition') delete obj['status'];
};
const albIngressController = new k8s.helm.v3.Chart(
  'alb',
  {
    chart: 'aws-load-balancer-controller',
    version: '1.4.2',
    fetchOpts: {
      repo: 'https://aws.github.io/eks-charts',
    },
    namespace: kubeSystemNameSpace,
    values: {
      clusterName: cluster.eksCluster.name,
      region: 'us-east-1',
      vpcId: vpc.id,
      replicaCount: 1,
      keepTLSSecret: true,
      serviceAccount: {
        name: awsAlbServiceAccountName,
        create: false,
      },
    },
    transformations: [helmChartTransformation],
  },
  { provider: cluster.provider }
);

const ingress = new k8s.networking.v1.Ingress(
  `${config.PROJECT_NAME}-ingress`,
  {
    apiVersion: 'networking.k8s.io/v1',
    metadata: {
      labels: {
        app: 'ingress',
      },
      namespace: namespaceName,
      annotations: {
        'alb.ingress.kubernetes.io/scheme': 'internet-facing',
        'alb.ingress.kubernetes.io/certificate-arn': cert.arn,
        'alb.ingress.kubernetes.io/target-type': 'ip',
      },
    },
    spec: {
      ingressClassName: 'alb',
      rules: [
        {
          host: config.MANAGER_APP_HOST_NAME,
          http: {
            paths: [
              {
                path: '/',
                pathType: 'Prefix',
                backend: {
                  service: {
                    name: managerService.metadata.name,
                    port: { number: 80 },
                  },
                },
              },
            ],
          },
        },
        {
          host: config.HASURA_APP_HOST_NAME,
          http: {
            paths: [
              {
                path: '/',
                pathType: 'Prefix',
                backend: {
                  service: {
                    name: hasuraService.metadata.name,
                    port: { number: 80 },
                  },
                },
              },
            ],
          },
        },
      ],
    },
  },
  { provider: cluster.provider, dependsOn: albIngressController.ready }
);

const ingressHostname: Output<string> =
  ingress.status.loadBalancer.ingress[0].hostname;
const ingressAddress: Output<string> =
  ingress.status.loadBalancer.ingress[0].ip;

Expected Behavior

I would expect the application to deploy smoothly.

Actual Behavior

The pulumi throws the alb already exists error after the first deployment.

Versions used

CLI          
Version      3.34.1
Go Version   go1.18.3
Go Compiler  gc

Plugins
NAME        VERSION
aws         5.8.0
aws         5.8.0
docker      3.2.0
eks         0.40.0
kubernetes  3.19.3
kubernetes  3.18.2
nodejs      unknown
random      4.8.0
tls         4.6.0

Host     
OS       darwin
Version  12.3.1
Arch     arm64

This project is written in nodejs: executable='/Users/yasintz/.nvm/versions/node/v12.22.0/bin/node' version='v12.22.0'

Current Stack: staging

TYPE                                                                       URN
pulumi:pulumi:Stack                                                        urn:pulumi:staging::kismet::pulumi:pulumi:Stack::kismet-staging
pulumi:providers:aws                                                       urn:pulumi:staging::kismet::pulumi:providers:aws::default_5_8_0
awsx:ecr:Repository                                                        urn:pulumi:staging::kismet::awsx:ecr:Repository::kismet-manager-app
awsx:ecr:Repository                                                        urn:pulumi:staging::kismet::awsx:ecr:Repository::kismet-hasura
awsx:x:ec2:SecurityGroup                                                   urn:pulumi:staging::kismet::awsx:x:ec2:SecurityGroup::kismet-sg
awsx:x:ec2:Vpc                                                             urn:pulumi:staging::kismet::awsx:x:ec2:Vpc::kismet-vpc
kubernetes:helm.sh/v3:Chart                                                urn:pulumi:staging::kismet::kubernetes:helm.sh/v3:Chart::alb
eks:index:Cluster                                                          urn:pulumi:staging::kismet::eks:index:Cluster::kismet-k8-cluster
aws:route53/zone:Zone                                                      urn:pulumi:staging::kismet::aws:route53/zone:Zone::kismet.ai
pulumi:providers:tls                                                       urn:pulumi:staging::kismet::pulumi:providers:tls::default_4_6_0
awsx:x:ec2:EgressSecurityGroupRule                                         urn:pulumi:staging::kismet::awsx:x:ec2:SecurityGroup$awsx:x:ec2:EgressSecurityGroupRule::outbound
awsx:x:ec2:IngressSecurityGroupRule                                        urn:pulumi:staging::kismet::awsx:x:ec2:SecurityGroup$awsx:x:ec2:IngressSecurityGroupRule::postgres-access
eks:index:ServiceRole                                                      urn:pulumi:staging::kismet::eks:index:Cluster$eks:index:ServiceRole::kismet-k8-cluster-eksRole
eks:index:ServiceRole                                                      urn:pulumi:staging::kismet::eks:index:Cluster$eks:index:ServiceRole::kismet-k8-cluster-instanceRole
awsx:x:ec2:InternetGateway                                                 urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:InternetGateway::kismet-vpc
awsx:x:ec2:Subnet                                                          urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet::kismet-vpc-private-0
awsx:x:ec2:Subnet                                                          urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet::kismet-vpc-public-1
awsx:x:ec2:NatGateway                                                      urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:NatGateway::kismet-vpc-1
awsx:x:ec2:Subnet                                                          urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet::kismet-vpc-private-1
awsx:x:ec2:NatGateway                                                      urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:NatGateway::kismet-vpc-0
awsx:x:ec2:Subnet                                                          urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet::kismet-vpc-public-0
pulumi:providers:random                                                    urn:pulumi:staging::kismet::pulumi:providers:random::default_4_8_0
tls:index/privateKey:PrivateKey                                            urn:pulumi:staging::kismet::tls:index/privateKey:PrivateKey::auth-private-key
random:index/randomPassword:RandomPassword                                 urn:pulumi:staging::kismet::random:index/randomPassword:RandomPassword::kismet-password
aws:ecr/repository:Repository                                              urn:pulumi:staging::kismet::awsx:ecr:Repository$aws:ecr/repository:Repository::kismet-manager-app
aws:ecr/repository:Repository                                              urn:pulumi:staging::kismet::awsx:ecr:Repository$aws:ecr/repository:Repository::kismet-hasura
pulumi:providers:eks                                                       urn:pulumi:staging::kismet::pulumi:providers:eks::default
eks:index:RandomSuffix                                                     urn:pulumi:staging::kismet::eks:index:Cluster$eks:index:RandomSuffix::kismet-k8-cluster-cfnStackName
aws:route53/record:Record                                                  urn:pulumi:staging::kismet::aws:route53/record:Record::www-kismet-ai-record
aws:route53/record:Record                                                  urn:pulumi:staging::kismet::aws:route53/record:Record::kismet-ai-record
aws:route53/record:Record                                                  urn:pulumi:staging::kismet::aws:route53/record:Record::staging-record
aws:ec2/vpc:Vpc                                                            urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$aws:ec2/vpc:Vpc::kismet-vpc
aws:iam/role:Role                                                          urn:pulumi:staging::kismet::eks:index:Cluster$eks:index:ServiceRole$aws:iam/role:Role::kismet-k8-cluster-eksRole-role
aws:iam/role:Role                                                          urn:pulumi:staging::kismet::eks:index:Cluster$eks:index:ServiceRole$aws:iam/role:Role::kismet-k8-cluster-instanceRole-role
aws:ecr/lifecyclePolicy:LifecyclePolicy                                    urn:pulumi:staging::kismet::awsx:ecr:Repository$aws:ecr/lifecyclePolicy:LifecyclePolicy::kismet-manager-app
aws:ecr/lifecyclePolicy:LifecyclePolicy                                    urn:pulumi:staging::kismet::awsx:ecr:Repository$aws:ecr/lifecyclePolicy:LifecyclePolicy::kismet-hasura
aws:ec2/eip:Eip                                                            urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:NatGateway$aws:ec2/eip:Eip::kismet-vpc-0
aws:acm/certificate:Certificate                                            urn:pulumi:staging::kismet::aws:acm/certificate:Certificate::cert
aws:ec2/eip:Eip                                                            urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:NatGateway$aws:ec2/eip:Eip::kismet-vpc-1
aws:ec2/routeTable:RouteTable                                              urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet$aws:ec2/routeTable:RouteTable::kismet-vpc-private-1
aws:ec2/securityGroup:SecurityGroup                                        urn:pulumi:staging::kismet::eks:index:Cluster$aws:ec2/securityGroup:SecurityGroup::kismet-k8-cluster-eksClusterSecurityGroup
aws:ec2/routeTable:RouteTable                                              urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet$aws:ec2/routeTable:RouteTable::kismet-vpc-public-1
aws:ec2/subnet:Subnet                                                      urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet$aws:ec2/subnet:Subnet::kismet-vpc-public-0
aws:ec2/internetGateway:InternetGateway                                    urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:InternetGateway$aws:ec2/internetGateway:InternetGateway::kismet-vpc
aws:ec2/securityGroup:SecurityGroup                                        urn:pulumi:staging::kismet::awsx:x:ec2:SecurityGroup$aws:ec2/securityGroup:SecurityGroup::kismet-sg
aws:ec2/subnet:Subnet                                                      urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet$aws:ec2/subnet:Subnet::kismet-vpc-private-0
aws:ec2/routeTable:RouteTable                                              urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet$aws:ec2/routeTable:RouteTable::kismet-vpc-public-0
aws:ec2/subnet:Subnet                                                      urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet$aws:ec2/subnet:Subnet::kismet-vpc-private-1
aws:ec2/subnet:Subnet                                                      urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet$aws:ec2/subnet:Subnet::kismet-vpc-public-1
aws:ec2/routeTable:RouteTable                                              urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet$aws:ec2/routeTable:RouteTable::kismet-vpc-private-0
aws:ec2/securityGroupRule:SecurityGroupRule                                urn:pulumi:staging::kismet::eks:index:Cluster$aws:ec2/securityGroupRule:SecurityGroupRule::kismet-k8-cluster-eksClusterInternetEgressRule
aws:iam/rolePolicyAttachment:RolePolicyAttachment                          urn:pulumi:staging::kismet::eks:index:Cluster$eks:index:ServiceRole$aws:iam/rolePolicyAttachment:RolePolicyAttachment::kismet-k8-cluster-eksRole-4b490823
aws:iam/rolePolicyAttachment:RolePolicyAttachment                          urn:pulumi:staging::kismet::eks:index:Cluster$eks:index:ServiceRole$aws:iam/rolePolicyAttachment:RolePolicyAttachment::kismet-k8-cluster-instanceRole-03516f97
aws:iam/rolePolicyAttachment:RolePolicyAttachment                          urn:pulumi:staging::kismet::eks:index:Cluster$eks:index:ServiceRole$aws:iam/rolePolicyAttachment:RolePolicyAttachment::kismet-k8-cluster-instanceRole-e1b295bd
aws:iam/rolePolicyAttachment:RolePolicyAttachment                          urn:pulumi:staging::kismet::eks:index:Cluster$eks:index:ServiceRole$aws:iam/rolePolicyAttachment:RolePolicyAttachment::kismet-k8-cluster-instanceRole-3eb088f2
aws:ec2/route:Route                                                        urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet$aws:ec2/route:Route::kismet-vpc-public-1-ig
aws:ec2/securityGroupRule:SecurityGroupRule                                urn:pulumi:staging::kismet::awsx:x:ec2:SecurityGroup$awsx:x:ec2:EgressSecurityGroupRule$aws:ec2/securityGroupRule:SecurityGroupRule::outbound
aws:ec2/route:Route                                                        urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet$aws:ec2/route:Route::kismet-vpc-public-0-ig
aws:ec2/routeTableAssociation:RouteTableAssociation                        urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet$aws:ec2/routeTableAssociation:RouteTableAssociation::kismet-vpc-public-0
aws:ec2/routeTableAssociation:RouteTableAssociation                        urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet$aws:ec2/routeTableAssociation:RouteTableAssociation::kismet-vpc-private-1
aws:ec2/routeTableAssociation:RouteTableAssociation                        urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet$aws:ec2/routeTableAssociation:RouteTableAssociation::kismet-vpc-public-1
aws:ec2/routeTableAssociation:RouteTableAssociation                        urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet$aws:ec2/routeTableAssociation:RouteTableAssociation::kismet-vpc-private-0
aws:route53/record:Record                                                  urn:pulumi:staging::kismet::aws:route53/record:Record::www.kismet.ai-validation-record
aws:route53/record:Record                                                  urn:pulumi:staging::kismet::aws:route53/record:Record::kismet.ai-validation-record
aws:route53/record:Record                                                  urn:pulumi:staging::kismet::aws:route53/record:Record::gql.kismet.ai-validation-record
aws:route53/record:Record                                                  urn:pulumi:staging::kismet::aws:route53/record:Record::api.kismet.ai-validation-record
aws:route53/record:Record                                                  urn:pulumi:staging::kismet::aws:route53/record:Record::staging.kismet.ai-validation-record
aws:iam/instanceProfile:InstanceProfile                                    urn:pulumi:staging::kismet::eks:index:Cluster$aws:iam/instanceProfile:InstanceProfile::kismet-k8-cluster-instanceProfile
aws:ec2/natGateway:NatGateway                                              urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:NatGateway$aws:ec2/natGateway:NatGateway::kismet-vpc-0
aws:ec2/natGateway:NatGateway                                              urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:NatGateway$aws:ec2/natGateway:NatGateway::kismet-vpc-1
aws:eks/cluster:Cluster                                                    urn:pulumi:staging::kismet::eks:index:Cluster$aws:eks/cluster:Cluster::kismet-k8-cluster-eksCluster
aws:rds/subnetGroup:SubnetGroup                                            urn:pulumi:staging::kismet::aws:rds/subnetGroup:SubnetGroup::kismet-subnets
aws:ec2/tag:Tag                                                            urn:pulumi:staging::kismet::aws:ec2/tag:Tag::kismet-vpc-public-0-cluster-tag
aws:ec2/tag:Tag                                                            urn:pulumi:staging::kismet::aws:ec2/tag:Tag::kismet-vpc-public-1-elb-tag
aws:ec2/tag:Tag                                                            urn:pulumi:staging::kismet::aws:ec2/tag:Tag::kismet-vpc-private-1-elb-tag
aws:ec2/tag:Tag                                                            urn:pulumi:staging::kismet::aws:ec2/tag:Tag::kismet-vpc-private-0-elb-tag
aws:ec2/tag:Tag                                                            urn:pulumi:staging::kismet::aws:ec2/tag:Tag::kismet-vpc-private-1-cluster-tag
aws:ec2/tag:Tag                                                            urn:pulumi:staging::kismet::aws:ec2/tag:Tag::kismet-vpc-public-1-cluster-tag
aws:ec2/tag:Tag                                                            urn:pulumi:staging::kismet::aws:ec2/tag:Tag::kismet-vpc-public-0-elb-tag
aws:ec2/tag:Tag                                                            urn:pulumi:staging::kismet::aws:ec2/tag:Tag::kismet-vpc-private-0-cluster-tag
aws:acm/certificateValidation:CertificateValidation                        urn:pulumi:staging::kismet::aws:acm/certificateValidation:CertificateValidation::kismet-certificate-validation
aws:ec2/route:Route                                                        urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet$aws:ec2/route:Route::kismet-vpc-private-0-nat-0
aws:ec2/route:Route                                                        urn:pulumi:staging::kismet::awsx:x:ec2:Vpc$awsx:x:ec2:Subnet$aws:ec2/route:Route::kismet-vpc-private-1-nat-1
aws:ec2/securityGroup:SecurityGroup                                        urn:pulumi:staging::kismet::eks:index:Cluster$aws:ec2/securityGroup:SecurityGroup::kismet-k8-cluster-nodeSecurityGroup
aws:iam/openIdConnectProvider:OpenIdConnectProvider                        urn:pulumi:staging::kismet::eks:index:Cluster$aws:iam/openIdConnectProvider:OpenIdConnectProvider::kismet-k8-cluster-oidcProvider
aws:ec2/securityGroupRule:SecurityGroupRule                                urn:pulumi:staging::kismet::eks:index:Cluster$aws:ec2/securityGroupRule:SecurityGroupRule::kismet-k8-cluster-eksNodeClusterIngressRule
aws:ec2/securityGroupRule:SecurityGroupRule                                urn:pulumi:staging::kismet::eks:index:Cluster$aws:ec2/securityGroupRule:SecurityGroupRule::kismet-k8-cluster-eksExtApiServerClusterIngressRule
aws:ec2/securityGroupRule:SecurityGroupRule                                urn:pulumi:staging::kismet::eks:index:Cluster$aws:ec2/securityGroupRule:SecurityGroupRule::kismet-k8-cluster-eksNodeInternetEgressRule
aws:ec2/securityGroupRule:SecurityGroupRule                                urn:pulumi:staging::kismet::eks:index:Cluster$aws:ec2/securityGroupRule:SecurityGroupRule::kismet-k8-cluster-eksNodeIngressRule
aws:ec2/securityGroupRule:SecurityGroupRule                                urn:pulumi:staging::kismet::eks:index:Cluster$aws:ec2/securityGroupRule:SecurityGroupRule::kismet-k8-cluster-eksClusterIngressRule
aws:ec2/securityGroupRule:SecurityGroupRule                                urn:pulumi:staging::kismet::awsx:x:ec2:SecurityGroup$awsx:x:ec2:IngressSecurityGroupRule$aws:ec2/securityGroupRule:SecurityGroupRule::postgres-access
aws:rds/cluster:Cluster                                                    urn:pulumi:staging::kismet::aws:rds/cluster:Cluster::kismet-postgres
aws:iam/role:Role                                                          urn:pulumi:staging::kismet::aws:iam/role:Role::aws-loadbalancer-controller-role
aws:iam/policy:Policy                                                      urn:pulumi:staging::kismet::aws:iam/role:Role$aws:iam/policy:Policy::ingressController-iam-policy
aws:rds/clusterInstance:ClusterInstance                                    urn:pulumi:staging::kismet::aws:rds/clusterInstance:ClusterInstance::postgres-cluster-instance-1
aws:iam/policyAttachment:PolicyAttachment                                  urn:pulumi:staging::kismet::aws:iam/role:Role$aws:iam/policyAttachment:PolicyAttachment::aws-loadbalancer-controller-attachment
pulumi:providers:kubernetes                                                urn:pulumi:staging::kismet::eks:index:Cluster$pulumi:providers:kubernetes::kismet-k8-cluster-eks-k8s
eks:index:VpcCni                                                           urn:pulumi:staging::kismet::eks:index:Cluster$eks:index:VpcCni::kismet-k8-cluster-vpc-cni
kubernetes:core/v1:ConfigMap                                               urn:pulumi:staging::kismet::eks:index:Cluster$kubernetes:core/v1:ConfigMap::kismet-k8-cluster-nodeAccess
aws:ec2/launchConfiguration:LaunchConfiguration                            urn:pulumi:staging::kismet::eks:index:Cluster$aws:ec2/launchConfiguration:LaunchConfiguration::kismet-k8-cluster-nodeLaunchConfiguration
aws:cloudformation/stack:Stack                                             urn:pulumi:staging::kismet::eks:index:Cluster$aws:cloudformation/stack:Stack::kismet-k8-cluster-nodes
pulumi:providers:kubernetes                                                urn:pulumi:staging::kismet::eks:index:Cluster$pulumi:providers:kubernetes::kismet-k8-cluster-provider
kubernetes:core/v1:Service                                                 urn:pulumi:staging::kismet::kubernetes:core/v1:Service::hasura
kubernetes:core/v1:Secret                                                  urn:pulumi:staging::kismet::kubernetes:core/v1:Secret::hasura-secrets
kubernetes:core/v1:ServiceAccount                                          urn:pulumi:staging::kismet::kubernetes:core/v1:ServiceAccount::aws-lb-controller-sa
kubernetes:core/v1:Service                                                 urn:pulumi:staging::kismet::kubernetes:core/v1:Service::manager-app
kubernetes:rbac.authorization.k8s.io/v1:ClusterRoleBinding                 urn:pulumi:staging::kismet::kubernetes:helm.sh/v3:Chart$kubernetes:rbac.authorization.k8s.io/v1:ClusterRoleBinding::alb-aws-load-balancer-controller-rolebinding
kubernetes:rbac.authorization.k8s.io/v1:RoleBinding                        urn:pulumi:staging::kismet::kubernetes:helm.sh/v3:Chart$kubernetes:rbac.authorization.k8s.io/v1:RoleBinding::kube-system/alb-aws-load-balancer-controller-leader-election-rolebinding
kubernetes:networking.k8s.io/v1:IngressClass                               urn:pulumi:staging::kismet::kubernetes:helm.sh/v3:Chart$kubernetes:networking.k8s.io/v1:IngressClass::alb
kubernetes:core/v1:Service                                                 urn:pulumi:staging::kismet::kubernetes:helm.sh/v3:Chart$kubernetes:core/v1:Service::kube-system/aws-load-balancer-webhook-service
kubernetes:apps/v1:Deployment                                              urn:pulumi:staging::kismet::kubernetes:helm.sh/v3:Chart$kubernetes:apps/v1:Deployment::kube-system/alb-aws-load-balancer-controller
kubernetes:rbac.authorization.k8s.io/v1:ClusterRole                        urn:pulumi:staging::kismet::kubernetes:helm.sh/v3:Chart$kubernetes:rbac.authorization.k8s.io/v1:ClusterRole::alb-aws-load-balancer-controller-role
kubernetes:rbac.authorization.k8s.io/v1:Role                               urn:pulumi:staging::kismet::kubernetes:helm.sh/v3:Chart$kubernetes:rbac.authorization.k8s.io/v1:Role::kube-system/alb-aws-load-balancer-controller-leader-election-role
kubernetes:apiextensions.k8s.io/v1:CustomResourceDefinition                urn:pulumi:staging::kismet::kubernetes:helm.sh/v3:Chart$kubernetes:apiextensions.k8s.io/v1:CustomResourceDefinition::ingressclassparams.elbv2.k8s.aws
kubernetes:apiextensions.k8s.io/v1:CustomResourceDefinition                urn:pulumi:staging::kismet::kubernetes:helm.sh/v3:Chart$kubernetes:apiextensions.k8s.io/v1:CustomResourceDefinition::targetgroupbindings.elbv2.k8s.aws
kubernetes:admissionregistration.k8s.io/v1:ValidatingWebhookConfiguration  urn:pulumi:staging::kismet::kubernetes:helm.sh/v3:Chart$kubernetes:admissionregistration.k8s.io/v1:ValidatingWebhookConfiguration::aws-load-balancer-webhook
kubernetes:admissionregistration.k8s.io/v1:MutatingWebhookConfiguration    urn:pulumi:staging::kismet::kubernetes:helm.sh/v3:Chart$kubernetes:admissionregistration.k8s.io/v1:MutatingWebhookConfiguration::aws-load-balancer-webhook
kubernetes:core/v1:Secret                                                  urn:pulumi:staging::kismet::kubernetes:helm.sh/v3:Chart$kubernetes:core/v1:Secret::kube-system/aws-load-balancer-tls
kubernetes:elbv2.k8s.aws/v1beta1:IngressClassParams                        urn:pulumi:staging::kismet::kubernetes:helm.sh/v3:Chart$kubernetes:elbv2.k8s.aws/v1beta1:IngressClassParams::kube-system/alb
kubernetes:networking.k8s.io/v1:IngressClass                               urn:pulumi:staging::kismet::kubernetes:networking.k8s.io/v1:IngressClass::kismet-ingress-class
kubernetes:apps/v1:Deployment                                              urn:pulumi:staging::kismet::kubernetes:apps/v1:Deployment::hasura
kubernetes:apps/v1:Deployment                                              urn:pulumi:staging::kismet::kubernetes:apps/v1:Deployment::manager-app
kubernetes:networking.k8s.io/v1:Ingress                                    urn:pulumi:staging::kismet::kubernetes:networking.k8s.io/v1:Ingress::kismet-ingress
aws:route53/record:Record                                                  urn:pulumi:staging::kismet::aws:route53/record:Record::gql-record
aws:route53/record:Record                                                  urn:pulumi:staging::kismet::aws:route53/record:Record::api-record

Found no pending operations associated with staging

Backend        
Name           pulumi.com
URL            https://app.pulumi.com/yasinntza
User           yasinntza
Organizations  yasinntza

Dependencies:
NAME                VERSION
@pulumi/aws         5.8.0
@pulumi/awsx        0.40.0
@pulumi/docker      3.2.0
@pulumi/eks         0.40.0
@pulumi/kubernetes  3.19.3
@pulumi/pulumi      3.34.1
@pulumi/random      4.8.0
@pulumi/tls         4.6.0
@types/node         17.0.23
typescript          3.9.10

Pulumi locates its logs in /var/folders/yl/n1dpjgm50csfyc_p79q_jz040000gn/T/ by default

Additional context

At first I thought the problem would be with the controller itself and I created an issue, but I guess pulumi is trying to create a new ingress class with the same name while updating something, without deleting the old one.

https://github.com/kubernetes-sigs/aws-load-balancer-controller/issues/2698

Contributing

Vote on this issue by adding a 👍 reaction. To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).

jaxxstorm commented 2 years ago

Could you please share the diff you get before this error surfaces?

jamesstow commented 2 years ago

Im also seeing this behaviour

LukeOman commented 2 years ago

@jaxxstorm When I get this error this is the diff I get if that helps Pulumi diff error

yasin-kismet commented 2 years ago

@jaxxstorm

image

yasin-kismet commented 2 years ago

For relation, I found this thread. https://pulumi-community.slack.com/archives/CRFURDVQB/p1646013705462779?thread_ts=1646013632.251649&cid=CRFURDVQB

LukeOman commented 2 years ago

I should also mention that this problem doesn't exist with the k8s.helm.v3.Release() and is how I've worked around it currently, but still exists with k8s.helm.v3.Chart()

As per this issue: https://github.com/pulumi/pulumi-kubernetes/issues/1937

yasin-kismet commented 2 years ago

I should also mention that this problem doesn't exist with the k8s.helm.v3.Release() and is how I've worked around it currently, but still exists with k8s.helm.v3.Chart()

As per this issue: #1937

@LukeOman That's helped. Thanks.

infracapi commented 2 years ago

@LukeOman Thanks, solution work for me

badaljain commented 1 year ago

How do we apply transformations in help release?

mark-bixler commented 1 year ago

Any updates on this issue? We are having the same problem but since we're in production with k8s.helm.v3.Chart(), we cannot easily switch to k8s.helm.v3.Release(). 😞

lblackstone commented 1 year ago

It's possible that this will also work with helm.v3.Chart when Server-side Apply is enabled (will be default in v4 of the provider). You can test it now by setting enableServerSideApply on the provider config.

puppetninja commented 11 months ago

Hi, we tried with v4, seems it is still the same case

bhurlow commented 1 month ago

Same issue here