trying to create secret from jinja template
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
b020ebf7d6
commit
53d2789128
@ -23,11 +23,12 @@ RUN set -eux; \
|
|||||||
apt-get clean;
|
apt-get clean;
|
||||||
|
|
||||||
COPY --chown=bw-operator:bw-operator bitwarden-crd-operator.py /home/bw-operator/bitwarden-crd-operator.py
|
COPY --chown=bw-operator:bw-operator bitwarden-crd-operator.py /home/bw-operator/bitwarden-crd-operator.py
|
||||||
|
COPY --chown=bw-operator:bw-operator templates /home/bw-operator/templates
|
||||||
|
|
||||||
USER bw-operator
|
USER bw-operator
|
||||||
|
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
|
|
||||||
ENTRYPOINT [ "/home/bw-operator/.local/bin/kopf", "run", "--liveness=http://0.0.0.0:8080/healthz" ]
|
ENTRYPOINT [ "/home/bw-operator/.local/bin/kopf", "run", "--all-namespaces", "--liveness=http://0.0.0.0:8080/healthz" ]
|
||||||
CMD [ "/home/bw-operator/bitwarden-crd-operator.py" ]
|
CMD [ "/home/bw-operator/bitwarden-crd-operator.py" ]
|
||||||
|
@ -1,17 +1,43 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
import os
|
||||||
import kopf
|
import kopf
|
||||||
|
import kubernetes
|
||||||
|
from jinja2 import Environment, FileSystemLoader
|
||||||
|
|
||||||
|
|
||||||
@kopf.on.create('bitwarden-secrets.lerentis.uploadfilter24.eu')
|
@kopf.on.create('bitwarden-secrets.lerentis.uploadfilter24.eu')
|
||||||
def create_fn(body, **kwargs):
|
def create_fn(spec, name, namespace, logger, **kwargs):
|
||||||
|
|
||||||
# The all-purpose function for the event creation.
|
type = spec.get('type')
|
||||||
kopf.event(body, type="SomeType", reason="SomeReason", message="Some message")
|
id = spec.get('id')
|
||||||
|
secret_name = spec.get('name')
|
||||||
|
secret_namespace = spec.get('namespace')
|
||||||
|
|
||||||
# The shortcuts for the conventional events and common cases.
|
api = kubernetes.client.CoreV1Api()
|
||||||
kopf.info(body, reason="SomeReason", message="Some message")
|
|
||||||
kopf.warn(body, reason="SomeReason", message="Some message")
|
|
||||||
|
|
||||||
try:
|
environment = Environment(loader=FileSystemLoader(os.path.join(os.path.dirname(__file__), '/templates')))
|
||||||
raise RuntimeError("Exception text.")
|
|
||||||
except Exception:
|
template = environment.get_template('username-password.yaml.j2')
|
||||||
kopf.exception(body, reason="SomeReason", message="Some exception:")
|
data = template.render(
|
||||||
|
original_crd=name,
|
||||||
|
secret_name=secret_name,
|
||||||
|
namespace=secret_namespace,
|
||||||
|
username="test",
|
||||||
|
password="test"
|
||||||
|
)
|
||||||
|
|
||||||
|
obj = api.create_namespaced_secret(
|
||||||
|
namespace=secret_namespace,
|
||||||
|
body=data
|
||||||
|
)
|
||||||
|
|
||||||
|
logger.info(f"Secret {name} is created: {obj}")
|
||||||
|
|
||||||
|
|
||||||
|
@kopf.on.update('bitwarden-secrets.lerentis.uploadfilter24.eu')
|
||||||
|
def my_handler(spec, old, new, diff, **_):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@kopf.on.delete('bitwarden-secrets.lerentis.uploadfilter24.eu')
|
||||||
|
def my_handler(spec, **_):
|
||||||
|
pass
|
@ -26,4 +26,8 @@ spec:
|
|||||||
type: string
|
type: string
|
||||||
id:
|
id:
|
||||||
type: string
|
type: string
|
||||||
|
namespace:
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
@ -1 +1,3 @@
|
|||||||
kopf
|
kopf
|
||||||
|
kubernetes
|
||||||
|
jinja2
|
12
templates/username-password.yaml.j2
Normal file
12
templates/username-password.yaml.j2
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
managed: "bitwarden-secrets.lerentis.uploadfilter24.eu"
|
||||||
|
crd: "{{ original_crd }}"
|
||||||
|
name: "{{ secret_name }}"
|
||||||
|
namespace: "{{ namespace }}"
|
||||||
|
type: Opaque
|
||||||
|
data:
|
||||||
|
username: "{{ username | base64 }}"
|
||||||
|
password: "{{ password | base64 }}"
|
Loading…
Reference in New Issue
Block a user