From f266cabe0b4a2c6739dd3fe3d8774be3448ff42c Mon Sep 17 00:00:00 2001 From: yusuf karatoprak Date: Thu, 29 Apr 2021 14:15:26 +0300 Subject: [PATCH] update for kubernetes --- azure-pipelines.eventhub.httpapi.host.yml | 4 +- azure-pipelines.eventhub.identityserver.yml | 4 +- azure-pipelines.eventhub.web.yml | 4 +- cluster-autoscaler-autodiscover.yaml | 225 ++++++++++++++++++++ cluster-autoscaler-vmss.yaml | 212 ++++++++++++++++++ manifests/deployment.yml | 19 -- manifests/service.yml | 10 - 7 files changed, 446 insertions(+), 32 deletions(-) create mode 100644 cluster-autoscaler-autodiscover.yaml create mode 100644 cluster-autoscaler-vmss.yaml delete mode 100644 manifests/deployment.yml delete mode 100644 manifests/service.yml diff --git a/azure-pipelines.eventhub.httpapi.host.yml b/azure-pipelines.eventhub.httpapi.host.yml index 6200dcf..cde8eb4 100644 --- a/azure-pipelines.eventhub.httpapi.host.yml +++ b/azure-pipelines.eventhub.httpapi.host.yml @@ -48,9 +48,11 @@ stages: jobs: - deployment: Deploy displayName: Deploy-HttpApi.Host + timeoutInMinutes: 60 # how long to run the job before automatically cancelling + cancelTimeoutInMinutes: 30 # how much time to give 'run always even if cancelled tasks' before stopping them pool: vmImage: $(vmImageName) - environment: 'eventhub.default' + environment: 'voloeventhubhttpapihost.default' strategy: runOnce: deploy: diff --git a/azure-pipelines.eventhub.identityserver.yml b/azure-pipelines.eventhub.identityserver.yml index 40aea3b..d93d062 100644 --- a/azure-pipelines.eventhub.identityserver.yml +++ b/azure-pipelines.eventhub.identityserver.yml @@ -48,9 +48,11 @@ stages: jobs: - deployment: Deploy displayName: Deploy-IdentityServer + timeoutInMinutes: 60 # how long to run the job before automatically cancelling + cancelTimeoutInMinutes: 30 # how much time to give 'run always even if cancelled tasks' before stopping them pool: vmImage: $(vmImageName) - environment: 'eventhub.default' + environment: 'voloeventhubidentityserver.default' strategy: runOnce: deploy: diff --git a/azure-pipelines.eventhub.web.yml b/azure-pipelines.eventhub.web.yml index 2ffc7c9..0b7585d 100644 --- a/azure-pipelines.eventhub.web.yml +++ b/azure-pipelines.eventhub.web.yml @@ -48,9 +48,11 @@ stages: jobs: - deployment: Deploy displayName: Deploy-EventHub.Web + timeoutInMinutes: 60 # how long to run the job before automatically cancelling + cancelTimeoutInMinutes: 30 # how much time to give 'run always even if cancelled tasks' before stopping them pool: vmImage: $(vmImageName) - environment: 'eventhub.default' + environment: 'voloeventhub.default' strategy: runOnce: deploy: diff --git a/cluster-autoscaler-autodiscover.yaml b/cluster-autoscaler-autodiscover.yaml new file mode 100644 index 0000000..5a680c2 --- /dev/null +++ b/cluster-autoscaler-autodiscover.yaml @@ -0,0 +1,225 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler + name: cluster-autoscaler + namespace: kube-system +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: cluster-autoscaler + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler +rules: + - apiGroups: [""] + resources: ["events", "endpoints"] + verbs: ["create", "patch"] + - apiGroups: [""] + resources: ["pods/eviction"] + verbs: ["create"] + - apiGroups: [""] + resources: ["pods/status"] + verbs: ["update"] + - apiGroups: [""] + resources: ["endpoints"] + resourceNames: ["cluster-autoscaler"] + verbs: ["get", "update"] + - apiGroups: [""] + resources: ["nodes"] + verbs: ["watch", "list", "get", "update"] + - apiGroups: [""] + resources: + - "pods" + - "services" + - "replicationcontrollers" + - "persistentvolumeclaims" + - "persistentvolumes" + verbs: ["watch", "list", "get"] + - apiGroups: ["extensions"] + resources: ["replicasets", "daemonsets"] + verbs: ["watch", "list", "get"] + - apiGroups: ["policy"] + resources: ["poddisruptionbudgets"] + verbs: ["watch", "list"] + - apiGroups: ["apps"] + resources: ["statefulsets", "replicasets", "daemonsets"] + verbs: ["watch", "list", "get"] + - apiGroups: ["storage.k8s.io"] + resources: ["storageclasses", "csinodes"] + verbs: ["get", "list", "watch"] + - apiGroups: ["batch"] + resources: ["jobs", "cronjobs"] + verbs: ["watch", "list", "get"] + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["create"] + - apiGroups: ["coordination.k8s.io"] + resourceNames: ["cluster-autoscaler"] + resources: ["leases"] + verbs: ["get", "update"] + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: cluster-autoscaler + namespace: kube-system + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler +rules: + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["create","list","watch"] + - apiGroups: [""] + resources: ["configmaps"] + resourceNames: + - "cluster-autoscaler-status" + - "cluster-autoscaler-priority-expander" + verbs: ["delete", "get", "update", "watch"] + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cluster-autoscaler + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-autoscaler +subjects: + - kind: ServiceAccount + name: cluster-autoscaler + namespace: kube-system + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: cluster-autoscaler + namespace: kube-system + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: cluster-autoscaler +subjects: + - kind: ServiceAccount + name: cluster-autoscaler + namespace: kube-system + +--- +apiVersion: v1 +data: + ResourceGroup: + SubscriptionID: + Deployment: + VMType: c3RhbmRhcmQ= +kind: Secret +metadata: + name: cluster-autoscaler-azure + namespace: kube-system +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: cluster-autoscaler + name: cluster-autoscaler + namespace: kube-system +spec: + replicas: 1 + selector: + matchLabels: + app: cluster-autoscaler + template: + metadata: + labels: + app: cluster-autoscaler + spec: + hostNetwork: true + serviceAccountName: cluster-autoscaler + tolerations: + - effect: NoSchedule + operator: "Equal" + value: "true" + key: node-role.kubernetes.io/master + nodeSelector: + kubernetes.io/role: master + containers: + - command: + - ./cluster-autoscaler + - --v=3 + - --logtostderr=true + - --cloud-provider=azure + - --skip-nodes-with-local-storage=false + - --node-group-auto-discovery=label:cluster-autoscaler-enabled=true,cluster-autoscaler-name= + env: + - name: ARM_SUBSCRIPTION_ID + valueFrom: + secretKeyRef: + key: SubscriptionID + name: cluster-autoscaler-azure + - name: ARM_RESOURCE_GROUP + valueFrom: + secretKeyRef: + key: ResourceGroup + name: cluster-autoscaler-azure + - name: ARM_USE_MANAGED_IDENTITY_EXTENSION + value: "true" + - name: ARM_VM_TYPE + valueFrom: + secretKeyRef: + key: VMType + name: cluster-autoscaler-azure + - name: ARM_DEPLOYMENT + valueFrom: + secretKeyRef: + key: Deployment + name: cluster-autoscaler-azure + image: k8s.gcr.io/cluster-autoscaler:{{ ca_version }} + imagePullPolicy: Always + name: cluster-autoscaler + resources: + limits: + cpu: 100m + memory: 300Mi + requests: + cpu: 100m + memory: 300Mi + volumeMounts: + - mountPath: /etc/ssl/certs/ca-certificates.crt + name: ssl-certs + readOnly: true + - mountPath: /var/lib/azure/ + name: deploy-parameters + readOnly: true + - mountPath: /var/lib/waagent/ + name: waagent + readOnly: true + dnsPolicy: ClusterFirst + restartPolicy: Always + volumes: + - hostPath: + path: /etc/ssl/certs/ca-certificates.crt + type: "" + name: ssl-certs + - name: deploy-parameters + secret: + secretName: cluster-autoscaler-azure-deploy-parameters + items: + - key: deploy-parameters + path: azuredeploy.parameters.json + - hostPath: + path: /var/lib/waagent/ + name: waagent diff --git a/cluster-autoscaler-vmss.yaml b/cluster-autoscaler-vmss.yaml new file mode 100644 index 0000000..5a45508 --- /dev/null +++ b/cluster-autoscaler-vmss.yaml @@ -0,0 +1,212 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler + name: cluster-autoscaler + namespace: kube-system +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: cluster-autoscaler + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler +rules: + - apiGroups: [""] + resources: ["events", "endpoints"] + verbs: ["create", "patch"] + - apiGroups: [""] + resources: ["pods/eviction"] + verbs: ["create"] + - apiGroups: [""] + resources: ["pods/status"] + verbs: ["update"] + - apiGroups: [""] + resources: ["endpoints"] + resourceNames: ["cluster-autoscaler"] + verbs: ["get", "update"] + - apiGroups: [""] + resources: ["nodes"] + verbs: ["watch", "list", "get", "update"] + - apiGroups: [""] + resources: + - "pods" + - "services" + - "replicationcontrollers" + - "persistentvolumeclaims" + - "persistentvolumes" + verbs: ["watch", "list", "get"] + - apiGroups: ["extensions"] + resources: ["replicasets", "daemonsets"] + verbs: ["watch", "list", "get"] + - apiGroups: ["policy"] + resources: ["poddisruptionbudgets"] + verbs: ["watch", "list"] + - apiGroups: ["apps"] + resources: ["statefulsets", "replicasets", "daemonsets"] + verbs: ["watch", "list", "get"] + - apiGroups: ["storage.k8s.io"] + resources: ["storageclasses", "csinodes"] + verbs: ["get", "list", "watch"] + - apiGroups: ["batch"] + resources: ["jobs", "cronjobs"] + verbs: ["watch", "list", "get"] + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["create"] + - apiGroups: ["coordination.k8s.io"] + resourceNames: ["cluster-autoscaler"] + resources: ["leases"] + verbs: ["get", "update"] + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: cluster-autoscaler + namespace: kube-system + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler +rules: + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["create","list","watch"] + - apiGroups: [""] + resources: ["configmaps"] + resourceNames: + - "cluster-autoscaler-status" + - "cluster-autoscaler-priority-expander" + verbs: ["delete", "get", "update", "watch"] + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cluster-autoscaler + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-autoscaler +subjects: + - kind: ServiceAccount + name: cluster-autoscaler + namespace: kube-system + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: cluster-autoscaler + namespace: kube-system + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: cluster-autoscaler +subjects: + - kind: ServiceAccount + name: cluster-autoscaler + namespace: kube-system + +--- +apiVersion: v1 +data: + ClientID: + ClientSecret: + ResourceGroup: + SubscriptionID: + TenantID: + VMType: dm1zcw== +kind: Secret +metadata: + name: cluster-autoscaler-azure + namespace: kube-system +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: cluster-autoscaler + name: cluster-autoscaler + namespace: kube-system +spec: + replicas: 1 + selector: + matchLabels: + app: cluster-autoscaler + template: + metadata: + labels: + app: cluster-autoscaler + spec: + serviceAccountName: cluster-autoscaler + containers: + - image: k8s.gcr.io/cluster-autoscaler:{{ ca_version }} + imagePullPolicy: Always + name: cluster-autoscaler + resources: + limits: + cpu: 100m + memory: 300Mi + requests: + cpu: 100m + memory: 300Mi + command: + - ./cluster-autoscaler + - --v=3 + - --logtostderr=true + - --cloud-provider=azure + - --skip-nodes-with-local-storage=false + - --nodes=1:10:vmss1 + - --nodes=1:10:vmss2 + env: + - name: ARM_SUBSCRIPTION_ID + valueFrom: + secretKeyRef: + key: SubscriptionID + name: cluster-autoscaler-azure + - name: ARM_RESOURCE_GROUP + valueFrom: + secretKeyRef: + key: ResourceGroup + name: cluster-autoscaler-azure + - name: ARM_TENANT_ID + valueFrom: + secretKeyRef: + key: TenantID + name: cluster-autoscaler-azure + - name: ARM_CLIENT_ID + valueFrom: + secretKeyRef: + key: ClientID + name: cluster-autoscaler-azure + - name: ARM_CLIENT_SECRET + valueFrom: + secretKeyRef: + key: ClientSecret + name: cluster-autoscaler-azure + - name: ARM_VM_TYPE + valueFrom: + secretKeyRef: + key: VMType + name: cluster-autoscaler-azure + volumeMounts: + - mountPath: /etc/ssl/certs/ca-certificates.crt + name: ssl-certs + readOnly: true + restartPolicy: Always + volumes: + - hostPath: + path: /etc/ssl/certs/ca-certificates.crt + type: "" + name: ssl-certs diff --git a/manifests/deployment.yml b/manifests/deployment.yml deleted file mode 100644 index cacad88..0000000 --- a/manifests/deployment.yml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion : apps/v1 -kind: Deployment -metadata: - name: volosofteventhub -spec: - replicas: 1 - selector: - matchLabels: - app: volosofteventhub - template: - metadata: - labels: - app: volosofteventhub - spec: - containers: - - name: volosofteventhub - image: voloeventhub.azurecr.io/volosofteventhub - ports: - - containerPort: 80 \ No newline at end of file diff --git a/manifests/service.yml b/manifests/service.yml deleted file mode 100644 index 1ab0959..0000000 --- a/manifests/service.yml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: volosofteventhub -spec: - type: LoadBalancer - ports: - - port: 80 - selector: - app: volosofteventhub \ No newline at end of file