From f0930c3ea667811e46c671247efffb1de1a6b483 Mon Sep 17 00:00:00 2001 From: Park Hyunjeong Date: Mon, 6 Mar 2023 21:38:09 +0900 Subject: [PATCH 1/2] Initial commit (after separating git) --- my-cluster/README.md | 11 - my-cluster/jenkins/persistent.yaml | 34 -- my-cluster/jenkins/volatile.yaml | 126 ------- my-cluster/kind-config.yaml | 31 -- my-cluster/makefile | 44 --- my-cluster/mongodb/main.md | 355 ------------------ my-cluster/mongodb/mongo.yaml | 78 ---- .../statefulset-mongo-kind-config.yaml | 37 -- my-cluster/mongodb/statefulset-mongo.yaml | 69 ---- 9 files changed, 785 deletions(-) delete mode 100644 my-cluster/README.md delete mode 100644 my-cluster/jenkins/persistent.yaml delete mode 100644 my-cluster/jenkins/volatile.yaml delete mode 100644 my-cluster/kind-config.yaml delete mode 100644 my-cluster/makefile delete mode 100644 my-cluster/mongodb/main.md delete mode 100644 my-cluster/mongodb/mongo.yaml delete mode 100644 my-cluster/mongodb/statefulset-mongo-kind-config.yaml delete mode 100644 my-cluster/mongodb/statefulset-mongo.yaml diff --git a/my-cluster/README.md b/my-cluster/README.md deleted file mode 100644 index 6256721..0000000 --- a/my-cluster/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# My-Cluster - -## Jenkins - -- `worker0/app/jenkins` : Jenkins persistent storage in host - - `/app/jenkins` : node container path of Jenkins -- static provisioning : cluster 삭제해도 해당 directory 삭제되지 않음. - -- `./jenkins/persistent.yaml` - - `kubectl delete...` 하면 해당 저장된 Jenkins 세팅(초기 설치 설정 - plugins 등)이 삭제됨. 다시 세팅하려면 매우 오래 걸림(1시간?) - - `storage : 2Gi` 값은 cluster 내리고 수정해도 삭제되거나 오류발생하지 않음 \ No newline at end of file diff --git a/my-cluster/jenkins/persistent.yaml b/my-cluster/jenkins/persistent.yaml deleted file mode 100644 index 8bef43d..0000000 --- a/my-cluster/jenkins/persistent.yaml +++ /dev/null @@ -1,34 +0,0 @@ ---- -apiVersion: v1 -kind: Namespace -metadata: - name: jenkins ---- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: jenkins - namespace: jenkins -spec: - accessModes: - - ReadWriteOnce - storageClassName: standard - resources: - requests: - storage: 2Gi ---- -apiVersion: v1 -kind: PersistentVolume -metadata: - name: jenkins - namespace: jenkins -spec: - storageClassName: standard - accessModes: - - ReadWriteOnce - capacity: - storage: 2Gi - persistentVolumeReclaimPolicy: Retain - hostPath: - path: /app/jenkins ---- \ No newline at end of file diff --git a/my-cluster/jenkins/volatile.yaml b/my-cluster/jenkins/volatile.yaml deleted file mode 100644 index 425f461..0000000 --- a/my-cluster/jenkins/volatile.yaml +++ /dev/null @@ -1,126 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: jenkins-admin -rules: - - apiGroups: [""] - resources: ["*"] - verbs: ["*"] ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: jenkins-admin - namespace: jenkins ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: jenkins-admin -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: jenkins-admin -subjects: -- kind: ServiceAccount - name: jenkins-admin - namespace: jenkins ---- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: jenkins - namespace: jenkins -spec: - serviceName: mongodb - replicas: 1 - selector: - matchLabels: - app: jenkins - template: - metadata: - labels: - app: jenkins - spec: - volumes: - - name: jenkins-home - persistentVolumeClaim: - claimName: jenkins - securityContext: - fsGroup: 1000 - runAsUser: 1000 - serviceAccountName: jenkins-admin - containers: - - name: jenkins - image: jenkins/jenkins:lts - resources: - limits: - memory: "2Gi" - cpu: "1000m" - requests: - memory: "500Mi" - cpu: "500m" - ports: - - name: httpport - containerPort: 8080 - - name: jnlpport - containerPort: 50000 - livenessProbe: - httpGet: - path: "/login" - port: 8080 - initialDelaySeconds: 90 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 5 - readinessProbe: - httpGet: - path: "/login" - port: 8080 - initialDelaySeconds: 60 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 3 - volumeMounts: - - name: jenkins-home - mountPath: /var/jenkins_home ---- -apiVersion: v1 -kind: Service -metadata: - name: jenkins - namespace: jenkins - annotations: - prometheus.io/scrape: 'true' - prometheus.io/path: / - prometheus.io/port: '8080' -spec: - selector: - app: jenkins - type: NodePort - ports: - - port: 8080 - targetPort: 8080 - nodePort: 32000 ---- -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: jenkins - namespace: jenkins - annotations: - # nginx.ingress.kubernetes.io/rewrite-target: /$2 - kubernetes.io/ingress.class: nginx -spec: - rules: - - host: "jenkins.local" - http: - paths: - - pathType: Prefix - path: "/" # "/jenkins(/|$)(.*)" - backend: - service: - name: jenkins - port: - number: 8080 \ No newline at end of file diff --git a/my-cluster/kind-config.yaml b/my-cluster/kind-config.yaml deleted file mode 100644 index 7c2d3b9..0000000 --- a/my-cluster/kind-config.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: kind.x-k8s.io/v1alpha4 -kind: Cluster -name: my-cluster - -nodes: -- role: control-plane - kubeadmConfigPatches: # for using ingress - - | - kind: InitConfiguration - nodeRegistration: - kubeletExtraArgs: - node-labels: "ingress-ready=true" - - extraPortMappings: - - containerPort: 80 # for ingress - hostPort: 80 - protocol: TCP - -- role: worker - extraMounts: - - hostPath: ./worker0/app - containerPath: /app - - hostPath: ./worker0/var/local-path-provisioner - containerPath: /var/local-path-provisioner # dynamic provisioning에 의한 storage - -# - role: worker -# extraMounts: -# - hostPath: ./worker1/app -# containerPath: /app -# - hostPath: ./worker1/var/local-path-provisioner -# containerPath: /var/local-path-provisioner diff --git a/my-cluster/makefile b/my-cluster/makefile deleted file mode 100644 index 5e2a338..0000000 --- a/my-cluster/makefile +++ /dev/null @@ -1,44 +0,0 @@ -# Reset -Reset="\033[0m" - -# Regular Colors -Black="\033[0;30m" -Red="\033[0;31m" -Green="\033[0;32m" -Yellow="\033[0;33m" -Blue="\033[0;34m" -Purple="\033[0;35m" -Cyan="\033[0;36m" -White="\033[0;37m" - -default: create_cluster create_ingress_controller - -create_cluster: - kind create cluster --config ./kind-config.yaml - -delete_cluster: - kind delete cluster -n my-cluster - -create_ingress_controller: - kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml - - @echo ${Yellow}"Waiting maximum 300s for ingress controller to be ready ..."${Reset} - kubectl wait pods -n ingress-nginx -l app.kubernetes.io/component=controller --for condition=Ready --timeout=300s - -delete_ingress_controller: - kubectl delete -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml - -create_jenkins: - kubectl apply -f ./jenkins/persistent.yaml - kubectl apply -f ./jenkins/volatile.yaml - - @echo ${Yellow}"Waiting maximum 300s for jenkins to be ready ..."${Reset} - kubectl wait pods -n jenkins -l app=jenkins --for condition=Ready --timeout=300s - - @echo ${Cyan}"Initial Administrator password is a50f4d1f69a74ed69125c4277cddbd09"${Reset} - @echo ${Cyan}"Opening Jenkins in Safari..."${Reset} - - open -a safari http://jenkins.local/login - -delete_jenkins: - kubectl delete -f ./jenkins/volatile.yaml diff --git a/my-cluster/mongodb/main.md b/my-cluster/mongodb/main.md deleted file mode 100644 index f694328..0000000 --- a/my-cluster/mongodb/main.md +++ /dev/null @@ -1,355 +0,0 @@ -- [Description](#description) -- [사전 준비](#사전-준비) -- [설치](#설치) - - [k8s 클러스터 생성](#k8s-클러스터-생성) - - [mongoDB 인스턴스 생성](#mongodb-인스턴스-생성) - - [MongoDB Replica Set 설정](#mongodb-replica-set-설정) -- [테스트](#테스트) - - [1. mongoDB Replica Set 정상 동작 확인](#1-mongodb-replica-set-정상-동작-확인) - - [2. StatefulSet 전체를 삭제하고(pod 포함) 다시 생성해도 기존 데이터가 살아있는지 확인](#2-statefulset-전체를-삭제하고pod-포함-다시-생성해도-기존-데이터가-살아있는지-확인) -- [생각해보기](#생각해보기) -- [References](#references) -- [Appendix #1 : `statefule-mongo-kind-config.yaml`](#appendix-1--statefule-mongo-kind-configyaml) -- [Appendix #2 : `statefule-mongo.yaml`](#appendix-2--statefule-mongoyaml) - -# Description - -- StatefulSet을 사용한 MongoDB Replica Set 설치, 테스트 방법이다. - -# 사전 준비 - -- 동적 생성된 volume 저장용 directory, mongoDB 공유 `keyfile` 저장용 directory 생성 - - ```bash - > mkdir ./pvc ./hostroot_in_node - ``` - -- mongoDB용 `keyfile` 생성 및 권한 설정 - - ```bash - > openssl rand -base64 741 > ./hostroot_in_node/mongo/keyfile - ... - > chmod 400 ./hostroot_in_node/mongo/keyfile - ``` - -# 설치 -## k8s 클러스터 생성 - -- k8s 클러스터 생성 - - ```bash - > kind create cluster --config ./statefulset-mongo-kind-config.yaml - ``` - -## mongoDB 인스턴스 생성 - -- StatefulSet 기반으로 mongoDB 배포 - - ```bash - > kubectl apply -f ./statefulset-mongo.yaml - ``` - - > **StatefulSet manifest 생성 시 확인 사항** - > - > - **Headless Service 생성** - > - StatefulSet은 Load Balancer가 무의미하므로 LB 동작 X. - > - **Service에 selector 설정** - > - selector가 Pod를 가리키도록 설정해야 각 Pod가 DNS에 등록됨 - > - **`statefulset-mongo.yaml`에서의 해당 설정** - > ```yaml - > apiVersion: v1 - > kind: Service - > ... - > spec: - > clusterIP: None # headless service via None ClusterIP : No load balancer, But DNS - > selector: - > app: mongodb # To be looked up by DNS, the selector should be matched with the pod's. - > ... - > ``` - -- 정상 배포 확인 (w/ 성공 output) - - ```bash - > kubectl get all - ... - NAME READY STATUS RESTARTS AGE - pod/mongo-0 1/1 Running 0 6m3s - pod/mongo-1 1/1 Running 0 5m21s - pod/mongo-2 1/1 Running 0 4m40s - - NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE - service/kubernetes ClusterIP 10.96.0.1 443/TCP 11m - service/mongodb-service ClusterIP None 27017/TCP 6m3s - - NAME READY AGE - statefulset.apps/mongo 3/3 6m3s - - > kubectl get pv,pvc - ... - NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE - persistentvolume/pvc-0acb895f-5c83-4344-a465-2ffc30751282 1Gi RWO Delete Bound default/mongo-persistent-volume-claim-mongo-2 standard 10m - persistentvolume/pvc-73ddbf20-76ea-4d64-b96d-4e6151f04cdd 1Gi RWO Delete Bound default/mongo-persistent-volume-claim-mongo-1 standard 11m - persistentvolume/pvc-77266513-3c08-494e-ad57-731e7c42d823 1Gi RWO Delete Bound default/mongo-persistent-volume-claim-mongo-0 standard 11m - - NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE - persistentvolumeclaim/mongo-persistent-volume-claim-mongo-0 Bound pvc-77266513-3c08-494e-ad57-731e7c42d823 1Gi RWO standard 11m - persistentvolumeclaim/mongo-persistent-volume-claim-mongo-1 Bound pvc-73ddbf20-76ea-4d64-b96d-4e6151f04cdd 1Gi RWO standard 11m - persistentvolumeclaim/mongo-persistent-volume-claim-mongo-2 Bound pvc-0acb895f-5c83-4344-a465-2ffc30751282 1Gi RWO standard 10m - ``` - -- DNS에 mongodb-service 및 개별 pod가 정상 등록되었는지 확인 - - ```bash - > kubectl apply -f /k8s.io/examples/admin/dns/dnsutils.yaml # cluster내에서 nslookup 실행을 위한 dnsutils pod 설치 - ... - pod/dnsutils created - - > kubectl exec -i -t dnsutils -- nslookup mongodb-service # mongodb-service가 nslookup 되는지 확인 - ... - Server: 10.96.0.10 - Address: 10.96.0.10#53 - Name: mongodb-service.default.svc.cluster.local - Address: 10.244.2.3 - Name: mongodb-service.default.svc.cluster.local - Address: 10.244.1.3 - Name: mongodb-service.default.svc.cluster.local - Address: 10.244.3.3 - - # 개별 pod가 nslookup 되는지 확인 - > kubectl exec -i -t dnsutils -- nslookup mongo-0.mongodb-service # mongo-1, mongo-2에 대해서도 각기 수행 - ... - Server: 10.96.0.10 - Address: 10.96.0.10#53 - - Name: mongo-0.mongodb-service.default.svc.cluster.local - Address: 10.244.2.3 - ``` -## MongoDB Replica Set 설정 - - ```bash - > kubectl exec -it mongo-0 -- bash # mongo-0의 shell에 로그인 - ... - > mongosh # mongo shell에 로그인 - ... - # mongoDB Replica Set 구성을 위해 각 node 연결 (위에서 확인한 Domain을 hostname으로 사용 중) - > rs.initiate({ _id: "anyflow-replset", version: 1, members: [ - ... {_id: 0, host: "mongo-0.mongodb-service:27017" }, - ... { _id: 1, host : "mongo-1.mongodb-service:27017" }, - ... {_id: 2, host: "mongo-2.mongodb-service:27017" }] }); - ... - # 정상적으로 MongoDB Replica Set이 생성되었는지 확인 - > rs.status() - ... - { - set: 'anyflow-replset', - ... - members: [ - { - _id: 0, - name: 'mongo-0.mongodb-service:27017', - ... - stateStr: 'PRIMARY', - ... - }, - { - _id: 1, - name: 'mongo-1.mongodb-service:27017', - ... - stateStr: 'SECONDARY', # 정상 연결이 안되면 STARTUP 등 타 값이 나타남 - ... - }, - { - _id: 2, - name: 'mongo-2.mongodb-service:27017', - ... - stateStr: 'SECONDARY', # 정상 연결이 안되면 STARTUP 등 타 값이 나타남 - ... - } - ], - ok: 1, - ... - } - - # admin 계정 생성 mongoDB의 Localhost Exception 모드 제거 - > db.getSiblingDB('admin').createUser({ user:'mongo-admin', pwd:'mongo-pass', roles:[{role:'root',db:'admin'}]}); - ... - - > exit - ``` - -# 테스트 - -## mongoDB Replica Set 정상 동작 확인 - -: primary에서 데이터를 넣고, secondary에서 해당 데이터가 존재하는지 확인 - -- primary에서 데이터 삽입 - - ```bash - > kubectl exec -it mongo-0 -- bash # primary인 mongo pod에 접근 - ... - > mongosh -u mongo-admin -p mongo-pass # mongo shell에 로그인(w/ admin 계정) - ... - > db.testcoll.insertOne({a:1}); # 데이터 insert - ... - > db.testcall.find() # 정상 insert 결과 확인 - ... - [ - { _id: ObjectId("62763e88695fad1b80b8bd4f"), a: 1 } - ] - ``` - -- secondary에서 삽입한 데이터 확인 - - ```bash - > kubectl exec -it mongo-1 -- bash # secondary인 mongo pod에 접근 - ... - > mongosh -u mongo-admin -p mongo-pass # mongo shell에 로그인(w/ admin 계정) - ... - > db.getMongo().setReadPref('secondary') # secondary에서 read 가능하도록 설정 - ... - > db.testcall.find() # 기존에 삽입된 데이터 확인 - ... - [ - { _id: ObjectId("62763e88695fad1b80b8bd4f"), a: 1 } - ] - ``` - -## StatefulSet 전체를 삭제하고(pod 포함) 다시 생성해도 기존 데이터가 살아있는지 확인 - -```bash -> kubectl delete -f ./statefulset-mongo.yaml # 전체 삭제 -... -> kubectl apply -f ./statefulset-mongo.yaml # 재생성 -... -> kubectl exec -it mongo-1 -- bash # mongo pod에 접근 -... -> mongosh -u mongo-admin -p mongo-pass # mongo shell에 로그인(w/ 기존 admin 계정) -... -> db.getMongo().setReadPref('secondary') # secondary에서 read 가능하도록 설정 -... -> db.testcall.find() # 기존에 삽입된 데이터 확인 -... -[ - { _id: ObjectId("62763e88695fad1b80b8bd4f"), a: 1 } -] -``` - - - 재생성 시 PV에 데이터가 남아 있기에, 기존의 Replica 설정 및 계정, 데이터 생성 작업이 불필요 -# 생각해보기 - -- **재생성 시 어떤 로직으로 pod가 기존 PVC에 연동이 되는지?** - - StatefulSet을 삭제했다고 해서 PV, PVC가 삭제되는 것이 아님. 단순히 pod의 삭제임 - - PVC name은 `VolumeClaimTemplates.meta.name`에 pod의 `meta.name`이 postfix로 붙음. e.g. `mongo-persistent-volume-claim-mongo-0` 이를 통해 자연스럽게 기존 PVC에 연동될 수 있겠네... -- **PV는 언제 삭제되는지?** - - static provisioning이면 RECLAIM POLICY가 `Retain`이고, dynamic provisioning이면 `Delete`임. - - 본 예제의 경우 dynamic provisioning이며, 해당 PVC가 삭제될 때 자동으로 함께 삭제됨. - - -# References - -- [Running MongoDB on Kubernetes with StatefulSets]() -- [Mongodb Replica Set on Kubernetes]() - -## Appendix #1 : `statefule-mongo-kind-config.yaml` - -```yaml -apiVersion: kind.x-k8s.io/v1alpha4 -kind: Cluster - -nodes: -- role: control-plane # configuration for control-plane node - -- role: worker # configuration for worker1 node - extraMounts: - - hostPath: ./hostroot_in_node - containerPath: /hostroot - - hostPath: ./pvc - containerPath: /var/local-path-provisioner -- role: worker # configuration for worker2 node - extraMounts: - - hostPath: ./hostroot_in_node - containerPath: /hostroot - - hostPath: ./pvc - containerPath: /var/local-path-provisioner -- role: worker # configuration for worker3 node - extraMounts: - - hostPath: ./hostroot_in_node - containerPath: /hostroot - - hostPath: ./pvc - containerPath: /var/local-path-provisioner -``` - -## Appendix #2 : `statefule-mongo.yaml` - -```yaml -apiVersion: v1 -kind: Service -metadata: - name: mongodb-service - labels: - name: mongo -spec: - ports: - - port: 27017 - targetPort: 27017 - clusterIP: None # headless service via None ClusterIP : No load balancer, But DNS - selector: - app: mongodb # To be looked up by DNS, the selector should be matched with the pod's. ---- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: mongo -spec: - serviceName: mongodb-service - selector: - matchLabels: - app: mongodb - replicas: 3 - template: - metadata: - labels: - app: mongodb - spec: - containers: - - name: mongo - image: mongo:5.0.7 - args: - - '--bind_ip' - - '0.0.0.0' - - '--replSet' - - 'anyflow-replset' - - '--auth' - - '--clusterAuthMode' - - 'keyFile' - - '--keyFile' - - '/hostroot/mongo/keyfile' - - "--setParameter" - - "authenticationMechanisms=SCRAM-SHA-1" - resources: - limits: - memory: '128Mi' - cpu: '500m' - ports: - - containerPort: 27017 - volumeMounts: - - name: hostroot - mountPath: /hostroot - - name: mongo-persistent-volume-claim - mountPath: /data/db - volumes: - - name: hostroot - hostPath: - path: /hostroot - volumeClaimTemplates: - - metadata: - name: mongo-persistent-volume-claim - spec: - storageClassName: standard # standard는 kind에 기본적으로 딸려오는 provisioner로 local-path-provisioner를 사용 - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 1Gi -``` \ No newline at end of file diff --git a/my-cluster/mongodb/mongo.yaml b/my-cluster/mongodb/mongo.yaml deleted file mode 100644 index 4784f7b..0000000 --- a/my-cluster/mongodb/mongo.yaml +++ /dev/null @@ -1,78 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: mongodb-service - labels: - name: mongo -spec: - ports: - - port: 27017 - targetPort: 27017 - clusterIP: None - selector: - role: mongo ---- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: mongod -spec: - serviceName: mongodb-service - replicas: 3 - selector: - matchLabels: - role: mongo - environment: test - replicaset: MainRepSet - template: - metadata: - labels: - role: mongo - environment: test - replicaset: MainRepSet - spec: - containers: - - name: mongod-container - image: mongo:5.0.7 - command: - - "numactl" - - "--interleave=all" - - "mongod" - - "--bind_ip" - - "0.0.0.0" - - "--replSet" - - "MainRepSet" - - "--auth" - - "--clusterAuthMode" - - "keyFile" - - "--keyFile" - - "/etc/secrets-volume/internal-auth-mongodb-keyfile" - - "--setParameter" - - "authenticationMechanisms=SCRAM-SHA-1" - resources: - requests: - cpu: 0.2 - memory: 200Mi - ports: - - containerPort: 27017 - volumeMounts: - - name: secrets-volume - readOnly: true - mountPath: /etc/secrets-volume - - name: mongodb-persistent-storage-claim - mountPath: /data/db - volumes: - - name: secrets-volume - secret: - secretName: shared-bootstrap-data - defaultMode: 256 - volumeClaimTemplates: - - metadata: - name: mongodb-persistent-storage-claim - annotations: - volume.beta.kubernetes.io/storage-class: "standard" - spec: - accessModes: [ "ReadWriteOnce" ] - resources: - requests: - storage: 1Gi \ No newline at end of file diff --git a/my-cluster/mongodb/statefulset-mongo-kind-config.yaml b/my-cluster/mongodb/statefulset-mongo-kind-config.yaml deleted file mode 100644 index 45446c0..0000000 --- a/my-cluster/mongodb/statefulset-mongo-kind-config.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: kind.x-k8s.io/v1alpha4 -kind: Cluster - -nodes: -- role: control-plane # configuration for control-plane node - kubeadmConfigPatches: # for using ingress - - | - kind: InitConfiguration - nodeRegistration: - kubeletExtraArgs: - node-labels: "ingress-ready=true" - extraPortMappings: - - containerPort: 80 #for ingress based foo, bar service - hostPort: 80 - protocol: TCP - - containerPort: 31593 # for LoadBalancer based foo, bar service - hostPort: 31593 - protocol: TCP - -- role: worker # configuration for worker1 node - extraMounts: - - hostPath: ./hostroot_in_node - containerPath: /hostroot - - hostPath: ./pvc - containerPath: /var/local-path-provisioner -- role: worker # configuration for worker2 node - extraMounts: - - hostPath: ./hostroot_in_node - containerPath: /hostroot - - hostPath: ./pvc - containerPath: /var/local-path-provisioner -- role: worker # configuration for worker3 node - extraMounts: - - hostPath: ./hostroot_in_node - containerPath: /hostroot - - hostPath: ./pvc - containerPath: /var/local-path-provisioner \ No newline at end of file diff --git a/my-cluster/mongodb/statefulset-mongo.yaml b/my-cluster/mongodb/statefulset-mongo.yaml deleted file mode 100644 index 656ca79..0000000 --- a/my-cluster/mongodb/statefulset-mongo.yaml +++ /dev/null @@ -1,69 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: mongodb-service - labels: - name: mongo -spec: - ports: - - port: 27017 - targetPort: 27017 - clusterIP: None # headless service via None ClusterIP : No load balancer, But DNS - selector: - app: mongodb # To be looked up by DNS, the selector should be matched with the pod's. ---- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: mongo -spec: - serviceName: mongodb-service - selector: - matchLabels: - app: mongodb - replicas: 3 - template: - metadata: - labels: - app: mongodb - spec: - containers: - - name: mongo - image: mongo:5.0.7 - args: - - '--bind_ip' - - '0.0.0.0' - - '--replSet' - - 'anyflow-replset' - - '--auth' - - '--clusterAuthMode' - - 'keyFile' - - '--keyFile' - - '/hostroot/mongo/keyfile' - - "--setParameter" - - "authenticationMechanisms=SCRAM-SHA-1" - resources: - limits: - memory: '128Mi' - cpu: '500m' - ports: - - containerPort: 27017 - volumeMounts: - - name: hostroot - mountPath: /hostroot - - name: mongo-persistent-volume-claim - mountPath: /data/db - volumes: - - name: hostroot - hostPath: - path: /hostroot - volumeClaimTemplates: - - metadata: - name: mongo-persistent-volume-claim - spec: - storageClassName: standard # standard는 kind에 기본적으로 딸려오는 provisioner로 local-path-provisioner를 사용 - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 1Gi \ No newline at end of file From d0c1e744e8efefc05f98a81049d201987a174343 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Apr 2023 22:52:24 +0000 Subject: [PATCH 2/2] Bump xlsx from 0.15.4 to 0.18.5 Bumps [xlsx](https://github.com/SheetJS/sheetjs) from 0.15.4 to 0.18.5. - [Release notes](https://github.com/SheetJS/sheetjs/releases) - [Changelog](https://github.com/SheetJS/sheetjs/blob/github/CHANGELOG.md) - [Commits](https://github.com/SheetJS/sheetjs/commits/v0.18.5) --- updated-dependencies: - dependency-name: xlsx dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- package-lock.json | 110 +++++++++++++++++----------------------------- package.json | 2 +- 2 files changed, 42 insertions(+), 70 deletions(-) diff --git a/package-lock.json b/package-lock.json index cf9de30..8ae753b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,49 +5,25 @@ "requires": true, "dependencies": { "adler-32": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz", - "integrity": "sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU=", - "dev": true, - "requires": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - } + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "dev": true }, "cfb": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.1.3.tgz", - "integrity": "sha512-joXBW0nMuwV9no7UTMiyVJnQL6XIU3ThXVjFUDHgl9MpILPOomyfaGqC290VELZ48bbQKZXnQ81UT5HouTxHsw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", "dev": true, "requires": { - "adler-32": "~1.2.0", - "commander": "^2.16.0", - "crc-32": "~1.2.0", - "printj": "~1.1.2" + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" } }, "codepage": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz", - "integrity": "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k=", - "dev": true, - "requires": { - "commander": "~2.14.1", - "exit-on-epipe": "~1.0.1" - }, - "dependencies": { - "commander": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", - "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==", - "dev": true - } - } - }, - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", "dev": true }, "complex.js": { @@ -57,14 +33,10 @@ "dev": true }, "crc-32": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", - "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", - "dev": true, - "requires": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - } + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true }, "decimal.js": { "version": "10.2.0", @@ -78,12 +50,6 @@ "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==", "dev": true }, - "exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", - "dev": true - }, "frac": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", @@ -118,12 +84,6 @@ "typed-function": "1.1.1" } }, - "printj": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", - "dev": true - }, "seed-random": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/seed-random/-/seed-random-2.2.0.tgz", @@ -131,9 +91,9 @@ "dev": true }, "ssf": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.10.2.tgz", - "integrity": "sha512-rDhAPm9WyIsY8eZEKyE8Qsotb3j/wBdvMWBUsOhJdfhKGLfQidRjiBUV0y/MkyCLiXQ38FG6LWW/VYUtqlIDZQ==", + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", "dev": true, "requires": { "frac": "~1.1.2" @@ -151,19 +111,31 @@ "integrity": "sha512-RbN7MaTQBZLJYzDENHPA0nUmWT0Ex80KHItprrgbTPufYhIlTePvCXZxyQK7wgn19FW5bnuaBIKcBb5mRWjB1Q==", "dev": true }, + "wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "dev": true + }, + "word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "dev": true + }, "xlsx": { - "version": "0.15.4", - "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.15.4.tgz", - "integrity": "sha512-5NKT5f4uRlQO6R9dEzWH5rxXNeT5iDB3I/80EFsAaYejxgP7a09l2KVtPap0pZRUrt1F8MVy8CRsEOJ5tbjheg==", + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", "dev": true, "requires": { - "adler-32": "~1.2.0", - "cfb": "^1.1.3", - "codepage": "~1.14.0", - "commander": "~2.17.1", - "crc-32": "~1.2.0", - "exit-on-epipe": "~1.0.1", - "ssf": "~0.10.2" + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" } } } diff --git a/package.json b/package.json index 79a6283..1e8a6a7 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "dependencies": {}, "devDependencies": { "mathjs": "^6.5.0", - "xlsx": "^0.15.4" + "xlsx": "^0.18.5" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1"