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