| @ -0,0 +1,29 @@ | |||
| kubectl create -f recommended.yaml | |||
| kubectl -n kubernetes-dashboard edit service kubernetes-dashboard | |||
| kubectl -n kubernetes-dashboard get service kubernetes-dashboard | |||
| cat <<EOF | kubectl apply -f - | |||
| apiVersion: v1 | |||
| kind: ServiceAccount | |||
| metadata: | |||
| name: admin-user | |||
| namespace: kubernetes-dashboard | |||
| EOF | |||
| cat <<EOF | kubectl apply -f - | |||
| apiVersion: rbac.authorization.k8s.io/v1 | |||
| kind: ClusterRoleBinding | |||
| metadata: | |||
| name: admin-user | |||
| roleRef: | |||
| apiGroup: rbac.authorization.k8s.io | |||
| kind: ClusterRole | |||
| name: cluster-admin | |||
| subjects: | |||
| - kind: ServiceAccount | |||
| name: admin-user | |||
| namespace: kubernetes-dashboard | |||
| EOF | |||
| kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}" | |||
| @ -0,0 +1,302 @@ | |||
| # Copyright 2017 The Kubernetes Authors. | |||
| # | |||
| # 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: | |||
| name: kubernetes-dashboard | |||
| --- | |||
| apiVersion: v1 | |||
| kind: ServiceAccount | |||
| metadata: | |||
| labels: | |||
| k8s-app: kubernetes-dashboard | |||
| name: kubernetes-dashboard | |||
| namespace: kubernetes-dashboard | |||
| --- | |||
| kind: Service | |||
| apiVersion: v1 | |||
| metadata: | |||
| labels: | |||
| k8s-app: kubernetes-dashboard | |||
| name: kubernetes-dashboard | |||
| namespace: kubernetes-dashboard | |||
| spec: | |||
| ports: | |||
| - port: 443 | |||
| targetPort: 8443 | |||
| selector: | |||
| k8s-app: kubernetes-dashboard | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Secret | |||
| metadata: | |||
| labels: | |||
| k8s-app: kubernetes-dashboard | |||
| name: kubernetes-dashboard-certs | |||
| namespace: kubernetes-dashboard | |||
| type: Opaque | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Secret | |||
| metadata: | |||
| labels: | |||
| k8s-app: kubernetes-dashboard | |||
| name: kubernetes-dashboard-csrf | |||
| namespace: kubernetes-dashboard | |||
| type: Opaque | |||
| data: | |||
| csrf: "" | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Secret | |||
| metadata: | |||
| labels: | |||
| k8s-app: kubernetes-dashboard | |||
| name: kubernetes-dashboard-key-holder | |||
| namespace: kubernetes-dashboard | |||
| type: Opaque | |||
| --- | |||
| kind: ConfigMap | |||
| apiVersion: v1 | |||
| metadata: | |||
| labels: | |||
| k8s-app: kubernetes-dashboard | |||
| name: kubernetes-dashboard-settings | |||
| namespace: kubernetes-dashboard | |||
| --- | |||
| kind: Role | |||
| apiVersion: rbac.authorization.k8s.io/v1 | |||
| metadata: | |||
| labels: | |||
| k8s-app: kubernetes-dashboard | |||
| name: kubernetes-dashboard | |||
| namespace: kubernetes-dashboard | |||
| rules: | |||
| # Allow Dashboard to get, update and delete Dashboard exclusive secrets. | |||
| - apiGroups: [""] | |||
| resources: ["secrets"] | |||
| resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs", "kubernetes-dashboard-csrf"] | |||
| verbs: ["get", "update", "delete"] | |||
| # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map. | |||
| - apiGroups: [""] | |||
| resources: ["configmaps"] | |||
| resourceNames: ["kubernetes-dashboard-settings"] | |||
| verbs: ["get", "update"] | |||
| # Allow Dashboard to get metrics. | |||
| - apiGroups: [""] | |||
| resources: ["services"] | |||
| resourceNames: ["heapster", "dashboard-metrics-scraper"] | |||
| verbs: ["proxy"] | |||
| - apiGroups: [""] | |||
| resources: ["services/proxy"] | |||
| resourceNames: ["heapster", "http:heapster:", "https:heapster:", "dashboard-metrics-scraper", "http:dashboard-metrics-scraper"] | |||
| verbs: ["get"] | |||
| --- | |||
| kind: ClusterRole | |||
| apiVersion: rbac.authorization.k8s.io/v1 | |||
| metadata: | |||
| labels: | |||
| k8s-app: kubernetes-dashboard | |||
| name: kubernetes-dashboard | |||
| rules: | |||
| # Allow Metrics Scraper to get metrics from the Metrics server | |||
| - apiGroups: ["metrics.k8s.io"] | |||
| resources: ["pods", "nodes"] | |||
| verbs: ["get", "list", "watch"] | |||
| --- | |||
| apiVersion: rbac.authorization.k8s.io/v1 | |||
| kind: RoleBinding | |||
| metadata: | |||
| labels: | |||
| k8s-app: kubernetes-dashboard | |||
| name: kubernetes-dashboard | |||
| namespace: kubernetes-dashboard | |||
| roleRef: | |||
| apiGroup: rbac.authorization.k8s.io | |||
| kind: Role | |||
| name: kubernetes-dashboard | |||
| subjects: | |||
| - kind: ServiceAccount | |||
| name: kubernetes-dashboard | |||
| namespace: kubernetes-dashboard | |||
| --- | |||
| apiVersion: rbac.authorization.k8s.io/v1 | |||
| kind: ClusterRoleBinding | |||
| metadata: | |||
| name: kubernetes-dashboard | |||
| roleRef: | |||
| apiGroup: rbac.authorization.k8s.io | |||
| kind: ClusterRole | |||
| name: kubernetes-dashboard | |||
| subjects: | |||
| - kind: ServiceAccount | |||
| name: kubernetes-dashboard | |||
| namespace: kubernetes-dashboard | |||
| --- | |||
| kind: Deployment | |||
| apiVersion: apps/v1 | |||
| metadata: | |||
| labels: | |||
| k8s-app: kubernetes-dashboard | |||
| name: kubernetes-dashboard | |||
| namespace: kubernetes-dashboard | |||
| spec: | |||
| replicas: 1 | |||
| revisionHistoryLimit: 10 | |||
| selector: | |||
| matchLabels: | |||
| k8s-app: kubernetes-dashboard | |||
| template: | |||
| metadata: | |||
| labels: | |||
| k8s-app: kubernetes-dashboard | |||
| spec: | |||
| containers: | |||
| - name: kubernetes-dashboard | |||
| image: kubernetesui/dashboard:v2.2.0 | |||
| imagePullPolicy: Always | |||
| ports: | |||
| - containerPort: 8443 | |||
| protocol: TCP | |||
| args: | |||
| - --auto-generate-certificates | |||
| - --namespace=kubernetes-dashboard | |||
| # Uncomment the following line to manually specify Kubernetes API server Host | |||
| # If not specified, Dashboard will attempt to auto discover the API server and connect | |||
| # to it. Uncomment only if the default does not work. | |||
| # - --apiserver-host=http://my-address:port | |||
| volumeMounts: | |||
| - name: kubernetes-dashboard-certs | |||
| mountPath: /certs | |||
| # Create on-disk volume to store exec logs | |||
| - mountPath: /tmp | |||
| name: tmp-volume | |||
| livenessProbe: | |||
| httpGet: | |||
| scheme: HTTPS | |||
| path: / | |||
| port: 8443 | |||
| initialDelaySeconds: 30 | |||
| timeoutSeconds: 30 | |||
| securityContext: | |||
| allowPrivilegeEscalation: false | |||
| readOnlyRootFilesystem: true | |||
| runAsUser: 1001 | |||
| runAsGroup: 2001 | |||
| volumes: | |||
| - name: kubernetes-dashboard-certs | |||
| secret: | |||
| secretName: kubernetes-dashboard-certs | |||
| - name: tmp-volume | |||
| emptyDir: {} | |||
| serviceAccountName: kubernetes-dashboard | |||
| nodeSelector: | |||
| "kubernetes.io/os": linux | |||
| # Comment the following tolerations if Dashboard must not be deployed on master | |||
| tolerations: | |||
| - key: node-role.kubernetes.io/master | |||
| effect: NoSchedule | |||
| --- | |||
| kind: Service | |||
| apiVersion: v1 | |||
| metadata: | |||
| labels: | |||
| k8s-app: dashboard-metrics-scraper | |||
| name: dashboard-metrics-scraper | |||
| namespace: kubernetes-dashboard | |||
| spec: | |||
| ports: | |||
| - port: 8000 | |||
| targetPort: 8000 | |||
| selector: | |||
| k8s-app: dashboard-metrics-scraper | |||
| --- | |||
| kind: Deployment | |||
| apiVersion: apps/v1 | |||
| metadata: | |||
| labels: | |||
| k8s-app: dashboard-metrics-scraper | |||
| name: dashboard-metrics-scraper | |||
| namespace: kubernetes-dashboard | |||
| spec: | |||
| replicas: 1 | |||
| revisionHistoryLimit: 10 | |||
| selector: | |||
| matchLabels: | |||
| k8s-app: dashboard-metrics-scraper | |||
| template: | |||
| metadata: | |||
| labels: | |||
| k8s-app: dashboard-metrics-scraper | |||
| annotations: | |||
| seccomp.security.alpha.kubernetes.io/pod: 'runtime/default' | |||
| spec: | |||
| containers: | |||
| - name: dashboard-metrics-scraper | |||
| image: kubernetesui/metrics-scraper:v1.0.6 | |||
| ports: | |||
| - containerPort: 8000 | |||
| protocol: TCP | |||
| livenessProbe: | |||
| httpGet: | |||
| scheme: HTTP | |||
| path: / | |||
| port: 8000 | |||
| initialDelaySeconds: 30 | |||
| timeoutSeconds: 30 | |||
| volumeMounts: | |||
| - mountPath: /tmp | |||
| name: tmp-volume | |||
| securityContext: | |||
| allowPrivilegeEscalation: false | |||
| readOnlyRootFilesystem: true | |||
| runAsUser: 1001 | |||
| runAsGroup: 2001 | |||
| serviceAccountName: kubernetes-dashboard | |||
| nodeSelector: | |||
| "kubernetes.io/os": linux | |||
| # Comment the following tolerations if Dashboard must not be deployed on master | |||
| tolerations: | |||
| - key: node-role.kubernetes.io/master | |||
| effect: NoSchedule | |||
| volumes: | |||
| - name: tmp-volume | |||
| emptyDir: {} | |||
| @ -0,0 +1,12 @@ | |||
| apiVersion: v1 | |||
| kind: ConfigMap | |||
| metadata: | |||
| namespace: metallb-syste | |||
| name: config | |||
| data: | |||
| config: | | |||
| address-pools: | |||
| - name: address-pool-1 | |||
| protocol: layer2 | |||
| addresses: | |||
| - 192.168.100.201-192.168.100.254 | |||
| @ -0,0 +1,394 @@ | |||
| apiVersion: policy/v1beta1 | |||
| kind: PodSecurityPolicy | |||
| metadata: | |||
| labels: | |||
| app: metallb | |||
| name: controller | |||
| namespace: metallb-system | |||
| spec: | |||
| allowPrivilegeEscalation: false | |||
| allowedCapabilities: [] | |||
| allowedHostPaths: [] | |||
| defaultAddCapabilities: [] | |||
| defaultAllowPrivilegeEscalation: false | |||
| fsGroup: | |||
| ranges: | |||
| - max: 65535 | |||
| min: 1 | |||
| rule: MustRunAs | |||
| hostIPC: false | |||
| hostNetwork: false | |||
| hostPID: false | |||
| privileged: false | |||
| readOnlyRootFilesystem: true | |||
| requiredDropCapabilities: | |||
| - ALL | |||
| runAsUser: | |||
| ranges: | |||
| - max: 65535 | |||
| min: 1 | |||
| rule: MustRunAs | |||
| seLinux: | |||
| rule: RunAsAny | |||
| supplementalGroups: | |||
| ranges: | |||
| - max: 65535 | |||
| min: 1 | |||
| rule: MustRunAs | |||
| volumes: | |||
| - configMap | |||
| - secret | |||
| - emptyDir | |||
| --- | |||
| apiVersion: policy/v1beta1 | |||
| kind: PodSecurityPolicy | |||
| metadata: | |||
| labels: | |||
| app: metallb | |||
| name: speaker | |||
| namespace: metallb-system | |||
| spec: | |||
| allowPrivilegeEscalation: false | |||
| allowedCapabilities: | |||
| - NET_ADMIN | |||
| - NET_RAW | |||
| - SYS_ADMIN | |||
| allowedHostPaths: [] | |||
| defaultAddCapabilities: [] | |||
| defaultAllowPrivilegeEscalation: false | |||
| fsGroup: | |||
| rule: RunAsAny | |||
| hostIPC: false | |||
| hostNetwork: true | |||
| hostPID: false | |||
| hostPorts: | |||
| - max: 7472 | |||
| min: 7472 | |||
| privileged: true | |||
| readOnlyRootFilesystem: true | |||
| requiredDropCapabilities: | |||
| - ALL | |||
| runAsUser: | |||
| rule: RunAsAny | |||
| seLinux: | |||
| rule: RunAsAny | |||
| supplementalGroups: | |||
| rule: RunAsAny | |||
| volumes: | |||
| - configMap | |||
| - secret | |||
| - emptyDir | |||
| --- | |||
| 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 | |||
| - watch | |||
| - update | |||
| - apiGroups: | |||
| - '' | |||
| resources: | |||
| - services/status | |||
| verbs: | |||
| - update | |||
| - apiGroups: | |||
| - '' | |||
| resources: | |||
| - events | |||
| verbs: | |||
| - create | |||
| - patch | |||
| - apiGroups: | |||
| - policy | |||
| resourceNames: | |||
| - controller | |||
| resources: | |||
| - podsecuritypolicies | |||
| verbs: | |||
| - use | |||
| --- | |||
| 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: | |||
| - policy | |||
| 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: Role | |||
| metadata: | |||
| labels: | |||
| app: metallb | |||
| name: pod-lister | |||
| namespace: metallb-system | |||
| rules: | |||
| - apiGroups: | |||
| - '' | |||
| resources: | |||
| - pods | |||
| verbs: | |||
| - list | |||
| --- | |||
| 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: rbac.authorization.k8s.io/v1 | |||
| kind: RoleBinding | |||
| metadata: | |||
| labels: | |||
| app: metallb | |||
| name: pod-lister | |||
| namespace: metallb-system | |||
| roleRef: | |||
| apiGroup: rbac.authorization.k8s.io | |||
| kind: Role | |||
| name: pod-lister | |||
| subjects: | |||
| - 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 | |||
| - name: METALLB_ML_BIND_ADDR | |||
| valueFrom: | |||
| fieldRef: | |||
| fieldPath: status.podIP | |||
| # needed when another software is also using memberlist / port 7946 | |||
| #- name: METALLB_ML_BIND_PORT | |||
| # value: "7946" | |||
| - name: METALLB_ML_LABELS | |||
| value: "app=metallb,component=speaker" | |||
| - name: METALLB_ML_NAMESPACE | |||
| valueFrom: | |||
| fieldRef: | |||
| fieldPath: metadata.namespace | |||
| - name: METALLB_ML_SECRET_KEY | |||
| valueFrom: | |||
| secretKeyRef: | |||
| name: memberlist | |||
| key: secretkey | |||
| image: metallb/speaker:v0.9.6 | |||
| imagePullPolicy: Always | |||
| 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: | |||
| kubernetes.io/os: linux | |||
| serviceAccountName: speaker | |||
| terminationGracePeriodSeconds: 2 | |||
| 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.9.6 | |||
| imagePullPolicy: Always | |||
| name: controller | |||
| ports: | |||
| - containerPort: 7472 | |||
| name: monitoring | |||
| resources: | |||
| limits: | |||
| cpu: 100m | |||
| memory: 100Mi | |||
| securityContext: | |||
| allowPrivilegeEscalation: false | |||
| capabilities: | |||
| drop: | |||
| - all | |||
| readOnlyRootFilesystem: true | |||
| nodeSelector: | |||
| kubernetes.io/os: linux | |||
| securityContext: | |||
| runAsNonRoot: true | |||
| runAsUser: 65534 | |||
| serviceAccountName: controller | |||
| terminationGracePeriodSeconds: 0 | |||
| @ -0,0 +1,6 @@ | |||
| apiVersion: v1 | |||
| kind: Namespace | |||
| metadata: | |||
| name: metallb-system | |||
| labels: | |||
| app: metallb | |||
| @ -0,0 +1,20 @@ | |||
| apiVersion: v1 | |||
| kind: Pod | |||
| metadata: | |||
| name: nginx-example | |||
| labels: | |||
| app: nginx | |||
| spec: | |||
| containers: | |||
| - name: nginx | |||
| image: linuxserver/nginx | |||
| ports: | |||
| - containerPort: 80 | |||
| name: "nginx-http" | |||
| volumeMounts: | |||
| - name: nginx-www-folder | |||
| mountPath: /config/www | |||
| volumes: | |||
| - name: nginx-www-folder | |||
| persistentVolumeClaim: | |||
| claimName: nginx-pv-claim | |||
| @ -0,0 +1,12 @@ | |||
| apiVersion: v1 | |||
| kind: PersistentVolume | |||
| metadata: | |||
| name: www-nginx-folder | |||
| spec: | |||
| capacity: | |||
| storage: 2Gi | |||
| accessModes: | |||
| - ReadWriteMany | |||
| nfs: | |||
| server: haproxy-a-01 | |||
| path: "/media/discodatos/nginx" | |||
| @ -0,0 +1,13 @@ | |||
| apiVersion: v1 | |||
| kind: PersistentVolumeClaim | |||
| metadata: | |||
| name: nginx-pv-claim | |||
| labels: | |||
| app: nginx | |||
| spec: | |||
| accessModes: | |||
| - ReadWriteMany | |||
| storageClassName: "" | |||
| resources: | |||
| requests: | |||
| storage: 2Gi | |||
| @ -0,0 +1,11 @@ | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
| name: nginx-lb | |||
| spec: | |||
| type: LoadBalancer | |||
| ports: | |||
| - port: 80 | |||
| targetPort: nginx-http | |||
| selector: | |||
| app: nginx | |||
| @ -0,0 +1,13 @@ | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
| name: nginx-example | |||
| spec: | |||
| type: NodePort | |||
| ports: | |||
| - name: http | |||
| port: 80 | |||
| nodePort: 30080 | |||
| targetPort: nginx-http | |||
| selector: | |||
| app: nginx | |||
| @ -0,0 +1 @@ | |||
| # k8s-cluster-projects | |||
| @ -0,0 +1,7 @@ | |||
| secretGenerator: | |||
| - name: mysql-pass | |||
| literals: | |||
| - password=Dsa-0213 | |||
| resources: | |||
| - mysql-deployment.yaml | |||
| - wordpress-deployment.yaml | |||
| @ -0,0 +1,65 @@ | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
| name: wordpress-mysql | |||
| labels: | |||
| app: wordpress | |||
| spec: | |||
| ports: | |||
| - port: 3306 | |||
| selector: | |||
| app: wordpress | |||
| tier: mysql | |||
| clusterIP: None | |||
| --- | |||
| apiVersion: v1 | |||
| kind: PersistentVolumeClaim | |||
| metadata: | |||
| name: mysql-pv-claim | |||
| labels: | |||
| app: wordpress | |||
| spec: | |||
| accessModes: | |||
| - ReadWriteMany | |||
| resources: | |||
| requests: | |||
| storage: 20Gi | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
| name: wordpress-mysql | |||
| labels: | |||
| app: wordpress | |||
| spec: | |||
| selector: | |||
| matchLabels: | |||
| app: wordpress | |||
| tier: mysql | |||
| strategy: | |||
| type: Recreate | |||
| template: | |||
| metadata: | |||
| labels: | |||
| app: wordpress | |||
| tier: mysql | |||
| spec: | |||
| containers: | |||
| - image: mysql:5.6 | |||
| name: mysql | |||
| env: | |||
| - name: MYSQL_ROOT_PASSWORD | |||
| valueFrom: | |||
| secretKeyRef: | |||
| name: mysql-pass | |||
| key: password | |||
| ports: | |||
| - containerPort: 3306 | |||
| name: mysql | |||
| volumeMounts: | |||
| - name: mysql-persistent-storage | |||
| mountPath: /var/lib/mysql | |||
| volumes: | |||
| - name: mysql-persistent-storage | |||
| persistentVolumeClaim: | |||
| claimName: mysql-pv-claim | |||
| @ -0,0 +1,12 @@ | |||
| apiVersion: v1 | |||
| kind: PersistentVolume | |||
| metadata: | |||
| name: wp-data | |||
| spec: | |||
| capacity: | |||
| storage: 20Gi | |||
| accessModes: | |||
| - ReadWriteMany | |||
| nfs: | |||
| server: haproxy-a-01 | |||
| path: "/media/discodatos/wp-data" | |||
| @ -0,0 +1,12 @@ | |||
| apiVersion: v1 | |||
| kind: PersistentVolume | |||
| metadata: | |||
| name: wp-folder | |||
| spec: | |||
| capacity: | |||
| storage: 20Gi | |||
| accessModes: | |||
| - ReadWriteMany | |||
| nfs: | |||
| server: haproxy-a-01 | |||
| path: "/media/discodatos/wp-folder" | |||
| @ -0,0 +1,13 @@ | |||
| apiVersion: v1 | |||
| kind: PersistentVolumeClaim | |||
| metadata: | |||
| name: nginx-pv-claim | |||
| labels: | |||
| app: nginx | |||
| spec: | |||
| accessModes: | |||
| - ReadWriteMany | |||
| storageClassName: "" | |||
| resources: | |||
| requests: | |||
| storage: 2Gi | |||
| @ -0,0 +1,67 @@ | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
| name: wordpress | |||
| labels: | |||
| app: wordpress | |||
| spec: | |||
| ports: | |||
| - port: 80 | |||
| selector: | |||
| app: wordpress | |||
| tier: frontend | |||
| type: LoadBalancer | |||
| --- | |||
| apiVersion: v1 | |||
| kind: PersistentVolumeClaim | |||
| metadata: | |||
| name: wp-pv-claim | |||
| labels: | |||
| app: wordpress | |||
| spec: | |||
| accessModes: | |||
| - ReadWriteMany | |||
| resources: | |||
| requests: | |||
| storage: 20Gi | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
| name: wordpress | |||
| labels: | |||
| app: wordpress | |||
| spec: | |||
| selector: | |||
| matchLabels: | |||
| app: wordpress | |||
| tier: frontend | |||
| strategy: | |||
| type: Recreate | |||
| template: | |||
| metadata: | |||
| labels: | |||
| app: wordpress | |||
| tier: frontend | |||
| spec: | |||
| containers: | |||
| - image: wordpress:4.8-apache | |||
| name: wordpress | |||
| env: | |||
| - name: WORDPRESS_DB_HOST | |||
| value: wordpress-mysql | |||
| - name: WORDPRESS_DB_PASSWORD | |||
| valueFrom: | |||
| secretKeyRef: | |||
| name: mysql-pass | |||
| key: password | |||
| ports: | |||
| - containerPort: 80 | |||
| name: wordpress | |||
| volumeMounts: | |||
| - name: wordpress-persistent-storage | |||
| mountPath: /var/www/html | |||
| volumes: | |||
| - name: wordpress-persistent-storage | |||
| persistentVolumeClaim: | |||
| claimName: wp-pv-claim | |||