deploy/autoneg.yaml (284 lines of code) (raw):

# Copyright 2021 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. apiVersion: v1 kind: Namespace metadata: labels: app: autoneg control-plane: controller-manager name: autoneg-system --- apiVersion: v1 kind: ServiceAccount metadata: labels: app: autoneg name: autoneg-controller-manager namespace: autoneg-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: labels: app: autoneg name: autoneg-leader-election-role namespace: autoneg-system 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 labels: app: autoneg name: autoneg-manager-role rules: - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - "" resources: - services verbs: - get - list - patch - update - watch - apiGroups: - "" resources: - services/finalizers verbs: - update - apiGroups: - "" resources: - services/status verbs: - get - patch - update --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: app: autoneg name: autoneg-metrics-reader rules: - nonResourceURLs: - /metrics verbs: - get --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: app: autoneg name: autoneg-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: labels: app: autoneg name: autoneg-leader-election-rolebinding namespace: autoneg-system roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: autoneg-leader-election-role subjects: - kind: ServiceAccount name: autoneg-controller-manager namespace: autoneg-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: app: autoneg name: autoneg-manager-rolebinding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: autoneg-manager-role subjects: - kind: ServiceAccount name: autoneg-controller-manager namespace: autoneg-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: app: autoneg name: autoneg-proxy-rolebinding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: autoneg-proxy-role subjects: - kind: ServiceAccount name: autoneg-controller-manager namespace: autoneg-system --- apiVersion: v1 kind: Service metadata: labels: app: autoneg control-plane: controller-manager name: autoneg-controller-manager-metrics-service namespace: autoneg-system spec: ports: - name: https port: 8443 targetPort: https selector: app: autoneg control-plane: controller-manager --- apiVersion: apps/v1 kind: Deployment metadata: labels: app: autoneg control-plane: controller-manager name: autoneg-controller-manager namespace: autoneg-system spec: replicas: 1 selector: matchLabels: app: autoneg control-plane: controller-manager template: metadata: labels: app: autoneg control-plane: controller-manager spec: containers: - args: - --secure-listen-address=0.0.0.0:8443 - --upstream=http://127.0.0.1:8080/ - --logtostderr=true - --v=10 image: gcr.io/kubebuilder/kube-rbac-proxy:v0.16.0 name: kube-rbac-proxy ports: - containerPort: 8443 name: https securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsUser: 65532 runAsGroup: 65532 runAsNonRoot: true seccompProfile: type: RuntimeDefault - args: - --health-probe-bind-address=:8081 - --metrics-bind-address=127.0.0.1:8080 - --leader-elect - --zap-encoder=json command: - /manager image: ghcr.io/googlecloudplatform/gke-autoneg-controller/gke-autoneg-controller:v1.1.0 livenessProbe: httpGet: path: /healthz port: 8081 initialDelaySeconds: 15 periodSeconds: 20 name: manager readinessProbe: httpGet: path: /readyz port: 8081 initialDelaySeconds: 5 periodSeconds: 10 resources: limits: cpu: 100m memory: 30Mi requests: cpu: 100m memory: 20Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsUser: 65532 runAsGroup: 65532 runAsNonRoot: true seccompProfile: type: RuntimeDefault securityContext: runAsUser: 65532 runAsGroup: 65532 runAsNonRoot: true seccompProfile: type: RuntimeDefault nodeSelector: iam.gke.io/gke-metadata-server-enabled: "true" serviceAccountName: autoneg-controller-manager terminationGracePeriodSeconds: 10