| apiVersion: v1 |
| kind: ServiceAccount |
| metadata: |
| name: ns-controller-controller-manager |
| namespace: {{ .Release.Namespace }} |
| --- |
| apiVersion: rbac.authorization.k8s.io/v1 |
| kind: Role |
| metadata: |
| name: ns-controller-leader-election-role |
| namespace: {{ .Release.Namespace }} |
| rules: |
| - apiGroups: |
| - "" |
| resources: |
| - configmaps |
| verbs: |
| - get |
| - list |
| - watch |
| - create |
| - update |
| - patch |
| - delete |
| - apiGroups: |
| - coordination.k8s.io |
| resources: |
| - leases |
| verbs: |
| - get |
| - list |
| - watch |
| - create |
| - update |
| - patch |
| - delete |
| - apiGroups: |
| - "" |
| resources: |
| - events |
| verbs: |
| - create |
| - patch |
| --- |
| apiVersion: rbac.authorization.k8s.io/v1 |
| kind: ClusterRole |
| metadata: |
| creationTimestamp: null |
| name: ns-controller-manager-role |
| rules: |
| - apiGroups: |
| - "" |
| resources: |
| - secrets |
| verbs: |
| - create |
| - delete |
| - get |
| - list |
| - patch |
| - update |
| - watch |
| - apiGroups: |
| - dodo.cloud.dodo.cloud |
| resources: |
| - dnszones |
| verbs: |
| - create |
| - delete |
| - get |
| - list |
| - patch |
| - update |
| - watch |
| - apiGroups: |
| - dodo.cloud.dodo.cloud |
| resources: |
| - dnszones/finalizers |
| verbs: |
| - update |
| - apiGroups: |
| - dodo.cloud.dodo.cloud |
| resources: |
| - dnszones/status |
| verbs: |
| - get |
| - patch |
| - update |
| --- |
| apiVersion: rbac.authorization.k8s.io/v1 |
| kind: ClusterRole |
| metadata: |
| name: ns-controller-metrics-reader |
| rules: |
| - nonResourceURLs: |
| - /metrics |
| verbs: |
| - get |
| --- |
| apiVersion: rbac.authorization.k8s.io/v1 |
| kind: ClusterRole |
| metadata: |
| name: ns-controller-proxy-role |
| rules: |
| - apiGroups: |
| - authentication.k8s.io |
| resources: |
| - tokenreviews |
| verbs: |
| - create |
| - apiGroups: |
| - authorization.k8s.io |
| resources: |
| - subjectaccessreviews |
| verbs: |
| - create |
| --- |
| apiVersion: rbac.authorization.k8s.io/v1 |
| kind: RoleBinding |
| metadata: |
| name: ns-controller-leader-election-rolebinding |
| namespace: {{ .Release.Namespace }} |
| roleRef: |
| apiGroup: rbac.authorization.k8s.io |
| kind: Role |
| name: ns-controller-leader-election-role |
| subjects: |
| - kind: ServiceAccount |
| name: ns-controller-controller-manager |
| namespace: {{ .Release.Namespace }} |
| --- |
| apiVersion: rbac.authorization.k8s.io/v1 |
| kind: ClusterRoleBinding |
| metadata: |
| name: ns-controller-manager-rolebinding |
| roleRef: |
| apiGroup: rbac.authorization.k8s.io |
| kind: ClusterRole |
| name: ns-controller-manager-role |
| subjects: |
| - kind: ServiceAccount |
| name: ns-controller-controller-manager |
| namespace: {{ .Release.Namespace }} |
| --- |
| apiVersion: rbac.authorization.k8s.io/v1 |
| kind: ClusterRoleBinding |
| metadata: |
| name: ns-controller-proxy-rolebinding |
| roleRef: |
| apiGroup: rbac.authorization.k8s.io |
| kind: ClusterRole |
| name: ns-controller-proxy-role |
| subjects: |
| - kind: ServiceAccount |
| name: ns-controller-controller-manager |
| namespace: {{ .Release.Namespace }} |
| --- |
| apiVersion: v1 |
| data: |
| controller_manager_config.yaml: | |
| apiVersion: controller-runtime.sigs.k8s.io/v1alpha1 |
| kind: ControllerManagerConfig |
| health: |
| healthProbeBindAddress: :8081 |
| metrics: |
| bindAddress: 127.0.0.1:8080 |
| webhook: |
| port: 9443 |
| leaderElection: |
| leaderElect: true |
| resourceName: c1db6143.dodo.cloud |
| # leaderElectionReleaseOnCancel defines if the leader should step down volume |
| # when the Manager ends. This requires the binary to immediately end when the |
| # Manager is stopped, otherwise, this setting is unsafe. Setting this significantly |
| # speeds up voluntary leader transitions as the new leader don't have to wait |
| # LeaseDuration time first. |
| # In the default scaffold provided, the program ends immediately after |
| # the manager stops, so would be fine to enable this option. However, |
| # if you are doing or is intended to do any operation such as perform cleanups |
| # after the manager stops then its usage might be unsafe. |
| # leaderElectionReleaseOnCancel: true |
| kind: ConfigMap |
| metadata: |
| name: ns-controller-manager-config |
| namespace: {{ .Release.Namespace }} |
| --- |
| apiVersion: v1 |
| kind: Service |
| metadata: |
| labels: |
| control-plane: controller-manager |
| name: ns-controller-controller-manager-metrics-service |
| namespace: {{ .Release.Namespace }} |
| spec: |
| ports: |
| - name: https |
| port: 8443 |
| protocol: TCP |
| targetPort: https |
| selector: |
| control-plane: controller-manager |
| --- |
| apiVersion: v1 |
| kind: Service |
| metadata: |
| labels: |
| control-plane: controller-manager |
| name: ns-controller # TODO(gio): move to _helpers |
| namespace: {{ .Release.Namespace }} |
| spec: |
| ports: |
| - name: http |
| port: 80 |
| protocol: TCP |
| targetPort: http |
| selector: |
| control-plane: controller-manager |
| --- |
| apiVersion: apps/v1 |
| kind: Deployment |
| metadata: |
| labels: |
| control-plane: controller-manager |
| name: ns-controller-controller-manager |
| namespace: {{ .Release.Namespace }} |
| spec: |
| replicas: 1 |
| selector: |
| matchLabels: |
| control-plane: controller-manager |
| template: |
| metadata: |
| annotations: |
| kubectl.kubernetes.io/default-container: manager |
| labels: |
| control-plane: controller-manager |
| spec: |
| volumes: |
| - name: zone-configs |
| persistentVolumeClaim: |
| claimName: {{ .Values.volume.claimName }} |
| containers: |
| - args: |
| - --secure-listen-address=0.0.0.0:8443 |
| - --upstream=http://127.0.0.1:8080/ |
| - --logtostderr=true |
| - --v=0 |
| image: {{ .Values.kubeRBACProxy.image.repository }}:{{ .Values.kubeRBACProxy.image.tag }} |
| name: kube-rbac-proxy |
| ports: |
| - containerPort: 8443 |
| name: https |
| protocol: TCP |
| resources: |
| limits: |
| cpu: 500m |
| memory: 128Mi |
| requests: |
| cpu: 5m |
| memory: 64Mi |
| securityContext: |
| allowPrivilegeEscalation: false |
| capabilities: |
| drop: |
| - ALL |
| - args: |
| - --health-probe-bind-address=:8081 |
| - --metrics-bind-address=127.0.0.1:8080 |
| - --leader-elect |
| - --config-dir=/etc/pcloud/dns-zone-configs |
| - --api-port=8082 |
| command: |
| - /manager |
| image: {{ .Values.image.repository }}:{{ .Values.image.tag }} |
| imagePullPolicy: {{ .Values.image.pullPolicy }} |
| volumeMounts: |
| - name: zone-configs |
| mountPath: {{ .Values.volume.mountPath }} |
| livenessProbe: |
| httpGet: |
| path: /healthz |
| port: 8081 |
| initialDelaySeconds: 15 |
| periodSeconds: 20 |
| name: manager |
| ports: |
| - containerPort: 8082 |
| name: http |
| protocol: TCP |
| readinessProbe: |
| httpGet: |
| path: /readyz |
| port: 8081 |
| initialDelaySeconds: 5 |
| periodSeconds: 10 |
| resources: |
| limits: |
| cpu: 500m |
| memory: 128Mi |
| requests: |
| cpu: 10m |
| memory: 64Mi |
| securityContext: |
| allowPrivilegeEscalation: false |
| capabilities: |
| drop: |
| - ALL |
| securityContext: |
| runAsNonRoot: true |
| serviceAccountName: ns-controller-controller-manager |
| terminationGracePeriodSeconds: 10 |