github.com/myhau/pulumi/pkg/v3@v3.70.2-0.20221116134521-f2775972e587/codegen/testing/test/testdata/kubernetes-operator-pp/go/kubernetes-operator.go (about)

     1  package main
     2  
     3  import (
     4  	appsv1 "github.com/pulumi/pulumi-kubernetes/sdk/v3/go/kubernetes/apps/v1"
     5  	corev1 "github.com/pulumi/pulumi-kubernetes/sdk/v3/go/kubernetes/core/v1"
     6  	metav1 "github.com/pulumi/pulumi-kubernetes/sdk/v3/go/kubernetes/meta/v1"
     7  	rbacv1 "github.com/pulumi/pulumi-kubernetes/sdk/v3/go/kubernetes/rbac/v1"
     8  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
     9  )
    10  
    11  func main() {
    12  	pulumi.Run(func(ctx *pulumi.Context) error {
    13  		_, err := appsv1.NewDeployment(ctx, "pulumi_kubernetes_operatorDeployment", &appsv1.DeploymentArgs{
    14  			ApiVersion: pulumi.String("apps/v1"),
    15  			Kind:       pulumi.String("Deployment"),
    16  			Metadata: &metav1.ObjectMetaArgs{
    17  				Name: pulumi.String("pulumi-kubernetes-operator"),
    18  			},
    19  			Spec: &appsv1.DeploymentSpecArgs{
    20  				Replicas: pulumi.Int(1),
    21  				Selector: &metav1.LabelSelectorArgs{
    22  					MatchLabels: pulumi.StringMap{
    23  						"name": pulumi.String("pulumi-kubernetes-operator"),
    24  					},
    25  				},
    26  				Template: &corev1.PodTemplateSpecArgs{
    27  					Metadata: &metav1.ObjectMetaArgs{
    28  						Labels: pulumi.StringMap{
    29  							"name": pulumi.String("pulumi-kubernetes-operator"),
    30  						},
    31  					},
    32  					Spec: &corev1.PodSpecArgs{
    33  						ServiceAccountName: pulumi.String("pulumi-kubernetes-operator"),
    34  						ImagePullSecrets: corev1.LocalObjectReferenceArray{
    35  							&corev1.LocalObjectReferenceArgs{
    36  								Name: pulumi.String("pulumi-kubernetes-operator"),
    37  							},
    38  						},
    39  						Containers: corev1.ContainerArray{
    40  							&corev1.ContainerArgs{
    41  								Name:  pulumi.String("pulumi-kubernetes-operator"),
    42  								Image: pulumi.String("pulumi/pulumi-kubernetes-operator:v0.0.2"),
    43  								Command: pulumi.StringArray{
    44  									pulumi.String("pulumi-kubernetes-operator"),
    45  								},
    46  								Args: pulumi.StringArray{
    47  									pulumi.String("--zap-level=debug"),
    48  								},
    49  								ImagePullPolicy: pulumi.String("Always"),
    50  								Env: corev1.EnvVarArray{
    51  									&corev1.EnvVarArgs{
    52  										Name: pulumi.String("WATCH_NAMESPACE"),
    53  										ValueFrom: &corev1.EnvVarSourceArgs{
    54  											FieldRef: &corev1.ObjectFieldSelectorArgs{
    55  												FieldPath: pulumi.String("metadata.namespace"),
    56  											},
    57  										},
    58  									},
    59  									&corev1.EnvVarArgs{
    60  										Name: pulumi.String("POD_NAME"),
    61  										ValueFrom: &corev1.EnvVarSourceArgs{
    62  											FieldRef: &corev1.ObjectFieldSelectorArgs{
    63  												FieldPath: pulumi.String("metadata.name"),
    64  											},
    65  										},
    66  									},
    67  									&corev1.EnvVarArgs{
    68  										Name:  pulumi.String("OPERATOR_NAME"),
    69  										Value: pulumi.String("pulumi-kubernetes-operator"),
    70  									},
    71  								},
    72  							},
    73  						},
    74  					},
    75  				},
    76  			},
    77  		})
    78  		if err != nil {
    79  			return err
    80  		}
    81  		_, err = rbacv1.NewRole(ctx, "pulumi_kubernetes_operatorRole", &rbacv1.RoleArgs{
    82  			ApiVersion: pulumi.String("rbac.authorization.k8s.io/v1"),
    83  			Kind:       pulumi.String("Role"),
    84  			Metadata: &metav1.ObjectMetaArgs{
    85  				CreationTimestamp: nil,
    86  				Name:              pulumi.String("pulumi-kubernetes-operator"),
    87  			},
    88  			Rules: rbacv1.PolicyRuleArray{
    89  				&rbacv1.PolicyRuleArgs{
    90  					ApiGroups: pulumi.StringArray{
    91  						pulumi.String(""),
    92  					},
    93  					Resources: pulumi.StringArray{
    94  						pulumi.String("pods"),
    95  						pulumi.String("services"),
    96  						pulumi.String("services/finalizers"),
    97  						pulumi.String("endpoints"),
    98  						pulumi.String("persistentvolumeclaims"),
    99  						pulumi.String("events"),
   100  						pulumi.String("configmaps"),
   101  						pulumi.String("secrets"),
   102  					},
   103  					Verbs: pulumi.StringArray{
   104  						pulumi.String("create"),
   105  						pulumi.String("delete"),
   106  						pulumi.String("get"),
   107  						pulumi.String("list"),
   108  						pulumi.String("patch"),
   109  						pulumi.String("update"),
   110  						pulumi.String("watch"),
   111  					},
   112  				},
   113  				&rbacv1.PolicyRuleArgs{
   114  					ApiGroups: pulumi.StringArray{
   115  						pulumi.String("apps"),
   116  					},
   117  					Resources: pulumi.StringArray{
   118  						pulumi.String("deployments"),
   119  						pulumi.String("daemonsets"),
   120  						pulumi.String("replicasets"),
   121  						pulumi.String("statefulsets"),
   122  					},
   123  					Verbs: pulumi.StringArray{
   124  						pulumi.String("create"),
   125  						pulumi.String("delete"),
   126  						pulumi.String("get"),
   127  						pulumi.String("list"),
   128  						pulumi.String("patch"),
   129  						pulumi.String("update"),
   130  						pulumi.String("watch"),
   131  					},
   132  				},
   133  				&rbacv1.PolicyRuleArgs{
   134  					ApiGroups: pulumi.StringArray{
   135  						pulumi.String("monitoring.coreos.com"),
   136  					},
   137  					Resources: pulumi.StringArray{
   138  						pulumi.String("servicemonitors"),
   139  					},
   140  					Verbs: pulumi.StringArray{
   141  						pulumi.String("get"),
   142  						pulumi.String("create"),
   143  					},
   144  				},
   145  				&rbacv1.PolicyRuleArgs{
   146  					ApiGroups: pulumi.StringArray{
   147  						pulumi.String("apps"),
   148  					},
   149  					ResourceNames: pulumi.StringArray{
   150  						pulumi.String("pulumi-kubernetes-operator"),
   151  					},
   152  					Resources: pulumi.StringArray{
   153  						pulumi.String("deployments/finalizers"),
   154  					},
   155  					Verbs: pulumi.StringArray{
   156  						pulumi.String("update"),
   157  					},
   158  				},
   159  				&rbacv1.PolicyRuleArgs{
   160  					ApiGroups: pulumi.StringArray{
   161  						pulumi.String(""),
   162  					},
   163  					Resources: pulumi.StringArray{
   164  						pulumi.String("pods"),
   165  					},
   166  					Verbs: pulumi.StringArray{
   167  						pulumi.String("get"),
   168  					},
   169  				},
   170  				&rbacv1.PolicyRuleArgs{
   171  					ApiGroups: pulumi.StringArray{
   172  						pulumi.String("apps"),
   173  					},
   174  					Resources: pulumi.StringArray{
   175  						pulumi.String("replicasets"),
   176  						pulumi.String("deployments"),
   177  					},
   178  					Verbs: pulumi.StringArray{
   179  						pulumi.String("get"),
   180  					},
   181  				},
   182  				&rbacv1.PolicyRuleArgs{
   183  					ApiGroups: pulumi.StringArray{
   184  						pulumi.String("pulumi.com"),
   185  					},
   186  					Resources: pulumi.StringArray{
   187  						pulumi.String("*"),
   188  					},
   189  					Verbs: pulumi.StringArray{
   190  						pulumi.String("create"),
   191  						pulumi.String("delete"),
   192  						pulumi.String("get"),
   193  						pulumi.String("list"),
   194  						pulumi.String("patch"),
   195  						pulumi.String("update"),
   196  						pulumi.String("watch"),
   197  					},
   198  				},
   199  			},
   200  		})
   201  		if err != nil {
   202  			return err
   203  		}
   204  		_, err = rbacv1.NewRoleBinding(ctx, "pulumi_kubernetes_operatorRoleBinding", &rbacv1.RoleBindingArgs{
   205  			Kind:       pulumi.String("RoleBinding"),
   206  			ApiVersion: pulumi.String("rbac.authorization.k8s.io/v1"),
   207  			Metadata: &metav1.ObjectMetaArgs{
   208  				Name: pulumi.String("pulumi-kubernetes-operator"),
   209  			},
   210  			Subjects: rbacv1.SubjectArray{
   211  				&rbacv1.SubjectArgs{
   212  					Kind: pulumi.String("ServiceAccount"),
   213  					Name: pulumi.String("pulumi-kubernetes-operator"),
   214  				},
   215  			},
   216  			RoleRef: &rbacv1.RoleRefArgs{
   217  				Kind:     pulumi.String("Role"),
   218  				Name:     pulumi.String("pulumi-kubernetes-operator"),
   219  				ApiGroup: pulumi.String("rbac.authorization.k8s.io"),
   220  			},
   221  		})
   222  		if err != nil {
   223  			return err
   224  		}
   225  		_, err = corev1.NewServiceAccount(ctx, "pulumi_kubernetes_operatorServiceAccount", &corev1.ServiceAccountArgs{
   226  			ApiVersion: pulumi.String("v1"),
   227  			Kind:       pulumi.String("ServiceAccount"),
   228  			Metadata: &metav1.ObjectMetaArgs{
   229  				Name: pulumi.String("pulumi-kubernetes-operator"),
   230  			},
   231  		})
   232  		if err != nil {
   233  			return err
   234  		}
   235  		return nil
   236  	})
   237  }