$ zarf package create .

kind: ZarfInitConfig
metadata:
  name: init
  description: Used to establish a new Zarf cluster
components:
- name: k3s
  description: "*** REQUIRES ROOT *** Install K3s, certified Kubernetes distribution built for IoT & Edge computing. K3s provides the cluster need for Zarf running in Appliance Mode as well as can host a low-resource Gitops Service if not using an existing Kubernetes platform."
  only:
    localOS: linux
    cluster:
      architecture: arm64
  actions:
    onDeploy:
      defaults:
        maxRetries: 5
      before:
      - maxRetries: 0
        cmd: ./zarf internal is-valid-hostname
      - cmd: "[ -e /etc/redhat-release ] && systemctl disable firewalld --now || echo ''"
      after:
      - cmd: systemctl daemon-reload
      - cmd: systemctl enable k3s
      - cmd: systemctl start k3s
  files:
  - source: packages/distros/k3s/common/zarf-clean-k3s.sh
    target: /opt/zarf/zarf-clean-k3s.sh
    executable: true
  - source: packages/distros/k3s/common/k3s.service
    target: /etc/systemd/system/k3s.service
    symlinks:
    - /etc/systemd/system/multi-user.target.wants/k3s.service
  - source: https://github.com/k3s-io/k3s/releases/download/v1.24.1+k3s1/k3s-arm64
    shasum: bd8b87d215f7a073d0139a0ab70e3fbeaa76e1b9ce6c00cd8d471cb44ba80687
    target: /usr/sbin/k3s
    executable: true
    symlinks:
    - /usr/sbin/kubectl
    - /usr/sbin/ctr
    - /usr/sbin/crictl
  - source: https://github.com/k3s-io/k3s/releases/download/v1.24.1+k3s1/k3s-airgap-images-arm64.tar.zst
    shasum: 12029e4bbfecfa16942345aeac798f4790e568a7202c2b85ee068d7b4756ba04
    target: /var/lib/rancher/k3s/agent/images/k3s.tar.zst
- name: zarf-injector
  description: |
    Bootstraps a Kubernetes cluster by cloning a running pod in the cluster and hosting the registry image.
    Removed and destroyed after the Zarf Registry is self-hosting the registry image.
  required: true
  cosignKeyPath: cosign.pub
  files:
  - source: sget://defenseunicorns/zarf-injector:arm64-2023-02-09
    target: "###ZARF_TEMP###/zarf-injector"
    executable: true
- name: zarf-seed-registry
  description: |
    Deploys the Zarf Registry using the registry image provided by the Zarf Injector.
  required: true
  charts:
  - name: docker-registry
    releaseName: zarf-docker-registry
    version: 1.0.0
    namespace: zarf
    valuesFiles:
    - packages/zarf-registry/registry-values.yaml
    - packages/zarf-registry/registry-values-seed.yaml
    localPath: packages/zarf-registry/chart
- name: zarf-registry
  description: |
    Updates the Zarf Registry to use the self-hosted registry image. 
    Serves as the primary docker registry for the cluster.
  required: true
  charts:
  - name: docker-registry
    releaseName: zarf-docker-registry
    version: 1.0.0
    namespace: zarf
    valuesFiles:
    - packages/zarf-registry/registry-values.yaml
    localPath: packages/zarf-registry/chart
  manifests:
  - name: registry-connect
    namespace: zarf
    files:
    - packages/zarf-registry/connect.yaml
  - name: kep-1755-registry-annotation
    namespace: zarf
    files:
    - packages/zarf-registry/configmap.yaml
  images:
  - registry:2.8.1
- name: zarf-agent
  description: |
    A Kubernetes mutating webhook to enable automated URL rewriting for container
    images and git repository references in Kubernetes manifests. This prevents
    the need to manually update URLs from their original sources to the Zarf-managed
    docker registry and git server.
  required: true
  actions:
    onCreate:
      before:
      - cmd: make init-package-local-agent AGENT_IMAGE="agent:local"
  manifests:
  - name: zarf-agent
    namespace: zarf
    files:
    - packages/zarf-agent/manifests/service.yaml
    - packages/zarf-agent/manifests/secret.yaml
    - packages/zarf-agent/manifests/deployment.yaml
    - packages/zarf-agent/manifests/webhook.yaml
  images:
  - ghcr.io/zarf-dev/zarf/agent:local
- name: git-server
  description: |
    Deploys Gitea to provide git repositories for Kubernetes configurations.
    Required for GitOps deployments if no other git server is available.
  actions:
    onDeploy:
      after:
      - maxTotalSeconds: 60
        maxRetries: 3
        cmd: ./zarf internal create-read-only-gitea-user
  charts:
  - name: gitea
    releaseName: zarf-gitea
    url: https://dl.gitea.io/charts
    version: 7.0.4
    namespace: zarf
    valuesFiles:
    - packages/gitea/gitea-values.yaml
  manifests:
  - name: git-connect
    namespace: zarf
    files:
    - packages/gitea/connect.yaml
  images:
  - gitea/gitea:1.19.3-rootless
variables:
- name: K3S_ARGS
  description: Arguments to pass to K3s
  default: --disable traefik
- name: REGISTRY_EXISTING_PVC
  description: "Optional: Use an existing PVC for the registry instead of creating a new one. If this is set, the REGISTRY_PVC_SIZE variable will be ignored."
- name: REGISTRY_PVC_SIZE
  description: The size of the persistent volume claim for the registry
  default: 20Gi
- name: REGISTRY_CPU_REQ
  description: The CPU request for the registry
  default: 100m
- name: REGISTRY_MEM_REQ
  description: The memory request for the registry
  default: 256Mi
- name: REGISTRY_CPU_LIMIT
  description: The CPU limit for the registry
  default: "3"
- name: REGISTRY_MEM_LIMIT
  description: The memory limit for the registry
  default: 2Gi
- name: REGISTRY_HPA_MIN
  description: The minimum number of registry replicas
  default: "1"
- name: REGISTRY_HPA_MAX
  description: The maximum number of registry replicas
  default: "5"
- name: REGISTRY_HPA_ENABLE
  description: Enable the Horizontal Pod Autoscaler for the registry
  default: "true"
- name: GIT_SERVER_EXISTING_PVC
  description: "Optional: Use an existing PVC for the git server instead of creating a new one. If this is set, the GIT_SERVER_PVC_SIZE variable will be ignored."
- name: GIT_SERVER_PVC_SIZE
  description: The size of the persistent volume claim for git server
  default: 10Gi
- name: GIT_SERVER_CPU_REQ
  description: The CPU request for git server
  default: 200m
- name: GIT_SERVER_MEM_REQ
  description: The memory request for git server
  default: 512Mi
- name: GIT_SERVER_CPU_LIMIT
  description: The CPU limit for git server
  default: "3"
- name: GIT_SERVER_MEM_LIMIT
  description: The memory limit for git server
  default: 2Gi
constants:
- name: AGENT_IMAGE
  value: agent:local

 ? Create this Zarf package? (y/N) Yes