sigs.k8s.io/cluster-api-provider-azure@v1.14.3/templates/test/ci/cluster-template-prow-machine-pool.yaml (about)

     1  apiVersion: cluster.x-k8s.io/v1beta1
     2  kind: Cluster
     3  metadata:
     4    labels:
     5      cloud-provider: ${CLOUD_PROVIDER_AZURE_LABEL:=azure}
     6      cni: calico
     7      cni-windows: ${CLUSTER_NAME}-calico
     8      containerd-logger: enabled
     9      csi-proxy: enabled
    10      windows: enabled
    11    name: ${CLUSTER_NAME}
    12    namespace: default
    13  spec:
    14    clusterNetwork:
    15      pods:
    16        cidrBlocks:
    17        - 192.168.0.0/16
    18    controlPlaneRef:
    19      apiVersion: controlplane.cluster.x-k8s.io/v1beta1
    20      kind: KubeadmControlPlane
    21      name: ${CLUSTER_NAME}-control-plane
    22    infrastructureRef:
    23      apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    24      kind: AzureCluster
    25      name: ${CLUSTER_NAME}
    26  ---
    27  apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    28  kind: AzureCluster
    29  metadata:
    30    name: ${CLUSTER_NAME}
    31    namespace: default
    32  spec:
    33    additionalTags:
    34      buildProvenance: ${BUILD_PROVENANCE}
    35      creationTimestamp: ${TIMESTAMP}
    36      jobName: ${JOB_NAME}
    37    identityRef:
    38      apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    39      kind: AzureClusterIdentity
    40      name: ${CLUSTER_IDENTITY_NAME}
    41    location: ${AZURE_LOCATION}
    42    networkSpec:
    43      subnets:
    44      - name: control-plane-subnet
    45        role: control-plane
    46      - name: node-subnet
    47        role: node
    48      vnet:
    49        name: ${AZURE_VNET_NAME:=${CLUSTER_NAME}-vnet}
    50    resourceGroup: ${AZURE_RESOURCE_GROUP:=${CLUSTER_NAME}}
    51    subscriptionID: ${AZURE_SUBSCRIPTION_ID}
    52  ---
    53  apiVersion: controlplane.cluster.x-k8s.io/v1beta1
    54  kind: KubeadmControlPlane
    55  metadata:
    56    name: ${CLUSTER_NAME}-control-plane
    57    namespace: default
    58  spec:
    59    kubeadmConfigSpec:
    60      clusterConfiguration:
    61        apiServer:
    62          extraArgs:
    63            cloud-provider: external
    64          timeoutForControlPlane: 20m
    65        controllerManager:
    66          extraArgs:
    67            allocate-node-cidrs: "false"
    68            cloud-provider: external
    69            cluster-name: ${CLUSTER_NAME}
    70            v: "4"
    71        etcd:
    72          local:
    73            dataDir: /var/lib/etcddisk/etcd
    74            extraArgs:
    75              quota-backend-bytes: "8589934592"
    76      diskSetup:
    77        filesystems:
    78        - device: /dev/disk/azure/scsi1/lun0
    79          extraOpts:
    80          - -E
    81          - lazy_itable_init=1,lazy_journal_init=1
    82          filesystem: ext4
    83          label: etcd_disk
    84        - device: ephemeral0.1
    85          filesystem: ext4
    86          label: ephemeral0
    87          replaceFS: ntfs
    88        partitions:
    89        - device: /dev/disk/azure/scsi1/lun0
    90          layout: true
    91          overwrite: false
    92          tableType: gpt
    93      files:
    94      - contentFrom:
    95          secret:
    96            key: control-plane-azure.json
    97            name: ${CLUSTER_NAME}-control-plane-azure-json
    98        owner: root:root
    99        path: /etc/kubernetes/azure.json
   100        permissions: "0644"
   101      initConfiguration:
   102        nodeRegistration:
   103          kubeletExtraArgs:
   104            cloud-provider: external
   105          name: '{{ ds.meta_data["local_hostname"] }}'
   106      joinConfiguration:
   107        nodeRegistration:
   108          kubeletExtraArgs:
   109            cloud-provider: external
   110          name: '{{ ds.meta_data["local_hostname"] }}'
   111      mounts:
   112      - - LABEL=etcd_disk
   113        - /var/lib/etcddisk
   114      postKubeadmCommands: []
   115      preKubeadmCommands: []
   116    machineTemplate:
   117      infrastructureRef:
   118        apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
   119        kind: AzureMachineTemplate
   120        name: ${CLUSTER_NAME}-control-plane
   121    replicas: ${CONTROL_PLANE_MACHINE_COUNT:=1}
   122    version: ${KUBERNETES_VERSION}
   123  ---
   124  apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
   125  kind: AzureMachineTemplate
   126  metadata:
   127    name: ${CLUSTER_NAME}-control-plane
   128    namespace: default
   129  spec:
   130    template:
   131      spec:
   132        dataDisks:
   133        - diskSizeGB: 256
   134          lun: 0
   135          nameSuffix: etcddisk
   136        osDisk:
   137          diskSizeGB: 128
   138          osType: Linux
   139        sshPublicKey: ${AZURE_SSH_PUBLIC_KEY_B64:=""}
   140        vmSize: ${AZURE_CONTROL_PLANE_MACHINE_TYPE}
   141  ---
   142  apiVersion: cluster.x-k8s.io/v1beta1
   143  kind: MachinePool
   144  metadata:
   145    name: ${CLUSTER_NAME}-mp-0
   146    namespace: default
   147  spec:
   148    clusterName: ${CLUSTER_NAME}
   149    replicas: ${WORKER_MACHINE_COUNT:=2}
   150    template:
   151      spec:
   152        bootstrap:
   153          configRef:
   154            apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
   155            kind: KubeadmConfig
   156            name: ${CLUSTER_NAME}-mp-0
   157        clusterName: ${CLUSTER_NAME}
   158        infrastructureRef:
   159          apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
   160          kind: AzureMachinePool
   161          name: ${CLUSTER_NAME}-mp-0
   162        version: ${KUBERNETES_VERSION}
   163  ---
   164  apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
   165  kind: AzureMachinePool
   166  metadata:
   167    name: ${CLUSTER_NAME}-mp-0
   168    namespace: default
   169  spec:
   170    location: ${AZURE_LOCATION}
   171    strategy:
   172      rollingUpdate:
   173        deletePolicy: Oldest
   174        maxSurge: 25%
   175        maxUnavailable: 1
   176      type: RollingUpdate
   177    template:
   178      osDisk:
   179        diskSizeGB: 30
   180        managedDisk:
   181          storageAccountType: Premium_LRS
   182        osType: Linux
   183      sshPublicKey: ${AZURE_SSH_PUBLIC_KEY_B64:=""}
   184      vmExtensions:
   185      - name: CustomScript
   186        protectedSettings:
   187          commandToExecute: |
   188            #!/bin/sh
   189            echo "This script is a no-op used for extension testing purposes ..."
   190            touch test_file
   191        publisher: Microsoft.Azure.Extensions
   192        version: "2.1"
   193      vmSize: ${AZURE_NODE_MACHINE_TYPE}
   194  ---
   195  apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
   196  kind: KubeadmConfig
   197  metadata:
   198    name: ${CLUSTER_NAME}-mp-0
   199    namespace: default
   200  spec:
   201    files:
   202    - contentFrom:
   203        secret:
   204          key: worker-node-azure.json
   205          name: ${CLUSTER_NAME}-mp-0-azure-json
   206      owner: root:root
   207      path: /etc/kubernetes/azure.json
   208      permissions: "0644"
   209    joinConfiguration:
   210      nodeRegistration:
   211        kubeletExtraArgs:
   212          cloud-provider: external
   213        name: '{{ ds.meta_data["local_hostname"] }}'
   214  ---
   215  apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
   216  kind: AzureClusterIdentity
   217  metadata:
   218    labels:
   219      clusterctl.cluster.x-k8s.io/move-hierarchy: "true"
   220    name: ${CLUSTER_IDENTITY_NAME}
   221    namespace: default
   222  spec:
   223    allowedNamespaces: {}
   224    clientID: ${AZURE_CLIENT_ID}
   225    clientSecret:
   226      name: ${AZURE_CLUSTER_IDENTITY_SECRET_NAME}
   227      namespace: ${AZURE_CLUSTER_IDENTITY_SECRET_NAMESPACE}
   228    tenantID: ${AZURE_TENANT_ID}
   229    type: ServicePrincipal
   230  ---
   231  apiVersion: cluster.x-k8s.io/v1beta1
   232  kind: MachinePool
   233  metadata:
   234    name: ${CLUSTER_NAME}-mp-win
   235    namespace: default
   236  spec:
   237    clusterName: ${CLUSTER_NAME}
   238    replicas: ${WINDOWS_WORKER_MACHINE_COUNT:-0}
   239    template:
   240      spec:
   241        bootstrap:
   242          configRef:
   243            apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
   244            kind: KubeadmConfig
   245            name: ${CLUSTER_NAME}-mp-win
   246        clusterName: ${CLUSTER_NAME}
   247        infrastructureRef:
   248          apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
   249          kind: AzureMachinePool
   250          name: ${CLUSTER_NAME}-mp-win
   251        version: ${KUBERNETES_VERSION}
   252  ---
   253  apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
   254  kind: AzureMachinePool
   255  metadata:
   256    annotations:
   257      runtime: containerd
   258      windowsServerVersion: ${WINDOWS_SERVER_VERSION:=""}
   259    name: ${CLUSTER_NAME}-mp-win
   260    namespace: default
   261  spec:
   262    location: ${AZURE_LOCATION}
   263    template:
   264      osDisk:
   265        diskSizeGB: 128
   266        managedDisk:
   267          storageAccountType: Premium_LRS
   268        osType: Windows
   269      sshPublicKey: ${AZURE_SSH_PUBLIC_KEY_B64:=""}
   270      vmSize: ${AZURE_NODE_MACHINE_TYPE}
   271  ---
   272  apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
   273  kind: KubeadmConfig
   274  metadata:
   275    name: ${CLUSTER_NAME}-mp-win
   276    namespace: default
   277  spec:
   278    files:
   279    - contentFrom:
   280        secret:
   281          key: worker-node-azure.json
   282          name: ${CLUSTER_NAME}-mp-win-azure-json
   283      owner: root:root
   284      path: c:/k/azure.json
   285      permissions: "0644"
   286    - content: Add-MpPreference -ExclusionProcess C:/opt/cni/bin/calico.exe
   287      path: C:/defender-exclude-calico.ps1
   288      permissions: "0744"
   289    joinConfiguration:
   290      nodeRegistration:
   291        criSocket: npipe:////./pipe/containerd-containerd
   292        kubeletExtraArgs:
   293          cloud-provider: external
   294          pod-infra-container-image: mcr.microsoft.com/oss/kubernetes/pause:3.9
   295        name: '{{ ds.meta_data["local_hostname"] }}'
   296    postKubeadmCommands:
   297    - nssm set kubelet start SERVICE_AUTO_START
   298    - powershell C:/defender-exclude-calico.ps1
   299    preKubeadmCommands:
   300    - powershell c:/create-external-network.ps1
   301    users:
   302    - groups: Administrators
   303      name: capi
   304      sshAuthorizedKeys:
   305      - ${AZURE_SSH_PUBLIC_KEY:=""}
   306  ---
   307  apiVersion: addons.cluster.x-k8s.io/v1beta1
   308  kind: ClusterResourceSet
   309  metadata:
   310    name: ${CLUSTER_NAME}-calico-windows
   311    namespace: default
   312  spec:
   313    clusterSelector:
   314      matchLabels:
   315        cni-windows: ${CLUSTER_NAME}-calico
   316    resources:
   317    - kind: ConfigMap
   318      name: cni-${CLUSTER_NAME}-calico-windows
   319    strategy: ApplyOnce
   320  ---
   321  apiVersion: addons.cluster.x-k8s.io/v1beta1
   322  kind: ClusterResourceSet
   323  metadata:
   324    name: csi-proxy
   325    namespace: default
   326  spec:
   327    clusterSelector:
   328      matchLabels:
   329        csi-proxy: enabled
   330    resources:
   331    - kind: ConfigMap
   332      name: csi-proxy-addon
   333    strategy: ApplyOnce
   334  ---
   335  apiVersion: addons.cluster.x-k8s.io/v1beta1
   336  kind: ClusterResourceSet
   337  metadata:
   338    name: containerd-logger-${CLUSTER_NAME}
   339    namespace: default
   340  spec:
   341    clusterSelector:
   342      matchLabels:
   343        containerd-logger: enabled
   344    resources:
   345    - kind: ConfigMap
   346      name: containerd-logger-${CLUSTER_NAME}
   347    strategy: ApplyOnce
   348  ---
   349  apiVersion: addons.cluster.x-k8s.io/v1alpha1
   350  kind: HelmChartProxy
   351  metadata:
   352    name: calico
   353    namespace: default
   354  spec:
   355    chartName: tigera-operator
   356    clusterSelector:
   357      matchLabels:
   358        cni: calico
   359    namespace: tigera-operator
   360    releaseName: projectcalico
   361    repoURL: https://docs.tigera.io/calico/charts
   362    valuesTemplate: |-
   363      installation:
   364        cni:
   365          type: Calico
   366        calicoNetwork:
   367          bgp: Disabled
   368          mtu: 1350
   369          ipPools:
   370          ipPools:{{range $i, $cidr := .Cluster.spec.clusterNetwork.pods.cidrBlocks }}
   371          - cidr: {{ $cidr }}
   372            encapsulation: VXLAN{{end}}
   373        registry: mcr.microsoft.com/oss
   374      # Image and registry configuration for the tigera/operator pod.
   375      tigeraOperator:
   376        image: tigera/operator
   377        registry: mcr.microsoft.com/oss
   378      calicoctl:
   379        image: mcr.microsoft.com/oss/calico/ctl
   380    version: ${CALICO_VERSION}
   381  ---
   382  apiVersion: addons.cluster.x-k8s.io/v1alpha1
   383  kind: HelmChartProxy
   384  metadata:
   385    name: azuredisk-csi-driver-chart
   386    namespace: default
   387  spec:
   388    chartName: azuredisk-csi-driver
   389    clusterSelector:
   390      matchLabels:
   391        azuredisk-csi: "true"
   392    namespace: kube-system
   393    releaseName: azuredisk-csi-driver-oot
   394    repoURL: https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/charts
   395    valuesTemplate: |-
   396      controller:
   397        replicas: 1
   398        runOnControlPlane: true
   399      windows:
   400        useHostProcessContainers: {{ hasKey .Cluster.metadata.labels "cni-windows" }}
   401  ---
   402  apiVersion: addons.cluster.x-k8s.io/v1alpha1
   403  kind: HelmChartProxy
   404  metadata:
   405    name: cloud-provider-azure-chart
   406    namespace: default
   407  spec:
   408    chartName: cloud-provider-azure
   409    clusterSelector:
   410      matchLabels:
   411        cloud-provider: azure
   412    releaseName: cloud-provider-azure-oot
   413    repoURL: https://raw.githubusercontent.com/kubernetes-sigs/cloud-provider-azure/master/helm/repo
   414    valuesTemplate: |
   415      infra:
   416        clusterName: {{ .Cluster.metadata.name }}
   417      cloudControllerManager:
   418        clusterCIDR: {{ .Cluster.spec.clusterNetwork.pods.cidrBlocks | join "," }}
   419        logVerbosity: 4
   420  ---
   421  apiVersion: addons.cluster.x-k8s.io/v1alpha1
   422  kind: HelmChartProxy
   423  metadata:
   424    name: cloud-provider-azure-chart-ci
   425    namespace: default
   426  spec:
   427    chartName: cloud-provider-azure
   428    clusterSelector:
   429      matchLabels:
   430        cloud-provider: azure-ci
   431    releaseName: cloud-provider-azure-oot
   432    repoURL: https://raw.githubusercontent.com/kubernetes-sigs/cloud-provider-azure/master/helm/repo
   433    valuesTemplate: |
   434      infra:
   435        clusterName: {{ .Cluster.metadata.name }}
   436      cloudControllerManager:
   437        cloudConfig: ${CLOUD_CONFIG:-"/etc/kubernetes/azure.json"}
   438        cloudConfigSecretName: ${CONFIG_SECRET_NAME:-""}
   439        clusterCIDR: {{ .Cluster.spec.clusterNetwork.pods.cidrBlocks | join "," }}
   440        imageName: "${CCM_IMAGE_NAME:-""}"
   441        imageRepository: "${IMAGE_REGISTRY:-""}"
   442        imageTag: "${IMAGE_TAG_CCM:-""}"
   443        logVerbosity: ${CCM_LOG_VERBOSITY:-4}
   444        replicas: ${CCM_COUNT:-1}
   445        enableDynamicReloading: ${ENABLE_DYNAMIC_RELOADING:-false}
   446      cloudNodeManager:
   447        imageName: "${CNM_IMAGE_NAME:-""}"
   448        imageRepository: "${IMAGE_REGISTRY:-""}"
   449        imageTag: "${IMAGE_TAG_CNM:-""}"
   450  ---
   451  apiVersion: v1
   452  data:
   453    proxy: |
   454      apiVersion: apps/v1
   455      kind: DaemonSet
   456      metadata:
   457        labels:
   458          k8s-app: kube-proxy
   459        name: kube-proxy-windows
   460        namespace: kube-system
   461      spec:
   462        selector:
   463          matchLabels:
   464            k8s-app: kube-proxy-windows
   465        template:
   466          metadata:
   467            labels:
   468              k8s-app: kube-proxy-windows
   469          spec:
   470            serviceAccountName: kube-proxy
   471            securityContext:
   472              windowsOptions:
   473                hostProcess: true
   474                runAsUserName: "NT AUTHORITY\\system"
   475            hostNetwork: true
   476            containers:
   477            - image: sigwindowstools/kube-proxy:${KUBERNETES_VERSION/+/_}-calico-hostprocess
   478              args: ["$env:CONTAINER_SANDBOX_MOUNT_POINT/kube-proxy/start.ps1"]
   479              workingDir: "$env:CONTAINER_SANDBOX_MOUNT_POINT/kube-proxy/"
   480              name: kube-proxy
   481              env:
   482              - name: NODE_NAME
   483                valueFrom:
   484                  fieldRef:
   485                    apiVersion: v1
   486                    fieldPath: spec.nodeName
   487              - name: POD_IP
   488                valueFrom:
   489                  fieldRef:
   490                    fieldPath: status.podIP
   491              - name: KUBEPROXY_PATH
   492                valueFrom:
   493                  configMapKeyRef:
   494                    name: windows-kubeproxy-ci
   495                    key: KUBEPROXY_PATH
   496                    optional: true
   497              volumeMounts:
   498              - mountPath: /var/lib/kube-proxy
   499                name: kube-proxy
   500            nodeSelector:
   501              kubernetes.io/os: windows
   502            tolerations:
   503            - key: CriticalAddonsOnly
   504              operator: Exists
   505            - operator: Exists
   506            volumes:
   507            - configMap:
   508                name: kube-proxy
   509              name: kube-proxy
   510        updateStrategy:
   511          type: RollingUpdate
   512    windows-cni: "# strictAffinity required for windows\napiVersion: crd.projectcalico.org/v1\nkind:
   513      IPAMConfig\nmetadata:\n  name: default\nspec:\n  autoAllocateBlocks: true\n  strictAffinity:
   514      true\n---\nkind: ConfigMap\napiVersion: v1\nmetadata:\n  name: calico-static-rules\n
   515      \ namespace: calico-system\n  labels:\n    tier: node\n    app: calico\ndata:\n
   516      \ static-rules.json: |\n    {\n      \"Provider\": \"azure\",\n      \"Version\":
   517      \"0.1\",\n      \"Rules\": [\n        {\n          \"Name\": \"EndpointPolicy\",\n
   518      \         \"Rule\": {\n              \"Id\": \"wireserver\",\n              \"Type\":
   519      \"ACL\",\n              \"Protocol\": 6,\n              \"Action\": \"Block\",\n
   520      \             \"Direction\": \"Out\",\n              \"RemoteAddresses\": \"168.63.129.16/32\",\n
   521      \             \"RemotePorts\": \"80\",\n              \"Priority\": 200,\n              \"RuleType\":
   522      \"Switch\"\n            }\n          }\n      ]\n    } \n---\nkind: ConfigMap\napiVersion:
   523      v1\nmetadata:\n  name: calico-config-windows\n  namespace: calico-system\n  labels:\n
   524      \   tier: node\n    app: calico\ndata:\n  veth_mtu: \"1350\"\n  \n  cni_network_config:
   525      |\n    {\n      \"name\": \"Calico\",\n      \"cniVersion\": \"0.3.1\",\n      \"plugins\":
   526      [\n        {\n          \"windows_use_single_network\": true,\n          \"type\":
   527      \"calico\",\n          \"mode\": \"vxlan\",\n          \"nodename\": \"__KUBERNETES_NODE_NAME__\",\n
   528      \         \"nodename_file_optional\": true,\n          \"log_file_path\": \"c:/cni.log\",\n
   529      \         \"log_level\": \"debug\",\n\n          \"vxlan_mac_prefix\": \"0E-2A\",\n
   530      \         \"vxlan_vni\": 4096,\n          \"mtu\": __CNI_MTU__,\n          \"policy\":
   531      {\n            \"type\": \"k8s\"\n          },\n\n          \"log_level\": \"info\",\n\n
   532      \         \"capabilities\": {\"dns\": true},\n          \"DNS\":  {\n            \"Search\":
   533      \ [\n              \"svc.cluster.local\"\n            ]\n          },\n\n          \"datastore_type\":
   534      \"kubernetes\",\n\n          \"kubernetes\": {\n            \"kubeconfig\": \"__KUBECONFIG_FILEPATH__\"\n
   535      \         },\n\n          \"ipam\": {\n            \"type\": \"calico-ipam\",\n
   536      \           \"subnet\": \"usePodCidr\"\n          },\n\n          \"policies\":
   537      \ [\n            {\n              \"Name\":  \"EndpointPolicy\",\n              \"Value\":
   538      \ {\n                \"Type\":  \"OutBoundNAT\",\n                \"ExceptionList\":
   539      \ [\n                  \"__K8S_SERVICE_CIDR__\"\n                ]\n              }\n
   540      \           },\n            {\n              \"Name\":  \"EndpointPolicy\",\n
   541      \             \"Value\":  {\n                \"Type\":  \"SDNROUTE\",\n                \"DestinationPrefix\":
   542      \ \"__K8S_SERVICE_CIDR__\",\n                \"NeedEncap\":  true\n              }\n
   543      \           }\n          ]\n        }\n      ]\n\n    }\n---\napiVersion: apps/v1\nkind:
   544      DaemonSet\nmetadata:\n  name: calico-node-windows\n  labels:\n    tier: node\n
   545      \   app: calico\n  namespace: calico-system\nspec:\n  selector:\n    matchLabels:\n
   546      \     app: calico\n  template:\n    metadata:\n      labels:\n        tier: node\n
   547      \       app: calico\n    spec:\n      affinity:\n        nodeAffinity:\n          requiredDuringSchedulingIgnoredDuringExecution:\n
   548      \           nodeSelectorTerms:\n              - matchExpressions:\n                  -
   549      key: kubernetes.io/os\n                    operator: In\n                    values:\n
   550      \                     - windows\n                  - key: kubernetes.io/arch\n
   551      \                   operator: In\n                    values:\n                      -
   552      amd64\n      securityContext:\n        windowsOptions:\n          hostProcess:
   553      true\n          runAsUserName: \"NT AUTHORITY\\\\system\"\n      hostNetwork:
   554      true\n      serviceAccountName: calico-node\n      tolerations:\n      - operator:
   555      Exists\n        effect: NoSchedule\n        # Mark the pod as a critical add-on
   556      for rescheduling.\n      - key: CriticalAddonsOnly\n        operator: Exists\n
   557      \     - effect: NoExecute\n        operator: Exists\n      initContainers:\n        #
   558      This container installs the CNI binaries\n        # and CNI network config file
   559      on each node.\n        - name: install-cni\n          image: sigwindowstools/calico-install:v3.26.1-hostprocess\n
   560      \         args: [\"$env:CONTAINER_SANDBOX_MOUNT_POINT/calico/install.ps1\"]\n
   561      \         imagePullPolicy: Always\n          env:\n            # Name of the CNI
   562      config file to create.\n            - name: CNI_CONF_NAME\n              value:
   563      \"10-calico.conflist\"\n            # The CNI network config to install on each
   564      node.\n            - name: CNI_NETWORK_CONFIG\n              valueFrom:\n                configMapKeyRef:\n
   565      \                 name: calico-config-windows\n                  key: cni_network_config\n
   566      \           # Set the hostname based on the k8s node name.\n            - name:
   567      KUBERNETES_NODE_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath:
   568      spec.nodeName\n            # CNI MTU Config variable\n            - name: CNI_MTU\n
   569      \             valueFrom:\n                configMapKeyRef:\n                  name:
   570      calico-config-windows\n                  key: veth_mtu\n            # Prevents
   571      the container from sleeping forever.\n            - name: SLEEP\n              value:
   572      \"false\"\n            - name: K8S_SERVICE_CIDR\n              value: \"10.96.0.0/12\"\n
   573      \         volumeMounts:\n            - mountPath: /host/opt/cni/bin\n              name:
   574      cni-bin-dir\n            - mountPath: /host/etc/cni/net.d\n              name:
   575      cni-net-dir\n            - name: kubeadm-config\n              mountPath: /etc/kubeadm-config/\n
   576      \         securityContext:\n            windowsOptions:\n              hostProcess:
   577      true\n              runAsUserName: \"NT AUTHORITY\\\\system\"\n      containers:\n
   578      \     - name: calico-node-startup\n        image: sigwindowstools/calico-node:v3.26.1-hostprocess\n
   579      \       args: [\"$env:CONTAINER_SANDBOX_MOUNT_POINT/calico/node-service.ps1\"]\n
   580      \       workingDir: \"$env:CONTAINER_SANDBOX_MOUNT_POINT/calico/\"\n        imagePullPolicy:
   581      Always\n        volumeMounts:\n        - name: calico-config-windows\n          mountPath:
   582      /etc/kube-calico-windows/\n        env:\n        - name: POD_NAME\n          valueFrom:\n
   583      \           fieldRef:\n              apiVersion: v1\n              fieldPath:
   584      metadata.name\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n
   585      \             apiVersion: v1\n              fieldPath: metadata.namespace\n        -
   586      name: CNI_IPAM_TYPE\n          value: \"calico-ipam\"\n        - name: CALICO_NETWORKING_BACKEND\n
   587      \         value: \"vxlan\"\n        - name: KUBECONFIG\n          value: \"C:/etc/cni/net.d/calico-kubeconfig\"\n
   588      \       - name: VXLAN_VNI\n          value: \"4096\"\n      - name: calico-node-felix\n
   589      \       image: sigwindowstools/calico-node:v3.26.1-hostprocess\n        args:
   590      [\"$env:CONTAINER_SANDBOX_MOUNT_POINT/calico/felix-service.ps1\"]\n        imagePullPolicy:
   591      Always\n        workingDir: \"$env:CONTAINER_SANDBOX_MOUNT_POINT/calico/\"\n        volumeMounts:\n
   592      \       - name: calico-config-windows\n          mountPath: /etc/kube-calico-windows/\n
   593      \       - name: calico-static-rules\n          mountPath: /calico/static-rules.json\n
   594      \         subPath: static-rules.json\n        env:\n        - name: POD_NAME\n
   595      \         valueFrom:\n            fieldRef:\n              apiVersion: v1\n              fieldPath:
   596      metadata.name\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n
   597      \             apiVersion: v1\n              fieldPath: metadata.namespace\n        -
   598      name: VXLAN_VNI\n          value: \"4096\"\n        - name: KUBECONFIG\n          value:
   599      \"C:/etc/cni/net.d/calico-kubeconfig\"\n      volumes:\n      - name: calico-config-windows\n
   600      \       configMap:\n          name: calico-config-windows\n      - name: calico-static-rules\n
   601      \       configMap:\n          name: calico-static-rules\n      # Used to install
   602      CNI.\n      - name: cni-bin-dir\n        hostPath:\n          path: /opt/cni/bin\n
   603      \     - name: cni-net-dir\n        hostPath:\n          path: /etc/cni/net.d\n
   604      \     - name: kubeadm-config\n        configMap:\n          name: kubeadm-config\n---\napiVersion:
   605      apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: ipamconfigs.crd.projectcalico.org\nspec:\n
   606      \ group: crd.projectcalico.org\n  names:\n    kind: IPAMConfig\n    listKind:
   607      IPAMConfigList\n    plural: ipamconfigs\n    singular: ipamconfig\n  preserveUnknownFields:
   608      false\n  scope: Cluster\n  versions:\n  - name: v1\n    schema:\n      openAPIV3Schema:\n
   609      \       properties:\n          apiVersion:\n            description: 'APIVersion
   610      defines the versioned schema of this representation\n              of an object.
   611      Servers should convert recognized schemas to the latest\n              internal
   612      value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n
   613      \           type: string\n          kind:\n            description: 'Kind is a
   614      string value representing the REST resource this\n              object represents.
   615      Servers may infer this from the endpoint the client\n              submits requests
   616      to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n
   617      \           type: string\n          metadata:\n            type: object\n          spec:\n
   618      \           description: IPAMConfigSpec contains the specification for an IPAMConfig\n
   619      \             resource.\n            properties:\n              autoAllocateBlocks:\n
   620      \               type: boolean\n              maxBlocksPerHost:\n                description:
   621      MaxBlocksPerHost, if non-zero, is the max number of blocks\n                  that
   622      can be affine to each host.\n                maximum: 2147483647\n                minimum:
   623      0\n                type: integer\n              strictAffinity:\n                type:
   624      boolean\n            required:\n            - autoAllocateBlocks\n            -
   625      strictAffinity\n            type: object\n        type: object\n    served: true\n
   626      \   storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n
   627      \ conditions: []\n  storedVersions: []\n"
   628  kind: ConfigMap
   629  metadata:
   630    annotations:
   631      note: generated
   632    labels:
   633      type: generated
   634    name: cni-${CLUSTER_NAME}-calico-windows
   635    namespace: default
   636  ---
   637  apiVersion: v1
   638  data:
   639    csi-proxy: |
   640      apiVersion: apps/v1
   641      kind: DaemonSet
   642      metadata:
   643        labels:
   644          k8s-app: csi-proxy
   645        name: csi-proxy
   646        namespace: kube-system
   647      spec:
   648        selector:
   649          matchLabels:
   650            k8s-app: csi-proxy
   651        template:
   652          metadata:
   653            labels:
   654              k8s-app: csi-proxy
   655          spec:
   656            nodeSelector:
   657              "kubernetes.io/os": windows
   658            securityContext:
   659              windowsOptions:
   660                hostProcess: true
   661                runAsUserName: "NT AUTHORITY\\SYSTEM"
   662            hostNetwork: true
   663            containers:
   664              - name: csi-proxy
   665                image: ghcr.io/kubernetes-sigs/sig-windows/csi-proxy:v1.0.2
   666  kind: ConfigMap
   667  metadata:
   668    annotations:
   669      note: generated
   670    labels:
   671      type: generated
   672    name: csi-proxy-addon
   673    namespace: default
   674  ---
   675  apiVersion: v1
   676  data:
   677    containerd-windows-logger: |
   678      apiVersion: apps/v1
   679      kind: DaemonSet
   680      metadata:
   681        labels:
   682          k8s-app: containerd-logger
   683        name: containerd-logger
   684        namespace: kube-system
   685      spec:
   686        selector:
   687          matchLabels:
   688            k8s-app: containerd-logger
   689        template:
   690          metadata:
   691            labels:
   692              k8s-app: containerd-logger
   693          spec:
   694            securityContext:
   695              windowsOptions:
   696                hostProcess: true
   697                runAsUserName: "NT AUTHORITY\\system"
   698            hostNetwork: true
   699            containers:
   700            - image: ghcr.io/kubernetes-sigs/sig-windows/eventflow-logger:v0.1.0
   701              args: [ "config.json" ]
   702              name: containerd-logger
   703              imagePullPolicy: Always
   704              volumeMounts:
   705              - name: containerd-logger-config
   706                mountPath: /config.json
   707                subPath: config.json
   708            nodeSelector:
   709              kubernetes.io/os: windows
   710            tolerations:
   711            - key: CriticalAddonsOnly
   712              operator: Exists
   713            - operator: Exists
   714            volumes:
   715            - configMap:
   716                name: containerd-logger-config
   717              name: containerd-logger-config
   718        updateStrategy:
   719          type: RollingUpdate
   720      ---
   721      kind: ConfigMap
   722      apiVersion: v1
   723      metadata:
   724        name: containerd-logger-config
   725        namespace: kube-system
   726      data:
   727        config.json: |
   728          {
   729            "inputs": [
   730              {
   731                "type": "ETW",
   732                "sessionNamePrefix": "containerd",
   733                "cleanupOldSessions": true,
   734                "reuseExistingSession": true,
   735                "providers": [
   736                  {
   737                    "providerName": "Microsoft.Virtualization.RunHCS",
   738                    "providerGuid": "0B52781F-B24D-5685-DDF6-69830ED40EC3",
   739                    "level": "Verbose"
   740                  },
   741                  {
   742                    "providerName": "ContainerD",
   743                    "providerGuid": "2acb92c0-eb9b-571a-69cf-8f3410f383ad",
   744                    "level": "Verbose"
   745                  }
   746                ]
   747              }
   748            ],
   749            "filters": [
   750              {
   751                  "type": "drop",
   752                  "include": "ProviderName == Microsoft.Virtualization.RunHCS && name == Stats && hasnoproperty error"
   753              },
   754              {
   755                  "type": "drop",
   756                  "include": "ProviderName == Microsoft.Virtualization.RunHCS && name == hcsshim::LayerID && hasnoproperty error"
   757              },
   758              {
   759                  "type": "drop",
   760                  "include": "ProviderName == Microsoft.Virtualization.RunHCS && name == hcsshim::NameToGuid && hasnoproperty error"
   761              },
   762              {
   763                  "type": "drop",
   764                  "include": "ProviderName == Microsoft.Virtualization.RunHCS && name == containerd.task.v2.Task.Stats && hasnoproperty error"
   765              },
   766              {
   767                  "type": "drop",
   768                  "include": "ProviderName == Microsoft.Virtualization.RunHCS && name == containerd.task.v2.Task.State && hasnoproperty error"
   769              },
   770              {
   771                  "type": "drop",
   772                  "include": "ProviderName == Microsoft.Virtualization.RunHCS && name == HcsGetProcessProperties && hasnoproperty error"
   773              },
   774              {
   775                  "type": "drop",
   776                  "include": "ProviderName == Microsoft.Virtualization.RunHCS && name == HcsGetComputeSystemProperties && hasnoproperty error"
   777              }
   778            ],
   779            "outputs": [
   780              {
   781                "type": "StdOutput"
   782              }
   783            ],
   784            "schemaVersion": "2016-08-11"
   785          }
   786  kind: ConfigMap
   787  metadata:
   788    annotations:
   789      note: generated
   790    labels:
   791      type: generated
   792    name: containerd-logger-${CLUSTER_NAME}
   793    namespace: default