{
  "name": "kubernetes-coredns",
  "displayName": "Kubernetes CoreDNS",
  "version": "0.1.0",
  "description": "Strongly-typed CoreDNS installation",
  "keywords": [
    "pulumi",
    "kubernetes",
    "coredns",
    "kind/component",
    "category/infrastructure"
  ],
  "homepage": "https://pulumi.io",
  "license": "Apache-2.0",
  "repository": "https://github.com/pulumi/pulumi-kubernetes-coredns",
  "publisher": "Pulumi",
  "meta": {
    "moduleFormat": "(.*)"
  },
  "language": {
    "csharp": {
      "namespaces": {
        "kubernetes-coredns": "KubernetesCoreDNS"
      },
      "packageReferences": {
        "Pulumi": "3.*",
        "Pulumi.Kubernetes": "4.*"
      },
      "respectSchemaVersion": true
    },
    "go": {
      "generateResourceContainerTypes": true,
      "importBasePath": "github.com/pulumi/pulumi-kubernetes-coredns/sdk/go/kubernetes-coredns",
      "generateExtraInputTypes": true,
      "respectSchemaVersion": true
    },
    "java": {
      "basePackage": "",
      "buildFiles": "gradle",
      "dependencies": {
        "com.google.code.findbugs:jsr305": "3.0.2",
        "com.google.code.gson:gson": "2.8.9",
        "com.pulumi:pulumi": "0.20.0",
        "com.pulumi:kubernetes": "4.19.0"
      },
      "gradleNexusPublishPluginVersion": "1.1.0",
      "gradleTest": ""
    },
    "nodejs": {
      "dependencies": {
        "@pulumi/pulumi": "^3.0.0",
        "@pulumi/kubernetes": "^4.0.0"
      },
      "devDependencies": {
        "typescript": "^4.3.5"
      },
      "respectSchemaVersion": true
    },
    "python": {
      "requires": {
        "pulumi": ">=3.0.0,<4.0.0",
        "pulumi-kubernetes": ">=4.19.0,<5.0.0"
      },
      "pyproject": {
        "enabled": true
      },
      "respectSchemaVersion": true
    }
  },
  "config": {},
  "types": {
    "kubernetes-coredns:index:CoreDNSAutoscaler": {
      "properties": {
        "coresPerReplica": {
          "type": "integer",
          "description": "Number of cores in the cluster per coredns replica."
        },
        "enabled": {
          "type": "boolean",
          "description": "Enabled the cluster-proportional-autoscaler."
        },
        "image": {
          "$ref": "#/types/kubernetes-coredns:index:CoreDNSImage",
          "description": "The image to pull from for the autoscaler."
        },
        "includeUnschedulableNodes": {
          "type": "boolean",
          "description": "Whether to include unschedulable nodes in the nodes/cores calculations - this requires version 1.8.0+ of the autoscaler."
        },
        "max": {
          "type": "integer",
          "description": "Max size of replicaCount"
        },
        "min": {
          "type": "integer",
          "description": "Min size of replicaCount"
        },
        "nodesPerReplica": {
          "type": "integer",
          "description": "Number of nodes in the cluster per coredns replica."
        },
        "preventSinglePointFailure": {
          "type": "boolean",
          "description": "If true does not allow single points of failure to form."
        }
      },
      "type": "object"
    },
    "kubernetes-coredns:index:CoreDNSDeployment": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optionally disable the main deployment and its respective resources."
        },
        "name": {
          "type": "string",
          "description": "Name of the deployment if deployment.enabled is true. Otherwise the name of an existing deployment for the autoscaler or HPA to target."
        }
      },
      "type": "object"
    },
    "kubernetes-coredns:index:CoreDNSHPA": {
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "maxReplicas": {
          "type": "integer"
        },
        "metrics": {
          "$ref": "/kubernetes/v4.19.0/schema.json#/types/kubernetes:autoscaling%2Fv2beta2:MetricSpec"
        },
        "minReplicas": {
          "type": "integer"
        }
      },
      "type": "object"
    },
    "kubernetes-coredns:index:CoreDNSImage": {
      "properties": {
        "pullPolicy": {
          "type": "string",
          "description": "Image pull policy."
        },
        "pullSecrets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specify container image pull secrets."
        },
        "repository": {
          "type": "string",
          "description": "The image repository to pull from."
        },
        "tag": {
          "type": "string",
          "description": "The image tag to pull from."
        }
      },
      "type": "object"
    },
    "kubernetes-coredns:index:CoreDNSPrometheus": {
      "properties": {
        "monitor": {
          "$ref": "#/types/kubernetes-coredns:index:CoreDNSPrometheusMonitor"
        },
        "service": {
          "$ref": "#/types/kubernetes-coredns:index:CoreDNSPrometheusService"
        }
      },
      "type": "object"
    },
    "kubernetes-coredns:index:CoreDNSPrometheusMonitor": {
      "properties": {
        "additionalLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional labels that can be used so ServiceMonitor will be discovered by Prometheus."
        },
        "enabled": {
          "type": "boolean",
          "description": "Set this to true to create ServiceMonitor for Prometheus operator."
        },
        "namespace": {
          "type": "string",
          "description": "Selector to select which namespaces the Endpoints objects are discovered from."
        }
      },
      "type": "object"
    },
    "kubernetes-coredns:index:CoreDNSPrometheusService": {
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to add to the metrics Service."
        },
        "enabled": {
          "type": "boolean",
          "description": "Set this to true to create Service for Prometheus metrics."
        }
      },
      "type": "object"
    },
    "kubernetes-coredns:index:CoreDNSRBAC": {
      "properties": {
        "create": {
          "type": "boolean",
          "description": "If true, create & use RBAC resources"
        },
        "name": {
          "type": "string",
          "description": "The name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname template."
        },
        "pspEnable": {
          "type": "boolean",
          "description": "If true, create and use PodSecurityPolicy"
        }
      },
      "type": "object"
    },
    "kubernetes-coredns:index:CoreDNSServer": {
      "properties": {
        "plugins": {
          "type": "array",
          "items": {
            "$ref": "#/types/kubernetes-coredns:index:CoreDNSServerPlugin"
          },
          "description": "the plugins to use for this server block."
        },
        "port": {
          "type": "integer",
          "description": "optional, defaults to \"\" (which equals 53 in CoreDNS)."
        },
        "zones": {
          "type": "array",
          "items": {
            "$ref": "#/types/kubernetes-coredns:index:CoreDNSServerZone"
          },
          "description": "the `zones` block can be left out entirely, defaults to \".\""
        }
      },
      "type": "object"
    },
    "kubernetes-coredns:index:CoreDNSServerPlugin": {
      "properties": {
        "configBlock": {
          "type": "string",
          "description": "if the plugin supports extra block style config, supply it here"
        },
        "name": {
          "type": "string",
          "description": "name of plugin, if used multiple times ensure that the plugin supports it!"
        },
        "parameters": {
          "type": "string",
          "description": "list of parameters after the plugin"
        }
      },
      "type": "object"
    },
    "kubernetes-coredns:index:CoreDNSServerZone": {
      "properties": {
        "scheme": {
          "type": "string",
          "description": "optional, defaults to \"\" (which equals \"dns://\" in CoreDNS)"
        },
        "use_tcp": {
          "type": "boolean",
          "description": "set this parameter to optionally expose the port on tcp as well as udp for the DNS protocol. Note that this will not work if you are also exposing tls or grpc on the same server."
        },
        "zone": {
          "type": "string",
          "description": "optional, defaults to \".\""
        }
      },
      "type": "object"
    },
    "kubernetes-coredns:index:CoreDNSService": {
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to add to service."
        },
        "clusterIP": {
          "type": "string",
          "description": "IP address to assign to service."
        },
        "externalIPs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "External IP addresses."
        },
        "externalTrafficPolicy": {
          "type": "string",
          "description": "Enable client source IP preservation."
        },
        "loadBalancerIP": {
          "type": "string",
          "description": "IP address to assign to load balancer (if supported)."
        },
        "name": {
          "type": "string",
          "description": "The name of the Service. If not set, a name is generated using the fullname template."
        }
      },
      "type": "object"
    },
    "kubernetes-coredns:index:CoreDNSServiceAccount": {
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "create": {
          "type": "boolean",
          "description": "If true, create & use serviceAccount."
        },
        "name": {
          "type": "string",
          "description": "The name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname template"
        }
      },
      "type": "object"
    },
    "kubernetes-coredns:index:CoreDNSZoneFile": {
      "properties": {
        "contents": {
          "type": "string"
        },
        "domain": {
          "type": "string"
        },
        "string": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "kubernetes-coredns:index:Release": {
      "description": "A Release is an instance of a chart running in a Kubernetes cluster.\nA Chart is a Helm package. It contains all of the resource definitions necessary to run an application, tool, or service inside of a Kubernetes cluster.\nNote - Helm Release is currently in BETA and may change. Use in production environment is discouraged.",
      "properties": {
        "atomic": {
          "type": "boolean",
          "description": "If set, installation process purges chart on fail. `skipAwait` will be disabled automatically if atomic is used."
        },
        "chart": {
          "type": "string",
          "description": "Chart name to be installed. A path may be used."
        },
        "cleanupOnFail": {
          "type": "boolean",
          "description": "Allow deletion of new resources created in this upgrade when upgrade fails."
        },
        "createNamespace": {
          "type": "boolean",
          "description": "Create the namespace if it does not exist."
        },
        "dependencyUpdate": {
          "type": "boolean",
          "description": "Run helm dependency update before installing the chart."
        },
        "description": {
          "type": "string",
          "description": "Add a custom description"
        },
        "devel": {
          "type": "boolean",
          "description": "Use chart development versions, too. Equivalent to version '>0.0.0-0'. If `version` is set, this is ignored."
        },
        "disableCRDHooks": {
          "type": "boolean",
          "description": "Prevent CRD hooks from, running, but run other hooks.  See helm install --no-crd-hook"
        },
        "disableOpenapiValidation": {
          "type": "boolean",
          "description": "If set, the installation process will not validate rendered templates against the Kubernetes OpenAPI Schema"
        },
        "disableWebhooks": {
          "type": "boolean",
          "description": "Prevent hooks from running."
        },
        "forceUpdate": {
          "type": "boolean",
          "description": "Force resource update through delete/recreate if needed."
        },
        "keyring": {
          "type": "string",
          "description": "Location of public keys used for verification. Used only if `verify` is true"
        },
        "lint": {
          "type": "boolean",
          "description": "Run helm lint when planning."
        },
        "manifest": {
          "type": "object",
          "additionalProperties": {
            "$ref": "pulumi.json#/Any"
          },
          "description": "The rendered manifests as JSON. Not yet supported."
        },
        "maxHistory": {
          "type": "integer",
          "description": "Limit the maximum number of revisions saved per release. Use 0 for no limit."
        },
        "name": {
          "type": "string",
          "description": "Release name."
        },
        "namespace": {
          "type": "string",
          "description": "Namespace to install the release into."
        },
        "postrender": {
          "type": "string",
          "description": "Postrender command to run."
        },
        "recreatePods": {
          "type": "boolean",
          "description": "Perform pods restart during upgrade/rollback."
        },
        "renderSubchartNotes": {
          "type": "boolean",
          "description": "If set, render subchart notes along with the parent."
        },
        "replace": {
          "type": "boolean",
          "description": "Re-use the given name, even if that name is already used. This is unsafe in production"
        },
        "repositoryOpts": {
          "$ref": "#/types/kubernetes-coredns:index:RepositoryOpts",
          "description": "Specification defining the Helm chart repository to use."
        },
        "resetValues": {
          "type": "boolean",
          "description": "When upgrading, reset the values to the ones built into the chart."
        },
        "resourceNames": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "description": "Names of resources created by the release grouped by \"kind/version\"."
        },
        "reuseValues": {
          "type": "boolean",
          "description": "When upgrading, reuse the last release's values and merge in any overrides. If 'resetValues' is specified, this is ignored"
        },
        "skipAwait": {
          "type": "boolean",
          "description": "By default, the provider waits until all resources are in a ready state before marking the release as successful. Setting this to true will skip such await logic."
        },
        "skipCrds": {
          "type": "boolean",
          "description": "If set, no CRDs will be installed. By default, CRDs are installed if not already present."
        },
        "timeout": {
          "type": "integer",
          "description": "Time in seconds to wait for any individual kubernetes operation."
        },
        "valueYamlFiles": {
          "type": "array",
          "items": {
            "$ref": "pulumi.json#/Asset"
          },
          "description": "List of assets (raw yaml files). Content is read and merged with values. Not yet supported."
        },
        "values": {
          "type": "object",
          "additionalProperties": {
            "$ref": "pulumi.json#/Any"
          },
          "description": "Custom values set for the release."
        },
        "verify": {
          "type": "boolean",
          "description": "Verify the package before installing it."
        },
        "version": {
          "type": "string",
          "description": "Specify the exact chart version to install. If this is not specified, the latest version is installed."
        },
        "waitForJobs": {
          "type": "boolean",
          "description": "Will wait until all Jobs have been completed before marking the release as successful. This is ignored if `skipAwait` is enabled."
        }
      },
      "type": "object"
    },
    "kubernetes-coredns:index:ReleaseStatus": {
      "properties": {
        "appVersion": {
          "type": "string",
          "description": "The version number of the application being deployed."
        },
        "chart": {
          "type": "string",
          "description": "The name of the chart."
        },
        "name": {
          "type": "string",
          "description": "Name is the name of the release."
        },
        "namespace": {
          "type": "string",
          "description": "Namespace is the kubernetes namespace of the release."
        },
        "revision": {
          "type": "integer",
          "description": "Version is an int32 which represents the version of the release."
        },
        "status": {
          "type": "string",
          "description": "Status of the release."
        },
        "version": {
          "type": "string",
          "description": "A SemVer 2 conformant version string of the chart."
        }
      },
      "type": "object",
      "required": [
        "appVersion",
        "chart",
        "name",
        "namespace",
        "revision",
        "status",
        "version"
      ]
    },
    "kubernetes-coredns:index:RepositoryOpts": {
      "description": "Specification defining the Helm chart repository to use.",
      "properties": {
        "caFile": {
          "type": "string",
          "description": "The Repository's CA File"
        },
        "certFile": {
          "type": "string",
          "description": "The repository's cert file"
        },
        "keyFile": {
          "type": "string",
          "description": "The repository's cert key file"
        },
        "password": {
          "type": "string",
          "description": "Password for HTTP basic authentication",
          "secret": true
        },
        "repo": {
          "type": "string",
          "description": "Repository where to locate the requested chart. If is a URL the chart is installed without installing the repository."
        },
        "username": {
          "type": "string",
          "description": "Username for HTTP basic authentication"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "repo",
            "keyFile",
            "certFile",
            "caFile",
            "username",
            "password"
          ]
        }
      }
    }
  },
  "provider": {
    "type": "object"
  },
  "resources": {
    "kubernetes-coredns:index:CoreDNS": {
      "description": "Enable fast and flexible in-cluster DNS.",
      "properties": {
        "status": {
          "$ref": "#/types/kubernetes-coredns:index:ReleaseStatus",
          "description": "Detailed information about the status of the underlying Helm deployment."
        }
      },
      "type": "object",
      "required": [
        "status"
      ],
      "inputProperties": {
        "affinity": {
          "$ref": "/kubernetes/v4.19.0/schema.json#/types/kubernetes:core%2Fv1:Affinity",
          "description": "Affinity settings for pod assignment."
        },
        "autoscaler": {
          "$ref": "#/types/kubernetes-coredns:index:CoreDNSAutoscaler",
          "description": "Configue a cluster-proportional-autoscaler for coredns. See https://github.com/kubernetes-incubator/cluster-proportional-autoscaler."
        },
        "autoscaling": {
          "$ref": "/kubernetes/v4.19.0/schema.json#/types/kubernetes:autoscaling%2Fv2beta2:HorizontalPodAutoscalerSpec",
          "description": "Create HorizontalPodAutoscaler object."
        },
        "deployment": {
          "$ref": "#/types/kubernetes-coredns:index:CoreDNSDeployment",
          "description": "Configure the CoreDNS Deployment."
        },
        "extraSecrets": {
          "type": "array",
          "items": {
            "$ref": "/kubernetes/v4.19.0/schema.json#/types/kubernetes:core%2Fv1:VolumeMount"
          },
          "description": "Optional array of secrets to mount inside coredns container. Possible usecase: need for secure connection with etcd backend. Optional array of mount points for extraVolumes."
        },
        "extraVolumeMounts": {
          "type": "array",
          "items": {
            "$ref": "/kubernetes/v4.19.0/schema.json#/types/kubernetes:core%2Fv1:VolumeMount"
          },
          "description": "Optional array of mount points for extraVolumes."
        },
        "extraVolumes": {
          "type": "array",
          "items": {
            "$ref": "/kubernetes/v4.19.0/schema.json#/types/kubernetes:core%2Fv1:Volume"
          },
          "description": "Optional array of extra volumes to create."
        },
        "helmOptions": {
          "$ref": "#/types/kubernetes-coredns:index:Release",
          "description": "HelmOptions is an escape hatch that lets the end user control any aspect of the Helm deployment. This exposes the entirety of the underlying Helm Release component args."
        },
        "hpa": {
          "$ref": "#/types/kubernetes-coredns:index:CoreDNSHPA",
          "description": "Alternative configuration for HPA deployment if wanted."
        },
        "image": {
          "$ref": "#/types/kubernetes-coredns:index:CoreDNSImage",
          "description": "The image to pull."
        },
        "isClusterService": {
          "type": "boolean",
          "description": "Specifies whether chart should be deployed as cluster-service or normal k8s app."
        },
        "livenessProbe": {
          "$ref": "/kubernetes/v4.19.0/schema.json#/types/kubernetes:core%2Fv1:Probe",
          "description": "Configure the liveness probe. To use the livenessProbe, the health plugin needs to be enabled in CoreDNS' server config."
        },
        "nodeSelector": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Node labels for pod assignment."
        },
        "podAnnotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional Pod only Annotations."
        },
        "podDisruptionBudget": {
          "$ref": "/kubernetes/v4.19.0/schema.json#/types/kubernetes:policy%2Fv1:PodDisruptionBudgetSpec",
          "description": "Optional PodDisruptionBudget."
        },
        "preStopSleep": {
          "type": "integer",
          "description": "Under heavy load it takes more that standard time to remove Pod endpoint from a cluster. This will delay termination of our pod by `preStopSleep`. To make sure kube-proxy has enough time to catch up."
        },
        "priorityClassName": {
          "type": "string",
          "description": "Optional priority class to be used for the coredns pods. Used for autoscaler if autoscaler.priorityClassName not set."
        },
        "prometheus": {
          "$ref": "#/types/kubernetes-coredns:index:CoreDNSPrometheus",
          "description": "Configure Prometheus installation."
        },
        "rbac": {
          "$ref": "#/types/kubernetes-coredns:index:CoreDNSRBAC",
          "description": "Configure CoreDNS RBAC resources."
        },
        "readinessProbe": {
          "$ref": "/kubernetes/v4.19.0/schema.json#/types/kubernetes:core%2Fv1:Probe",
          "description": "Configure the readiness probe. To use the readinessProbe, the health plugin needs to be enabled in CoreDNS' server config."
        },
        "replicaCount": {
          "type": "integer",
          "description": "Number of replicas."
        },
        "resources": {
          "$ref": "/kubernetes/v4.19.0/schema.json#/types/kubernetes:core%2Fv1:ResourceRequirements",
          "description": "Container resource limits."
        },
        "rollingUpdate": {
          "$ref": "/kubernetes/v4.19.0/schema.json#/types/kubernetes:apps%2Fv1:RollingUpdateDeployment"
        },
        "servers": {
          "type": "array",
          "items": {
            "$ref": "#/types/kubernetes-coredns:index:CoreDNSServer"
          },
          "description": "Configuration for CoreDNS and plugins. Default zone is what Kubernetes recommends: https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#coredns-configmap-options"
        },
        "service": {
          "$ref": "#/types/kubernetes-coredns:index:CoreDNSService",
          "description": "Configure CoreDNS Service parameters."
        },
        "serviceAccount": {
          "$ref": "#/types/kubernetes-coredns:index:CoreDNSServiceAccount",
          "description": "Configure CoreDNS Service Account."
        },
        "serviceType": {
          "type": "string",
          "description": "Kubernetes Service type."
        },
        "terminationGracePeriodSeconds": {
          "type": "integer",
          "description": "Optional duration in seconds the pod needs to terminate gracefully."
        },
        "tolerations": {
          "type": "array",
          "items": {
            "$ref": "/kubernetes/v4.19.0/schema.json#/types/kubernetes:core%2Fv1:Toleration"
          },
          "description": "Tolerations for pod assignment."
        },
        "zoneFiles": {
          "type": "array",
          "items": {
            "$ref": "#/types/kubernetes-coredns:index:CoreDNSZoneFile"
          },
          "description": "Configure custom Zone files."
        }
      },
      "isComponent": true
    }
  }
}
