asm/canonical-service/controller.yaml (339 lines of code) (raw):

apiVersion: v1 kind: Namespace metadata: labels: control-plane: controller-manager annotations: gke.io/cluster: "gke://PROJECT_ID/us-central1-c/asm-cluster" # {"$ref":"#/definitions/io.k8s.cli.substitutions.gkeio-cluster"} name: asm-system --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: gke.io/cluster: "gke://PROJECT_ID/us-central1-c/asm-cluster" # {"$ref":"#/definitions/io.k8s.cli.substitutions.gkeio-cluster"} controller-gen.kubebuilder.io/version: (unknown) creationTimestamp: null name: canonicalservices.anthos.cloud.google.com spec: group: anthos.cloud.google.com names: kind: CanonicalService listKind: CanonicalServiceList plural: canonicalservices singular: canonicalservice scope: Namespaced versions: - name: v1beta1 schema: openAPIV3Schema: description: CanonicalService is the Schema for the canonicalservices API properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: description: CanonicalServiceSpec defines the desired state of CanonicalService properties: description: description: Description of the service maxLength: 500 minLength: 0 type: string displayName: description: Human-friendly name of the service maxLength: 100 minLength: 0 type: string type: object status: description: CanonicalServiceStatus defines the observed state of CanonicalService properties: inactiveSince: description: The time that the service was set to Inactive (if the service is Active, will be empty) format: date-time type: string resourceTypes: description: Array of the resource types the service is currently found on items: description: CanonicalServiceResourceType represents the types of resource a Canonical Service has been run on. It includes information about whether the resource is currently in use by the service, so that we can track resources that might still have valuable metrics but are not active. properties: inactiveSince: format: date-time type: string name: description: CanonicalServiceResourceTypeName is the name of the resource type enum: - Pod - WorkloadEntry type: string state: description: CanonicalServiceState tells us whether the service is currently Active (aka there is at least one Pod or WorkloadEntry running this service) or Inactive. enum: - Active - Inactive - Error type: string required: - name - state type: object type: array resourceVersionWhenBecameInactive: description: The resource version of the Canonical Service resource when it was marked Inactive type: string state: description: Current state of the service enum: - Active - Inactive - Error type: string required: - state type: object type: object served: true storage: true status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: canonical-service-leader-election-role namespace: asm-system annotations: gke.io/cluster: "gke://PROJECT_ID/us-central1-c/asm-cluster" # {"$ref":"#/definitions/io.k8s.cli.substitutions.gkeio-cluster"} rules: - apiGroups: - "" resources: - configmaps verbs: - get - list - watch - create - update - patch - delete - apiGroups: - "" resources: - configmaps/status verbs: - get - update - patch - apiGroups: - "" resources: - events verbs: - create --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: null name: canonical-service-manager-role annotations: gke.io/cluster: "gke://PROJECT_ID/us-central1-c/asm-cluster" # {"$ref":"#/definitions/io.k8s.cli.substitutions.gkeio-cluster"} rules: - apiGroups: - "" resources: - pods verbs: - get - list - watch - apiGroups: - anthos.cloud.google.com resources: - canonicalservices verbs: - create - delete - get - list - patch - update - watch - apiGroups: - anthos.cloud.google.com resources: - canonicalservices/status verbs: - get - patch - update - apiGroups: - networking.istio.io resources: - workloadentries verbs: - get - list - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: canonical-service-metrics-reader annotations: gke.io/cluster: "gke://PROJECT_ID/us-central1-c/asm-cluster" # {"$ref":"#/definitions/io.k8s.cli.substitutions.gkeio-cluster"} rules: - nonResourceURLs: - /metrics verbs: - get --- apiVersion: v1 kind: ServiceAccount metadata: name: canonical-service-account namespace: asm-system annotations: gke.io/cluster: "gke://PROJECT_ID/us-central1-c/asm-cluster" # {"$ref":"#/definitions/io.k8s.cli.substitutions.gkeio-cluster"} --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: canonical-service-leader-election-rolebinding namespace: asm-system annotations: gke.io/cluster: "gke://PROJECT_ID/us-central1-c/asm-cluster" # {"$ref":"#/definitions/io.k8s.cli.substitutions.gkeio-cluster"} roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: canonical-service-leader-election-role subjects: - kind: ServiceAccount name: canonical-service-account namespace: asm-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: canonical-service-manager-rolebinding annotations: gke.io/cluster: "gke://PROJECT_ID/us-central1-c/asm-cluster" # {"$ref":"#/definitions/io.k8s.cli.substitutions.gkeio-cluster"} roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: canonical-service-manager-role subjects: - kind: ServiceAccount name: canonical-service-account namespace: asm-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: canonical-service-proxy-rolebinding annotations: gke.io/cluster: "gke://PROJECT_ID/us-central1-c/asm-cluster" # {"$ref":"#/definitions/io.k8s.cli.substitutions.gkeio-cluster"} roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: canonical-service-proxy-role subjects: - kind: ServiceAccount name: canonical-service-account namespace: asm-system --- apiVersion: v1 kind: Service metadata: labels: control-plane: controller-manager name: canonical-service-controller-manager-metrics-service namespace: asm-system annotations: gke.io/cluster: "gke://PROJECT_ID/us-central1-c/asm-cluster" # {"$ref":"#/definitions/io.k8s.cli.substitutions.gkeio-cluster"} spec: ports: - name: https port: 8443 targetPort: https selector: control-plane: controller-manager --- apiVersion: apps/v1 kind: Deployment metadata: labels: control-plane: controller-manager name: canonical-service-controller-manager namespace: asm-system annotations: gke.io/cluster: "gke://PROJECT_ID/us-central1-c/asm-cluster" # {"$ref":"#/definitions/io.k8s.cli.substitutions.gkeio-cluster"} spec: replicas: 1 selector: matchLabels: control-plane: controller-manager template: metadata: labels: control-plane: controller-manager spec: serviceAccountName: canonical-service-account 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.15.0 name: kube-rbac-proxy resources: limits: cpu: 100m memory: 300Mi requests: cpu: 100m memory: 20Mi ports: - containerPort: 8443 name: https - args: - --metrics-addr=127.0.0.1:8080 - --enable-leader-election command: - /manager image: gke.gcr.io/asm/canonical-service-controller:1.22.3-asm.1 # {"$ref":"#/definitions/io.k8s.cli.setters.anthos.servicemesh.canonicalServiceHub"} name: manager resources: limits: cpu: 100m memory: 300Mi requests: cpu: 100m memory: 20Mi terminationGracePeriodSeconds: 10