diff --git a/stable/kube2iam/Chart.yaml b/stable/kube2iam/Chart.yaml index 4e5ce56feb..284cec5f58 100644 --- a/stable/kube2iam/Chart.yaml +++ b/stable/kube2iam/Chart.yaml @@ -1,5 +1,5 @@ name: kube2iam -version: 0.10.0 +version: 0.11.0 appVersion: 0.10.4 description: Provide IAM credentials to pods based on annotations. keywords: diff --git a/stable/kube2iam/README.md b/stable/kube2iam/README.md index 3f57093d5c..07ff4e9f6e 100644 --- a/stable/kube2iam/README.md +++ b/stable/kube2iam/README.md @@ -47,12 +47,17 @@ Parameter | Description | Default `host.ip` | IP address of host | `$(HOST_IP)` `host.iptables` | Add iptables rule | `false` `host.interface` | Host interface for proxying AWS metadata | `docker0` +`host.port` | Port to listen on | `8181` `image.repository` | Image | `jtblin/kube2iam` `image.tag` | Image tag | `0.10.4` `image.pullPolicy` | Image pull policy | `IfNotPresent` `nodeSelector` | node labels for pod assignment | `{}` `podAnnotations` | annotations to be added to pods | `{}` `priorityClassName` | priorityClassName to be added to pods | `{}` +`prometheus.metricsPort` | Port to expose prometheus metrics on (if unspecified, `host.port` is used) | `host.port` +`prometheus.serviceMonitor.enabled` | If true, create a Prometheus Operator ServiceMonitor resource | `false` +`prometheus.serviceMonitor.interval` | Interval at which the metrics endpoint is scraped | `10s` +`prometheus.serviceMonitor.namespace` | An alternative namespace in which to install the ServiceMonitor | `""` `rbac.create` | If true, create & use RBAC resources | `false` `rbac.serviceAccountName` | existing ServiceAccount to use (ignored if rbac.create=true) | `default` `resources` | pod resource requests & limits | `{}` diff --git a/stable/kube2iam/templates/daemonset.yaml b/stable/kube2iam/templates/daemonset.yaml index 815eb27684..d230c6a487 100644 --- a/stable/kube2iam/templates/daemonset.yaml +++ b/stable/kube2iam/templates/daemonset.yaml @@ -43,6 +43,9 @@ spec: - --verbose {{- end }} - --app-port={{ .Values.host.port }} + {{- if .Values.prometheus.metricsPort }} + - --metrics-port={{ .Values.prometheus.metricsPort }} + {{- end }} env: - name: HOST_IP valueFrom: @@ -73,7 +76,12 @@ spec: value: {{ quote $value }} {{- end }} ports: - - containerPort: {{ .Values.host.port }} + - name: http + containerPort: {{ .Values.host.port }} + {{- if .Values.prometheus.metricsPort }} + - name: metrics + containerPort: {{ .Values.prometheus.metricsPort }} + {{- end}} {{- if .Values.probe }} livenessProbe: httpGet: diff --git a/stable/kube2iam/templates/service.yaml b/stable/kube2iam/templates/service.yaml new file mode 100644 index 0000000000..80727e1345 --- /dev/null +++ b/stable/kube2iam/templates/service.yaml @@ -0,0 +1,27 @@ +{{- if .Values.prometheus.serviceMonitor.enabled }} +apiVersion: v1 +kind: Service +metadata: + annotations: + name: {{ template "kube2iam.fullname" . }}-metrics + labels: + app: {{ template "kube2iam.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + selector: + app: {{ template "kube2iam.name" . }} + release: {{ .Release.Name }} + ports: + {{- if .Values.prometheus.metricsPort }} + - name: metrics + port: {{ .Values.prometheus.metricsPort }} + targetPort: {{ .Values.prometheus.metricsPort }} + {{- else }} + - name: http + port: {{ .Values.host.port }} + targetPort: {{ .Values.host.port }} + {{- end }} + protocol: TCP +{{ end }} diff --git a/stable/kube2iam/templates/servicemonitor.yaml b/stable/kube2iam/templates/servicemonitor.yaml new file mode 100644 index 0000000000..d54c84c4dc --- /dev/null +++ b/stable/kube2iam/templates/servicemonitor.yaml @@ -0,0 +1,30 @@ +{{- if .Values.prometheus.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube2iam.fullname" . }} + {{- if .Values.prometheus.serviceMonitor.namespace }} + namespace: {{ .Values.prometheus.serviceMonitor.namespace }} + {{- end }} + labels: + app: {{ template "kube2iam.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} +spec: + selector: + matchLabels: + app: {{ template "kube2iam.name" . }} + release: {{ .Release.Name }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} + endpoints: + {{- if .Values.prometheus.metricsPort }} + - port: metrics + {{- else }} + - port: http + {{- end }} + interval: {{ .Values.prometheus.serviceMonitor.interval }} + path: /metrics +{{- end -}} diff --git a/stable/kube2iam/values.yaml b/stable/kube2iam/values.yaml index f8c24e5798..68cf059b94 100644 --- a/stable/kube2iam/values.yaml +++ b/stable/kube2iam/values.yaml @@ -14,6 +14,18 @@ host: interface: docker0 port: 8181 +prometheus: + # Port to expose the /metrics endpoint on. If unset, defaults to `host.port` + # metricsPort: 8181 + + serviceMonitor: + # Create prometheus-operator ServiceMonitor + enabled: false + # Interval at which the metrics endpoint is scraped + interval: 10s + # Alternative namespace to install the ServiceMonitor in + namespace: "" + image: repository: jtblin/kube2iam tag: 0.10.4