acrlabs / simkube

Record-and-replay Kubernetes simulator based on KWOK
https://appliedcomputing.io/simkube
MIT License
164 stars 7 forks source link

update k8s objects and workflows #86

Closed drmorr0 closed 5 months ago

drmorr0 commented 5 months ago

Description

Refactor k8s generation stuff to use the new :fire: config

Testing done

codecov[bot] commented 5 months ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (6ad3604) 58.60% compared to head (dcfc78a) 58.60%.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## master #86 +/- ## ======================================= Coverage 58.60% 58.60% ======================================= Files 38 38 Lines 2215 2215 ======================================= Hits 1298 1298 Misses 893 893 Partials 24 24 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

drmorr0 commented 5 months ago

Kubernetes Object DAG

%%{init: {'themeVariables': {'mainBkg': '#ddd'}}}%%
graph LR

classDef default color:#000
subgraph global
  direction LR
  global/simkube[<b>Namespace</b><br>simkube]
%% DELETED OBJECTS START
%% DELETED OBJECTS END
end

subgraph sk-cloudprov
  direction LR
  kube-system/sk-cloudprov-svc[<b>Service</b><br>sk-cloudprov-svc]
  kube-system/sk-cloudprov-depl[<b>Deployment</b><br>sk-cloudprov-depl]
  kube-system/sk-cloudprov-sa[<b>ServiceAccount</b><br>sk-cloudprov-sa]
  sk-cloudprov/sk-cloudprov-crb[<b>ClusterRoleBinding</b><br>sk-cloudprov-crb]
  kube-system/sk-cloudprov-cluster-autoscaler-depl[<b>Deployment</b><br>sk-cloudprov-cluster-autoscaler-depl]
  kube-system/sk-cloudprov-cluster-autoscaler-sa[<b>ServiceAccount</b><br>sk-cloudprov-cluster-autoscaler-sa]
  sk-cloudprov/sk-cloudprov-cluster-autoscaler-crb[<b>ClusterRoleBinding</b><br>sk-cloudprov-cluster-autoscaler-crb]
  kube-system/sk-cloudprov-cluster-autoscaler-config[<b>ConfigMap</b><br>sk-cloudprov-cluster-autoscaler-config]
  kube-system/sk-cloudprov-sa--->kube-system/sk-cloudprov-depl
  sk-cloudprov/sk-cloudprov-crb--->kube-system/sk-cloudprov-depl
  kube-system/sk-cloudprov-cluster-autoscaler-sa--->kube-system/sk-cloudprov-cluster-autoscaler-depl
  sk-cloudprov/sk-cloudprov-cluster-autoscaler-crb--->kube-system/sk-cloudprov-cluster-autoscaler-depl
  kube-system/sk-cloudprov-cluster-autoscaler-config--->kube-system/sk-cloudprov-cluster-autoscaler-depl
%% DELETED OBJECTS START
%% DELETED OBJECTS END
end

subgraph sk-vnode
  direction LR
  simkube/sk-vnode-depl[<b>Deployment</b><br>sk-vnode-depl]
  simkube/sk-vnode-sa[<b>ServiceAccount</b><br>sk-vnode-sa]
  sk-vnode/sk-vnode-crb[<b>ClusterRoleBinding</b><br>sk-vnode-crb]
  simkube/sk-vnode-node-skeleton[<b>ConfigMap</b><br>sk-vnode-node-skeleton]
  simkube/sk-vnode-sa--->simkube/sk-vnode-depl
  sk-vnode/sk-vnode-crb--->simkube/sk-vnode-depl
  simkube/sk-vnode-node-skeleton--->simkube/sk-vnode-depl
%% DELETED OBJECTS START
%% DELETED OBJECTS END
end

subgraph sk-tracer
  direction LR
  simkube/sk-tracer-svc[<b>Service</b><br>sk-tracer-svc]
  simkube/sk-tracer-depl[<b>Deployment</b><br>sk-tracer-depl]
  simkube/sk-tracer-sa[<b>ServiceAccount</b><br>sk-tracer-sa]
  sk-tracer/sk-tracer-crb[<b>ClusterRoleBinding</b><br>sk-tracer-crb]
  simkube/sk-tracer-tracer-config[<b>ConfigMap</b><br>sk-tracer-tracer-config]
  simkube/sk-tracer-sa--->simkube/sk-tracer-depl
  sk-tracer/sk-tracer-crb--->simkube/sk-tracer-depl
  simkube/sk-tracer-tracer-config--->simkube/sk-tracer-depl
%% DELETED OBJECTS START
%% DELETED OBJECTS END
end

subgraph sk-ctrl
  direction LR
  simkube/sk-ctrl-depl[<b>Deployment</b><br>sk-ctrl-depl]
  simkube/sk-ctrl-sa[<b>ServiceAccount</b><br>sk-ctrl-sa]
  sk-ctrl/sk-ctrl-crb[<b>ClusterRoleBinding</b><br>sk-ctrl-crb]
  simkube/sk-ctrl-sa--->simkube/sk-ctrl-depl
  sk-ctrl/sk-ctrl-crb--->simkube/sk-ctrl-depl
%% DELETED OBJECTS START
%% DELETED OBJECTS END
end

subgraph test
  direction LR
  simkube/test-depl[<b>Deployment</b><br>test-depl]
%% DELETED OBJECTS START
%% DELETED OBJECTS END
end

global--->sk-cloudprov
global--->sk-vnode
global--->sk-tracer
global--->sk-ctrl
global--->test

%% STYLE DEFINITIONS START
  style kube-system/sk-cloudprov-configmap fill:#e67
  style sk-cloudprov/simkube fill:#e67
  style simkube/sk-cloudprov-sa fill:#e67
  style simkube/sk-cloudprov-service fill:#e67
  style simkube/sk-cloudprov-depl fill:#e67
  style sk-vnode/simkube fill:#e67
  style simkube/sk-vnode-configmap fill:#e67
  style simkube/sk-tracer-configmap fill:#e67
  style sk-tracer/simkube fill:#e67
  style simkube/sk-tracer-service fill:#e67
  style sk-ctrl/simkube fill:#e67
  style test/simkube fill:#e67
  style kube-system/sk-cloudprov-cluster-autoscaler-depl fill:#cb4
  style simkube/sk-vnode-depl fill:#cb4
  style simkube/sk-tracer-depl fill:#cb4
  style simkube/sk-ctrl-depl fill:#cb4
  style simkube/test-depl fill:#cb4
  style sk-cloudprov/sk-cloudprov-crb fill:#6ce
  style global/simkube fill:#283
  style kube-system/sk-cloudprov-sa fill:#283
  style kube-system/sk-cloudprov-svc fill:#283
  style kube-system/sk-cloudprov-depl fill:#283
  style kube-system/sk-cloudprov-cluster-autoscaler-config fill:#283
  style simkube/sk-vnode-node-skeleton fill:#283
  style simkube/sk-tracer-svc fill:#283
  style simkube/sk-tracer-tracer-config fill:#283
%% STYLE DEFINITIONS END

New object Deleted object Updated object Updated object (causes pod recreation)

Detailed Diff

#### global/simkube: Added ``` root: not present --> { "apiVersion": "v1", "kind": "Namespace", "metadata": { "name": "simkube" } } ```
#### kube-system/sk-cloudprov-cluster-autoscaler-config: Added ``` root: not present --> { "apiVersion": "v1", "kind": "ConfigMap", "metadata": { "name": "sk-cloudprov-cluster-autoscaler-config", "namespace": "kube-system" }, "data": { "config.yml": "---\naddress: sk-cloudprov-svc:8086\n" } } ```
#### kube-system/sk-cloudprov-cluster-autoscaler-depl: ChangedWithPodRecreate ``` root['spec']['selector']['matchLabels']['app']: "cluster-autoscaler" --> not present ``` ``` root['spec']['template']['metadata']['namespace']: "kube-system" --> not present ``` ``` root['spec']['template']['metadata']['labels']['app']: "cluster-autoscaler" --> not present ``` ``` root['spec']['template']['spec']['containers'][0]['args'][4]: "/config/cluster-autoscaler-config.yml" --> "/config/config.yml" ``` ``` root['spec']['template']['spec']['volumes'][0]['configMap']['items'][0]['key']: "cluster-autoscaler-config.yml" --> "config.yml" ``` ``` root['spec']['template']['spec']['volumes'][0]['configMap']['items'][0]['path']: "cluster-autoscaler-config.yml" --> "config.yml" ``` ``` root['spec']['template']['spec']['volumes'][0]['configMap']['name']: "sk-cloudprov-configmap" --> "sk-cloudprov-cluster-autoscaler-config" ``` ``` root['spec']['selector']['matchLabels']['fireconfig.io/app']: not present --> "cluster-autoscaler" ``` ``` root['spec']['template']['metadata']['labels']['fireconfig.io/app']: not present --> "cluster-autoscaler" ```
#### kube-system/sk-cloudprov-configmap: Removed ``` root: { "apiVersion": "v1", "kind": "ConfigMap", "metadata": { "name": "sk-cloudprov-configmap", "namespace": "kube-system" }, "data": { "cluster-autoscaler-config.yml": "---\naddress: sk-cloudprov-service.simkube:8086\n" } } --> not present ```
#### kube-system/sk-cloudprov-depl: Added ``` root: not present --> { "apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "name": "sk-cloudprov-depl", "namespace": "kube-system" }, "spec": { "replicas": 1, "selector": { "matchLabels": { "fireconfig.io/app": "sk-cloudprov" } }, "template": { "metadata": { "labels": { "fireconfig.io/app": "sk-cloudprov" } }, "spec": { "containers": [ { "args": [ "/sk-cloudprov" ], "env": [ { "name": "POD_OWNER", "value": "sk-cloudprov-depl" } ], "image": "PLACEHOLDER", "name": "sk-cloudprov", "ports": [ { "containerPort": 8086 } ], "securityContext": { "capabilities": { "add": [ "SYS_PTRACE" ] } } } ], "nodeSelector": { "type": "kind-worker" }, "serviceAccountName": "sk-cloudprov-sa" } } } } ```
#### kube-system/sk-cloudprov-sa: Added ``` root: not present --> { "apiVersion": "v1", "kind": "ServiceAccount", "metadata": { "name": "sk-cloudprov-sa", "namespace": "kube-system" } } ```
#### kube-system/sk-cloudprov-svc: Added ``` root: not present --> { "apiVersion": "v1", "kind": "Service", "metadata": { "name": "sk-cloudprov-svc", "namespace": "kube-system" }, "spec": { "ports": [ { "port": 8086, "targetPort": 8086 } ], "selector": { "fireconfig.io/app": "sk-cloudprov" } } } ```
#### simkube/sk-cloudprov-depl: Removed ``` root: { "apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "name": "sk-cloudprov-depl", "namespace": "simkube" }, "spec": { "replicas": 1, "selector": { "matchLabels": { "app": "sk-cloudprov" } }, "template": { "metadata": { "labels": { "app": "sk-cloudprov" }, "namespace": "simkube" }, "spec": { "containers": [ { "args": [ "/sk-cloudprov" ], "env": [ { "name": "POD_OWNER", "value": "sk-cloudprov-depl" } ], "image": "PLACEHOLDER", "name": "sk-cloudprov", "ports": [ { "containerPort": 8086 } ], "securityContext": { "capabilities": { "add": [ "SYS_PTRACE" ] } } } ], "nodeSelector": { "type": "kind-worker" }, "serviceAccountName": "sk-cloudprov-sa" } } } } --> not present ```
#### simkube/sk-cloudprov-sa: Removed ``` root: { "apiVersion": "v1", "kind": "ServiceAccount", "metadata": { "name": "sk-cloudprov-sa", "namespace": "simkube" } } --> not present ```
#### simkube/sk-cloudprov-service: Removed ``` root: { "apiVersion": "v1", "kind": "Service", "metadata": { "name": "sk-cloudprov-service", "namespace": "simkube" }, "spec": { "ports": [ { "port": 8086, "targetPort": 8086 } ], "selector": { "app": "sk-cloudprov" } } } --> not present ```
#### simkube/sk-ctrl-depl: ChangedWithPodRecreate ``` root['metadata']['labels']: { "app": "sk-ctrl" } --> not present ``` ``` root['spec']['selector']['matchLabels']['app']: "sk-ctrl" --> not present ``` ``` root['spec']['template']['metadata']['namespace']: "simkube" --> not present ``` ``` root['spec']['template']['metadata']['labels']['app']: "sk-ctrl" --> not present ``` ``` root['spec']['template']['spec']['nodeSelector']['type']: "kind-worker" --> "kind-workerrrr" ``` ``` root['spec']['selector']['matchLabels']['fireconfig.io/app']: not present --> "sk-ctrl" ``` ``` root['spec']['template']['metadata']['labels']['fireconfig.io/app']: not present --> "sk-ctrl" ```
#### simkube/sk-tracer-configmap: Removed ``` root: { "apiVersion": "v1", "kind": "ConfigMap", "metadata": { "name": "sk-tracer-configmap", "namespace": "simkube" }, "data": { "tracer-config.yml": "---\ntrackedObjects:\n apps/v1.Deployment:\n podSpecTemplatePath: /spec/template\n" } } --> not present ```
#### simkube/sk-tracer-depl: ChangedWithPodRecreate ``` root['metadata']['labels']: { "app": "sk-tracer" } --> not present ``` ``` root['spec']['selector']['matchLabels']['app']: "sk-tracer" --> not present ``` ``` root['spec']['template']['metadata']['namespace']: "simkube" --> not present ``` ``` root['spec']['template']['metadata']['labels']['app']: "sk-tracer" --> not present ``` ``` root['spec']['template']['spec']['volumes'][0]['configMap']['name']: "sk-tracer-configmap" --> "sk-tracer-tracer-config" ``` ``` root['spec']['selector']['matchLabels']['fireconfig.io/app']: not present --> "sk-tracer" ``` ``` root['spec']['template']['metadata']['labels']['fireconfig.io/app']: not present --> "sk-tracer" ```
#### simkube/sk-tracer-service: Removed ``` root: { "apiVersion": "v1", "kind": "Service", "metadata": { "name": "sk-tracer-service", "namespace": "simkube" }, "spec": { "ports": [ { "port": 7777, "targetPort": 7777 } ], "selector": { "app": "sk-tracer" } } } --> not present ```
#### simkube/sk-tracer-svc: Added ``` root: not present --> { "apiVersion": "v1", "kind": "Service", "metadata": { "name": "sk-tracer-svc", "namespace": "simkube" }, "spec": { "ports": [ { "port": 7777, "targetPort": 7777 } ], "selector": { "fireconfig.io/app": "sk-tracer" } } } ```
#### simkube/sk-tracer-tracer-config: Added ``` root: not present --> { "apiVersion": "v1", "kind": "ConfigMap", "metadata": { "name": "sk-tracer-tracer-config", "namespace": "simkube" }, "data": { "tracer-config.yml": "---\ntrackedObjects:\n apps/v1.Deployment:\n podSpecTemplatePath: /spec/template\n" } } ```
#### simkube/sk-vnode-configmap: Removed ``` root: { "apiVersion": "v1", "kind": "ConfigMap", "metadata": { "name": "sk-vnode-configmap", "namespace": "simkube" }, "data": { "node.yml": "---\napiVersion: v1\nkind: Node\nstatus:\n allocatable:\n cpu: \"16\"\n memory: \"32Gi\"\n capacity:\n cpu: \"16\"\n memory: \"32Gi\"\n" } } --> not present ```
#### simkube/sk-vnode-depl: ChangedWithPodRecreate ``` root['metadata']['labels']: { "app": "sk-vnode" } --> not present ``` ``` root['spec']['selector']['matchLabels']['app']: "sk-vnode" --> not present ``` ``` root['spec']['template']['metadata']['namespace']: "simkube" --> not present ``` ``` root['spec']['template']['metadata']['labels']['app']: "sk-vnode" --> not present ``` ``` root['spec']['template']['spec']['volumes'][0]['configMap']['name']: "sk-vnode-configmap" --> "sk-vnode-node-skeleton" ``` ``` root['spec']['selector']['matchLabels']['fireconfig.io/app']: not present --> "sk-vnode" ``` ``` root['spec']['template']['metadata']['labels']['fireconfig.io/app']: not present --> "sk-vnode" ```
#### simkube/sk-vnode-node-skeleton: Added ``` root: not present --> { "apiVersion": "v1", "kind": "ConfigMap", "metadata": { "name": "sk-vnode-node-skeleton", "namespace": "simkube" }, "data": { "node.yml": "---\napiVersion: v1\nkind: Node\nstatus:\n allocatable:\n cpu: \"16\"\n memory: \"32Gi\"\n capacity:\n cpu: \"16\"\n memory: \"32Gi\"\n" } } ```
#### simkube/test-depl: ChangedWithPodRecreate ``` root['spec']['selector']['matchLabels']['app']: "test" --> not present ``` ``` root['spec']['template']['metadata']['namespace']: "simkube" --> not present ``` ``` root['spec']['template']['metadata']['labels']['app']: "test" --> not present ``` ``` root['spec']['selector']['matchLabels']['fireconfig.io/app']: not present --> "test" ``` ``` root['spec']['template']['metadata']['labels']['fireconfig.io/app']: not present --> "test" ```
#### sk-cloudprov/simkube: Removed ``` root: { "apiVersion": "v1", "kind": "Namespace", "metadata": { "name": "simkube" } } --> not present ```
#### sk-cloudprov/sk-cloudprov-crb: Changed ``` root['subjects'][0]['namespace']: "simkube" --> "kube-system" ```
#### sk-ctrl/simkube: Removed ``` root: { "apiVersion": "v1", "kind": "Namespace", "metadata": { "name": "simkube" } } --> not present ```
#### sk-tracer/simkube: Removed ``` root: { "apiVersion": "v1", "kind": "Namespace", "metadata": { "name": "simkube" } } --> not present ```
#### sk-vnode/simkube: Removed ``` root: { "apiVersion": "v1", "kind": "Namespace", "metadata": { "name": "simkube" } } --> not present ```
#### test/simkube: Removed ``` root: { "apiVersion": "v1", "kind": "Namespace", "metadata": { "name": "simkube" } } --> not present ```
drmorr0 commented 5 months ago

Merged to master manually so as to not mess up the k8s DAG comment.