Created
October 28, 2020 15:37
-
-
Save displague/57e00e416fa49fdad11051f7642ee150 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
apiVersion: apps/v1 | |
kind: Deployment | |
metadata: | |
name: packet-cloud-controller-manager | |
namespace: kube-system | |
labels: | |
app: packet-cloud-controller-manager | |
spec: | |
replicas: 1 | |
selector: | |
matchLabels: | |
app: packet-cloud-controller-manager | |
template: | |
metadata: | |
labels: | |
app: packet-cloud-controller-manager | |
annotations: | |
scheduler.alpha.kubernetes.io/critical-pod: '' | |
spec: | |
dnsPolicy: Default | |
hostNetwork: true | |
serviceAccountName: cloud-controller-manager | |
tolerations: | |
# this taint is set by all kubelets running `--cloud-provider=external` | |
# so we should tolerate it to schedule the packet ccm | |
- key: "node.cloudprovider.kubernetes.io/uninitialized" | |
value: "true" | |
effect: "NoSchedule" | |
- key: "CriticalAddonsOnly" | |
operator: "Exists" | |
# cloud controller manager should be able to run on masters | |
- key: "node-role.kubernetes.io/master" | |
effect: NoSchedule | |
containers: | |
- image: deitch/packet-ccm:latest | |
name: packet-cloud-controller-manager | |
command: | |
- "./packet-cloud-controller-manager" | |
- "--cloud-provider=packet" | |
- "--leader-elect=false" | |
- "--allow-untagged-cloud=true" | |
- "--authentication-skip-lookup=true" | |
- "--provider-config=/etc/cloud-sa/cloud-sa.json" | |
resources: | |
requests: | |
cpu: 100m | |
memory: 50Mi | |
volumeMounts: | |
- name: cloud-sa-volume | |
readOnly: true | |
mountPath: "/etc/cloud-sa" | |
volumes: | |
- name: cloud-sa-volume | |
secret: | |
secretName: packet-cloud-config | |
--- | |
apiVersion: v1 | |
kind: ServiceAccount | |
metadata: | |
name: cloud-controller-manager | |
namespace: kube-system | |
--- | |
apiVersion: rbac.authorization.k8s.io/v1 | |
kind: ClusterRole | |
metadata: | |
annotations: | |
rbac.authorization.kubernetes.io/autoupdate: "true" | |
name: system:cloud-controller-manager | |
rules: | |
- apiGroups: | |
# reason: so ccm can read and update nodes and annotations | |
- "" | |
resources: | |
- nodes | |
verbs: | |
- '*' | |
- apiGroups: | |
# reason: so ccm can update the status of nodes | |
- "" | |
resources: | |
- nodes/status | |
verbs: | |
- patch | |
- apiGroups: | |
# reason: so ccm can manage services for loadbalancer | |
- "" | |
resources: | |
- services | |
verbs: | |
- get | |
- list | |
- patch | |
- update | |
- watch | |
- apiGroups: | |
# reason: so ccm can update the status of services for loadbalancer | |
- "" | |
resources: | |
- services/status | |
verbs: | |
- list | |
- patch | |
- update | |
- watch | |
- apiGroups: | |
# reason: so ccm can read and update configmap/metallb-system:config | |
- "" | |
resources: | |
- configmaps | |
verbs: | |
- create | |
- get | |
- list | |
- watch | |
- update | |
- patch | |
--- | |
kind: ClusterRoleBinding | |
apiVersion: rbac.authorization.k8s.io/v1 | |
metadata: | |
name: system:cloud-controller-manager | |
roleRef: | |
apiGroup: rbac.authorization.k8s.io | |
kind: ClusterRole | |
name: system:cloud-controller-manager | |
subjects: | |
- kind: ServiceAccount | |
name: cloud-controller-manager | |
namespace: kube-system | |
apiVersion: v1 | |
kind: Namespace | |
metadata: | |
labels: | |
app: metallb | |
name: metallb-system | |
--- | |
apiVersion: policy/v1beta1 | |
kind: PodSecurityPolicy | |
metadata: | |
labels: | |
app: metallb | |
name: speaker | |
namespace: metallb-system | |
spec: | |
allowPrivilegeEscalation: false | |
allowedCapabilities: | |
- NET_ADMIN | |
- NET_RAW | |
- SYS_ADMIN | |
fsGroup: | |
rule: RunAsAny | |
hostNetwork: true | |
hostPorts: | |
- max: 7472 | |
min: 7472 | |
privileged: true | |
runAsUser: | |
rule: RunAsAny | |
seLinux: | |
rule: RunAsAny | |
supplementalGroups: | |
rule: RunAsAny | |
volumes: | |
- '*' | |
--- | |
apiVersion: v1 | |
kind: ServiceAccount | |
metadata: | |
labels: | |
app: metallb | |
name: controller | |
namespace: metallb-system | |
--- | |
apiVersion: v1 | |
kind: ServiceAccount | |
metadata: | |
labels: | |
app: metallb | |
name: speaker | |
namespace: metallb-system | |
--- | |
apiVersion: rbac.authorization.k8s.io/v1 | |
kind: ClusterRole | |
metadata: | |
labels: | |
app: metallb | |
name: metallb-system:controller | |
rules: | |
- apiGroups: | |
- '' | |
resources: | |
- services | |
verbs: | |
- get | |
- list | |
- patch | |
- update | |
- watch | |
- apiGroups: | |
- '' | |
resources: | |
- services/status | |
verbs: | |
- update | |
- apiGroups: | |
- '' | |
resources: | |
- events | |
verbs: | |
- create | |
- patch | |
--- | |
apiVersion: rbac.authorization.k8s.io/v1 | |
kind: ClusterRole | |
metadata: | |
labels: | |
app: metallb | |
name: metallb-system:speaker | |
rules: | |
- apiGroups: | |
- '' | |
resources: | |
- services | |
- endpoints | |
- nodes | |
verbs: | |
- get | |
- list | |
- watch | |
- apiGroups: | |
- '' | |
resources: | |
- events | |
verbs: | |
- create | |
- patch | |
- apiGroups: | |
- extensions | |
resourceNames: | |
- speaker | |
resources: | |
- podsecuritypolicies | |
verbs: | |
- use | |
--- | |
apiVersion: rbac.authorization.k8s.io/v1 | |
kind: Role | |
metadata: | |
labels: | |
app: metallb | |
name: config-watcher | |
namespace: metallb-system | |
rules: | |
- apiGroups: | |
- '' | |
resources: | |
- configmaps | |
verbs: | |
- get | |
- list | |
- watch | |
--- | |
apiVersion: rbac.authorization.k8s.io/v1 | |
kind: ClusterRoleBinding | |
metadata: | |
labels: | |
app: metallb | |
name: metallb-system:controller | |
roleRef: | |
apiGroup: rbac.authorization.k8s.io | |
kind: ClusterRole | |
name: metallb-system:controller | |
subjects: | |
- kind: ServiceAccount | |
name: controller | |
namespace: metallb-system | |
--- | |
apiVersion: rbac.authorization.k8s.io/v1 | |
kind: ClusterRoleBinding | |
metadata: | |
labels: | |
app: metallb | |
name: metallb-system:speaker | |
roleRef: | |
apiGroup: rbac.authorization.k8s.io | |
kind: ClusterRole | |
name: metallb-system:speaker | |
subjects: | |
- kind: ServiceAccount | |
name: speaker | |
namespace: metallb-system | |
--- | |
apiVersion: rbac.authorization.k8s.io/v1 | |
kind: RoleBinding | |
metadata: | |
labels: | |
app: metallb | |
name: config-watcher | |
namespace: metallb-system | |
roleRef: | |
apiGroup: rbac.authorization.k8s.io | |
kind: Role | |
name: config-watcher | |
subjects: | |
- kind: ServiceAccount | |
name: controller | |
- kind: ServiceAccount | |
name: speaker | |
--- | |
apiVersion: apps/v1 | |
kind: DaemonSet | |
metadata: | |
labels: | |
app: metallb | |
component: speaker | |
name: speaker | |
namespace: metallb-system | |
spec: | |
selector: | |
matchLabels: | |
app: metallb | |
component: speaker | |
template: | |
metadata: | |
annotations: | |
prometheus.io/port: '7472' | |
prometheus.io/scrape: 'true' | |
labels: | |
app: metallb | |
component: speaker | |
spec: | |
containers: | |
- args: | |
- --port=7472 | |
- --config=config | |
env: | |
- name: METALLB_NODE_NAME | |
valueFrom: | |
fieldRef: | |
fieldPath: spec.nodeName | |
- name: METALLB_HOST | |
valueFrom: | |
fieldRef: | |
fieldPath: status.hostIP | |
image: metallb/speaker:v0.8.2 | |
imagePullPolicy: IfNotPresent | |
name: speaker | |
ports: | |
- containerPort: 7472 | |
name: monitoring | |
resources: | |
limits: | |
cpu: 100m | |
memory: 100Mi | |
securityContext: | |
allowPrivilegeEscalation: false | |
capabilities: | |
add: | |
- NET_ADMIN | |
- NET_RAW | |
- SYS_ADMIN | |
drop: | |
- ALL | |
readOnlyRootFilesystem: true | |
hostNetwork: true | |
nodeSelector: | |
beta.kubernetes.io/os: linux | |
serviceAccountName: speaker | |
terminationGracePeriodSeconds: 0 | |
tolerations: | |
- effect: NoSchedule | |
key: node-role.kubernetes.io/master | |
--- | |
apiVersion: apps/v1 | |
kind: Deployment | |
metadata: | |
labels: | |
app: metallb | |
component: controller | |
name: controller | |
namespace: metallb-system | |
spec: | |
revisionHistoryLimit: 3 | |
selector: | |
matchLabels: | |
app: metallb | |
component: controller | |
template: | |
metadata: | |
annotations: | |
prometheus.io/port: '7472' | |
prometheus.io/scrape: 'true' | |
labels: | |
app: metallb | |
component: controller | |
spec: | |
containers: | |
- args: | |
- --port=7472 | |
- --config=config | |
image: metallb/controller:v0.8.2 | |
imagePullPolicy: IfNotPresent | |
name: controller | |
ports: | |
- containerPort: 7472 | |
name: monitoring | |
resources: | |
limits: | |
cpu: 100m | |
memory: 100Mi | |
securityContext: | |
allowPrivilegeEscalation: false | |
capabilities: | |
drop: | |
- all | |
readOnlyRootFilesystem: true | |
nodeSelector: | |
beta.kubernetes.io/os: linux | |
securityContext: | |
runAsNonRoot: true | |
runAsUser: 65534 | |
serviceAccountName: controller | |
terminationGracePeriodSeconds: 0 | |
--- | |
apiVersion: v1 | |
kind: ConfigMap | |
metadata: | |
namespace: metallb-system | |
name: config | |
data: | |
config: | | |
peers: [] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment