mirror of
https://github.com/dhall-lang/dhall-kubernetes.git
synced 2024-09-17 10:27:08 +03:00
381306bcc3
Fixes https://github.com/dhall-lang/dhall-kubernetes/issues/86 The motivation of this is to more accurately model the Kubernetes API semantics by not auto-omitting empty fields. This is because a field set to `Some ([] : List T)` is not necessarily the same as `None (List T)`. This makes the typical case a bit more verbose (more `Some`s), but the difference to the `./examples` shows that it's not too bad.
106 lines
3.5 KiB
Plaintext
106 lines
3.5 KiB
Plaintext
let kubernetes =
|
|
../package.dhall sha256:39fa32f6cbdd341cfd2be0aec017c7f6eb554a58bf0262ae222badf3b9c348c0
|
|
|
|
let release = "wintering-rodent"
|
|
|
|
let name = "aws-iam-authenticator"
|
|
|
|
let fullName = "${release}-${name}"
|
|
|
|
let version = "0.1.1"
|
|
|
|
let chart = "${name}-${version}"
|
|
|
|
let heritage = "dhall"
|
|
|
|
in kubernetes.DaemonSet::{
|
|
, metadata = kubernetes.ObjectMeta::{
|
|
, name = fullName
|
|
, labels = Some
|
|
( toMap
|
|
{ app = name
|
|
, chart = chart
|
|
, release = release
|
|
, heritage = heritage
|
|
}
|
|
)
|
|
}
|
|
, spec = Some kubernetes.DaemonSetSpec::{
|
|
, selector = kubernetes.LabelSelector::{
|
|
, matchLabels = Some (toMap { app = name, release = release })
|
|
}
|
|
, updateStrategy = Some kubernetes.DaemonSetUpdateStrategy::{
|
|
, type = Some "RollingUpdate"
|
|
}
|
|
, template = kubernetes.PodTemplateSpec::{
|
|
, metadata = kubernetes.ObjectMeta::{
|
|
, name = name
|
|
, annotations = Some
|
|
(toMap { `scheduler.alpha.kubernetes.io/critical-pod` = "" })
|
|
, labels = Some (toMap { app = name, release = release })
|
|
}
|
|
, spec = Some kubernetes.PodSpec::{
|
|
, hostNetwork = Some True
|
|
, nodeSelector = Some
|
|
(toMap { `node-role.kubernetes.io/master` = "" })
|
|
, tolerations = Some
|
|
[ kubernetes.Toleration::{
|
|
, effect = Some "NoSchedule"
|
|
, key = Some "node-role.kubernetes.io/master"
|
|
}
|
|
, kubernetes.Toleration::{
|
|
, effect = Some "CriticalAddonsOnly"
|
|
, key = Some "Exists"
|
|
}
|
|
]
|
|
, containers =
|
|
[ kubernetes.Container::{
|
|
, name = fullName
|
|
, image = Some "gcr.io/heptio-images/authenticator:v0.1.0"
|
|
, args = Some
|
|
[ "server"
|
|
, "--config=/etc/aws-iam-authenticator/config.yaml"
|
|
, "--state-dir=/var/aws-iam-authenticator"
|
|
, "--generate-kubeconfig=/etc/kubernetes/aws-iam-authenticator/kubeconfig.yaml"
|
|
]
|
|
, volumeMounts = Some
|
|
[ kubernetes.VolumeMount::{
|
|
, name = "config"
|
|
, mountPath = "/etc/aws-iam-authenticator/"
|
|
}
|
|
, kubernetes.VolumeMount::{
|
|
, name = "state"
|
|
, mountPath = "/var/aws-iam-authenticator/"
|
|
}
|
|
, kubernetes.VolumeMount::{
|
|
, name = "output"
|
|
, mountPath = "/etc/kubernetes/aws-iam-authenticator/"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
, volumes = Some
|
|
[ kubernetes.Volume::{
|
|
, name = "config"
|
|
, configMap = Some kubernetes.ConfigMapVolumeSource::{
|
|
, name = Some fullName
|
|
}
|
|
}
|
|
, kubernetes.Volume::{
|
|
, name = "output"
|
|
, hostPath = Some kubernetes.HostPathVolumeSource::{
|
|
, path = "/srv/kubernetes/aws-iam-authenticator/"
|
|
}
|
|
}
|
|
, kubernetes.Volume::{
|
|
, name = "state"
|
|
, hostPath = Some kubernetes.HostPathVolumeSource::{
|
|
, path = "/srv/kubernetes/aws-iam-authenticator/"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|