Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support KRM in Kustomize plugin - PolicyGenerator #7

Open
3 tasks
Tracked by #5
aabouzaid opened this issue Jun 18, 2023 · 8 comments
Open
3 tasks
Tracked by #5

Support KRM in Kustomize plugin - PolicyGenerator #7

aabouzaid opened this issue Jun 18, 2023 · 8 comments
Assignees
Labels
enhancement New feature or request lang/go size/m

Comments

@aabouzaid
Copy link
Collaborator

aabouzaid commented Jun 18, 2023

Intro

Kustomize (the official tool to create K8s IaC) adopted the new Kubernetes declarative configurations known as KRM Functions. The new style is used as a unified way to interact with Kustomize plugins. There are 2 ways to use KRM in the plugins: Containerized KRM Functions and Exec KRM functions.

Not all Kustomize plugins adopted the new format; hence the goal of this task is to support the new method in existing plugins, namely, PolicyGenerator.

Acquired Skills

By doing this task, you will gain the following skills:

The Challange

Support KRM in PolicyGenerator Kustomize plugin.

The Task

  • Create an issue in PolicyGenerator to propose supporting KRM.
  • Fork the PolicyGenerator repo and create a new branch to work on the task.
  • Create a PR in the forked repo and assign me (@aabouzaid) as a reviewer.

Notes and Tips

Related Links

  • TBA
@hamza-m-masood
Copy link

I will attempt to do this task.

@hamza-m-masood
Copy link

hamza-m-masood commented Aug 25, 2024

I am not able to get the kustomize-plugin-kubeconform project to run. I noticed this line in the go.mod file:

replace github.com/yannh/kubeconform => ../kubeconform

ref

I assumed that I needed your fork to run this plugin. So I went to your profile and grabbed your fork: https://github.com/aabouzaid/kubeconform

After cloning the fork, I get the following error:

main.go:11:2: import "github.com/yannh/kubeconform/cmd/kubeconform" is a program, not an importable package

@hamza-m-masood
Copy link

I'm still seeing what the best way would be to run introduce KRM functions to that PolicyGenerator project. I need a deeper understanding of KRM functions.

@hamza-m-masood
Copy link

I just read your blog post about krm functions: https://tech.aabouzaid.com/2022/07/notes-about-krm-functions-kustomize.html

The PR you made in the Kustomize repo to fix the exec feature is very impressive!! Nice job!!

@aabouzaid
Copy link
Collaborator Author

Thanks @hamza-m-masood 🙌

Take a look at the PR I created to support KRM in SopsSecretGenerator.
It will give you some directions about how to implement it.

@aabouzaid
Copy link
Collaborator Author

You can also check Kustomize Merger as a good example of using kyaml/fn/framework.

@hamza-m-masood
Copy link

To be honest, I am a bit overwhelmed. I am very slowly making progress. I am still quite shaky on how KRM functions actually work and how the resourceList type is generated. I am not sure if the resourceList is made by kustomize and then passed to the go binary/container, or does the go program itself make the resourceList? I need to do more research to find out.

I made this program to learn more: https://gist.github.com/hamza-m-masood/077d34a35a5892fcdab93eba4524f4e2
I modified the annotation and label using KRM functions in the kyaml package.

@aabouzaid Looking at my program above, would setAnnotationFn and setLabelFn be considered KRM functions?

@aabouzaid
Copy link
Collaborator Author

@hamza-m-masood It's a good start 👌
Let's have a paring session next week.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request lang/go size/m
Projects
Status: 🗃️ Backlog
Development

No branches or pull requests

2 participants