using System.Collections.Generic; using System.Linq; using Pulumi; using Kubernetes = Pulumi.Kubernetes; return await Deployment.RunAsync(() => { var pulumi_kubernetes_operatorDeployment = new Kubernetes.Apps.V1.Deployment("pulumi_kubernetes_operatorDeployment", new() { ApiVersion = "apps/v1", Kind = "Deployment", Metadata = new Kubernetes.Types.Inputs.Meta.V1.ObjectMetaArgs { Name = "pulumi-kubernetes-operator", }, Spec = new Kubernetes.Types.Inputs.Apps.V1.DeploymentSpecArgs { Replicas = 1, Selector = new Kubernetes.Types.Inputs.Meta.V1.LabelSelectorArgs { MatchLabels = { { "name", "pulumi-kubernetes-operator" }, }, }, Template = new Kubernetes.Types.Inputs.Core.V1.PodTemplateSpecArgs { Metadata = new Kubernetes.Types.Inputs.Meta.V1.ObjectMetaArgs { Labels = { { "name", "pulumi-kubernetes-operator" }, }, }, Spec = new Kubernetes.Types.Inputs.Core.V1.PodSpecArgs { ServiceAccountName = "pulumi-kubernetes-operator", ImagePullSecrets = new[] { new Kubernetes.Types.Inputs.Core.V1.LocalObjectReferenceArgs { Name = "pulumi-kubernetes-operator", }, }, Containers = new[] { new Kubernetes.Types.Inputs.Core.V1.ContainerArgs { Name = "pulumi-kubernetes-operator", Image = "pulumi/pulumi-kubernetes-operator:v0.0.2", Command = new[] { "pulumi-kubernetes-operator", }, Args = new[] { "--zap-level=debug", }, ImagePullPolicy = "Always", Env = new[] { new Kubernetes.Types.Inputs.Core.V1.EnvVarArgs { Name = "WATCH_NAMESPACE", ValueFrom = new Kubernetes.Types.Inputs.Core.V1.EnvVarSourceArgs { FieldRef = new Kubernetes.Types.Inputs.Core.V1.ObjectFieldSelectorArgs { FieldPath = "metadata.namespace", }, }, }, new Kubernetes.Types.Inputs.Core.V1.EnvVarArgs { Name = "POD_NAME", ValueFrom = new Kubernetes.Types.Inputs.Core.V1.EnvVarSourceArgs { FieldRef = new Kubernetes.Types.Inputs.Core.V1.ObjectFieldSelectorArgs { FieldPath = "metadata.name", }, }, }, new Kubernetes.Types.Inputs.Core.V1.EnvVarArgs { Name = "OPERATOR_NAME", Value = "pulumi-kubernetes-operator", }, }, }, }, }, }, }, }); var pulumi_kubernetes_operatorRole = new Kubernetes.Rbac.V1.Role("pulumi_kubernetes_operatorRole", new() { ApiVersion = "rbac.authorization.k8s.io/v1", Kind = "Role", Metadata = new Kubernetes.Types.Inputs.Meta.V1.ObjectMetaArgs { CreationTimestamp = null, Name = "pulumi-kubernetes-operator", }, Rules = new[] { new Kubernetes.Types.Inputs.Rbac.V1.PolicyRuleArgs { ApiGroups = new[] { "", }, Resources = new[] { "pods", "services", "services/finalizers", "endpoints", "persistentvolumeclaims", "events", "configmaps", "secrets", }, Verbs = new[] { "create", "delete", "get", "list", "patch", "update", "watch", }, }, new Kubernetes.Types.Inputs.Rbac.V1.PolicyRuleArgs { ApiGroups = new[] { "apps", }, Resources = new[] { "deployments", "daemonsets", "replicasets", "statefulsets", }, Verbs = new[] { "create", "delete", "get", "list", "patch", "update", "watch", }, }, new Kubernetes.Types.Inputs.Rbac.V1.PolicyRuleArgs { ApiGroups = new[] { "monitoring.coreos.com", }, Resources = new[] { "servicemonitors", }, Verbs = new[] { "get", "create", }, }, new Kubernetes.Types.Inputs.Rbac.V1.PolicyRuleArgs { ApiGroups = new[] { "apps", }, ResourceNames = new[] { "pulumi-kubernetes-operator", }, Resources = new[] { "deployments/finalizers", }, Verbs = new[] { "update", }, }, new Kubernetes.Types.Inputs.Rbac.V1.PolicyRuleArgs { ApiGroups = new[] { "", }, Resources = new[] { "pods", }, Verbs = new[] { "get", }, }, new Kubernetes.Types.Inputs.Rbac.V1.PolicyRuleArgs { ApiGroups = new[] { "apps", }, Resources = new[] { "replicasets", "deployments", }, Verbs = new[] { "get", }, }, new Kubernetes.Types.Inputs.Rbac.V1.PolicyRuleArgs { ApiGroups = new[] { "pulumi.com", }, Resources = new[] { "*", }, Verbs = new[] { "create", "delete", "get", "list", "patch", "update", "watch", }, }, }, }); var pulumi_kubernetes_operatorRoleBinding = new Kubernetes.Rbac.V1.RoleBinding("pulumi_kubernetes_operatorRoleBinding", new() { Kind = "RoleBinding", ApiVersion = "rbac.authorization.k8s.io/v1", Metadata = new Kubernetes.Types.Inputs.Meta.V1.ObjectMetaArgs { Name = "pulumi-kubernetes-operator", }, Subjects = new[] { new Kubernetes.Types.Inputs.Rbac.V1.SubjectArgs { Kind = "ServiceAccount", Name = "pulumi-kubernetes-operator", }, }, RoleRef = new Kubernetes.Types.Inputs.Rbac.V1.RoleRefArgs { Kind = "Role", Name = "pulumi-kubernetes-operator", ApiGroup = "rbac.authorization.k8s.io", }, }); var pulumi_kubernetes_operatorServiceAccount = new Kubernetes.Core.V1.ServiceAccount("pulumi_kubernetes_operatorServiceAccount", new() { ApiVersion = "v1", Kind = "ServiceAccount", Metadata = new Kubernetes.Types.Inputs.Meta.V1.ObjectMetaArgs { Name = "pulumi-kubernetes-operator", }, }); });