--- menu: workshop title: Self-Contained Patterns weight: 70 --- :toc: include::modules/comm-attributes.adoc[] :imagesdir: /images/workshop [#contained] image::complete-pattern.png[] Every Pattern has resources that make it unique: * Container Images * Containerfiles (aka: Dockerfiles) * Helm Charts * Kustomize Manifests * Kubernetes Manifests * Ansible Codes * Shell/Other programming language scripts Where or would I add them to the pattern? |=== |**Resource Type**|**Placement** | `kubernetes manifests (.yaml)` | They can either be converted to a Helm chart, or the raw manifests can be placed in a directory under `charts/` |`kustomize manifests` | Kustomize manifests can be placed in a directory under `charts/` or another path (e.g. `kustomize`) could be used |`Ansible` | Ansible roles and playbooks can be deployed through the imperative framework, or via kubernetes job resources in a Helm chart |`Scripts` | Shell scripts and other programs that are required for applications can be converted to a configMap and mounted as a volume in a pod (job) |=== IMPORTANT: The pattern should be able to deploy all the resources needed to run your applications. [#thoughts] === Thoughts on Self-Contained Patterns * Reusability / Repurposing becomes a serious problem when these resources are behind paywalls, private github repositories and registries. * Patterns designed and delivered for public consumption should have all of its resources available in a public repository and container registry * Self-contained patterns is letting the cluster build and deploy the container image used by applications (where it makes sense).