ArgoCD Fails to create a clusterrole/clusterrolebinding.

In some cases, Cluster RBAC does not work with ArgoCD. Control cluster resources with "CLUSTER RESOURCE ALLOW LIST". When you create a new ArgoCD project, it has no permissions by default, so it can only operate within the namespace to NOT create cluster RBAC.

October 31, 2023 ยท 1 min ยท ๐Ÿ“ Kubernetes ยท ๐Ÿท๏ธ argocd, project, RBAC

helm-sentry-install-fail

helm install sentry sentry/sentry coalesce.go:175: warning: skipped value for kafka.config: Not a table. coalesce.go:175: warning: skipped value for kafka.zookeeper.topologySpreadConstraints: Not a table. W1023 08:00:35.276931 15594 warnings.go:70] spec.template.spec.containers[0].env[39]: hides previous definition of "KAFKA_ENABLE_KRAFT" Error: INSTALLATION FAILED: failed post-install: 1 error occurred: * job failed: DeadlineExceeded job failed: DeadlineExceeded ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด job์€ DB๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์˜ฌ๋ผ์™”๋Š”์ง€ ํ™•์ธํ•˜๋Š” job์ด๋‹ค. k get job NAME COMPLETIONS DURATION AGE sentry-db-check 0/1 5m23s 5m23s ์ด Job์€ ๋‹ค์Œ์„ ๊ฒ€์ฆํ•œ๋‹ค. name: sentry-db-check namespace: sentry resourceVersion: "4700657" uid: 12533bba-b35b-4b7d-9007-8c625b389a98 spec: activeDeadlineSeconds: 1000 backoffLimit: 6 completionMode: NonIndexed completions: 1 parallelism: 1 selector: matchLabels: batch.kubernetes.io/controller-uid: 12533bba-b35b-4b7d-9007-8c625b389a98 suspend: false template: metadata: creationTimestamp: null labels: app: sentry batch.kubernetes.io/controller-uid: 12533bba-b35b-4b7d-9007-8c625b389a98 batch.kubernetes.io/job-name: sentry-db-check controller-uid: 12533bba-b35b-4b7d-9007-8c625b389a98 job-name: sentry-db-check release: sentry name: sentry-db-check spec: containers: - command: - /bin/sh - -c - | echo "Checking if clickhouse is up" CLICKHOUSE_STATUS=0 while [ $CLICKHOUSE_STATUS -eq 0 ]; do CLICKHOUSE_STATUS=1 CLICKHOUSE_REPLICAS=3 i=0; while [ $i -lt $CLICKHOUSE_REPLICAS ]; do CLICKHOUSE_HOST=sentry-clickhouse-$i.sentry-clickhouse-headless if ! nc -z "$CLICKHOUSE_HOST" 9000; then CLICKHOUSE_STATUS=0 echo "$CLICKHOUSE_HOST is not available yet" fi i=$((i+1)) done if [ "$CLICKHOUSE_STATUS" -eq 0 ]; then echo "Clickhouse not ready. Sleeping for 10s before trying again" sleep 10; fi done echo "Clickhouse is up" echo "Checking if kafka is up" KAFKA_STATUS=0 while [ $KAFKA_STATUS -eq 0 ]; do KAFKA_STATUS=1 KAFKA_REPLICAS=3 i=0; while [ $i -lt $KAFKA_REPLICAS ]; do KAFKA_HOST=sentry-kafka-$i.sentry-kafka-headless if ! nc -z "$KAFKA_HOST" 9092; then KAFKA_STATUS=0 echo "$KAFKA_HOST is not available yet" fi i=$((i+1)) done if [ "$KAFKA_STATUS" -eq 0 ]; then echo "Kafka not ready. Sleeping for 10s before trying again" sleep 10; fi done echo "Kafka is up" image: subfuzion/netcat:latest imagePullPolicy: IfNotPresent name: db-check resources: limits: memory: 64Mi requests: cpu: 100m memory: 64Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst restartPolicy: Never schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 Clickhouse / Kafka ๊ฐ€ ์‹คํ–‰๋˜์–ด์•ผ job์€ ์ •์ƒํ™” ๊ฐ€๋Šฅํ•˜๋‹ค. ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์ด๋ฏ€๋กœ, hook ์˜ ์‹œ๊ฐ„์„ ๋Š˜๋ ค์ฃผ๋ฉด job์€ ๋” ๊ธด์‹œ๊ฐ„ ๋Œ€๊ธฐํ•œ๋‹ค helm ์˜ values.yaml ์—์„œ activeDeadlineSeconds๋ฅผ ๋Š˜๋ ค์ฃผ๋ฉด ๋œ๋‹ค. ...

October 23, 2023 ยท 2 min ยท ๐Ÿ“ Kubernetes

๊ฐœ๋ฐœ์ž ๋‘๋ช…์ด ์ž๋ฆฌ๋ฅผ ๋ฐ”๊พธ๋Š”๋ฐ ํ•„์š”ํ•œ ์˜์ž ๊ฐฏ์ˆ˜๋Š”?

๋ณดํ†ต ๊ฐœ๋ฐœ์ž์˜ ์ž๋ฆฌ์ด๋™์€ ์„ธ๊ฐœ์˜ ์˜์ž๊ฐ€ ์žˆ์–ด์•ผ์ง€๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋นˆ์˜์ž = ๊ฐœ๋ฐœ์ž1 ๊ฐœ๋ฐœ์ž1 = ๊ฐœ๋ฐœ์ž2 ๊ฐœ๋ฐœ์ž1 = ๋นˆ์˜์ž ๊ทธ๋Ÿฐ๋ฐ XOR๋ฅผ ์ด์šฉํ•˜๋ฉด ๋‘๊ฐœ์˜ ์˜์ž ๋งŒ์œผ๋กœ๋„ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ฐœ๋ฐœ์ž1 ^= ๊ฐœ๋ฐœ์ž2 ๊ฐœ๋ฐœ์ž2 ^= ๊ฐœ๋ฐœ์ž1 ๊ฐœ๋ฐœ์ž1 ^= ๊ฐœ๋ฐœ์ž2 GPT์˜ ๋‹ต๋ณ€์ด๋‹ค. ๋‚˜๋Š” ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์ด ์žˆ์„๊ฑฐ๋ผ ์ƒ๊ฐ๋„ ๋ชปํ–ˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋˜์ค‘ ํ˜„๋Œ€์˜ ์ปดํŒŒ์ผ๋Ÿฌ์—์„  XOR๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ์—์„œ์˜ ๋ฌธ์ œ๋กœ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค๋Š” ์ด์•ผ๊ธฐ๋ฅผ ๋“ค์—ˆ๋‹ค. ํ•ญ์ƒ ์ž์„ธํ•œ ์„ค๋ช…๊ณผ ํ•จ๊ป˜ ๋„์›€์ฃผ์‹œ๋Š” pr0gr4m ๋‹˜. ๋А๋ ค์ง€๋Š”๊ฒŒ ๋งž๋‹ค๊ณ  ํ•˜์…”์„œ ๊ถ๊ธˆํ•ด์„œ ๋Œ๋ ค๋ดค๋‹ค. import timeit # temp ์‚ฌ์šฉ def swap_temp(): a = 5 b = 10 temp = a a = b b = temp return a, b # XOR ์‚ฌ์šฉ def swap_xor(): a = 5 b = 10 a ^= b b ^= a a ^= b return a, b # ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ temp_time = timeit.timeit("swap_temp()", setup="from __main__ import swap_temp", number=1000000) xor_time = timeit.timeit("swap_xor()", setup="from __main__ import swap_xor", number=1000000) print(f"Using temp: {temp_time} seconds") print(f"Using XOR: {xor_time} seconds") ์ฝ”๋“œ๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์‹คํ–‰ํ•ด ๋ดค๊ณ  ๊ฒฐ๋ก ์„ ์–ป์—ˆ๋‹ค. ...

August 8, 2023 ยท 2 min ยท ๐Ÿ“ ๊ธฐํƒ€ ยท ๐Ÿท๏ธ XOR

AWS-User-Notifications-Hacking-Detection

์•„์ง ์ด๊ฑธ ์„ค์ • ์•ˆํ–ˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค. ์šฐ๋ฆฌ๋Š” AWS๋ฅผ ๋‹ค๋ฃจ๋ฉด ํ•ญ์ƒ ํ•ดํ‚น์˜ ์œ„ํ—˜์— ๋‹น๋ฉดํ•œ๋‹ค. ๋ฏธ๋ฆฌ ๋ง‰๋Š”๋‹ค๋ฉด ๋„ˆ๋ฌด์ข‹์€ ์ผ์ด๊ฒ ์œผ๋‚˜, ๊ทธ๋ ‡์ง€ ๋ชปํ•œ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ํ•ดํ‚น์„ ๋‹นํ•œ๋‹ค ํ•˜์—ฌ๋„ ๋ฌธ์ œ๋“ค์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์บ์น˜ํ• ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ๋ณดํ†ต AWS๊ณ„์ •์ด ํ•ดํ‚น๋‹นํ•˜๋ฉด ํ•ด์ปค์˜ ๋‹ˆ์ฆˆ๋Š” ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฑ„๊ตด์„ ๋Œ๋ฆฌ๋ ค๊ณ  ํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ EC2๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜๊ณ , EC2์˜ ์ƒ์„ฑ์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ• ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด, ์กฐ๊ธฐ์— ํ•ดํ‚น์„ ์ง„์••ํ• ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ด๋ฒˆ์— ๋‚˜์˜จAWS User Notifications ์„œ๋น„์Šค๊ฐ€ ๊ทธ ๋‹ˆ์ฆˆ์— ์™„๋ฒฝํ•˜๊ฒŒ ๋ถ€ํ•ฉํ•˜๋‹ค. ์ด๋ฏธ์ง€ ๋Œ€๋กœ ์ƒ์„ฑํ•˜์ž, ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์€ ๊ณ„์ •์˜ ๋ฆฌ์ „๋“ค์€ ์„œ๋น„์Šค๋…ธํ‹ฐ๋„ ์•ˆ๋˜๊ฑฐ๋‚˜ ์„œ๋น„์Šค๊ฐ€ ๋Ÿฐ์นญ๋˜์ง€ ์•Š์•„์„œ ๋ฆฌ์ „์—์„œ ์ œ์™ธํ•ด์•ผํ•œ๋‹ค. ์ดˆ๊ธฐ ํ•œ๊ตญ๊ณ„์ •์œผ๋กœ ์„ ํƒ๋˜์ง€ ์•Š์€ ๋ฆฌ์ „์ด๋‹ค. ...

May 25, 2023 ยท 1 min ยท ๐Ÿ“ AWS

EKS-NodeLess-08-AWS-Karpenter-topologySpreadConstraints

topologySpreadConstraints ์„ ์‚ฌ์šฉํ•œ Karpenter ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒ ๋‹ค. topologySpreadConstraints ํ…Œ์ŠคํŠธ๋Š” Topology Aware Hint ๋ฅผ ์˜ˆ๋น„ํ•œ ํ…Œ์ŠคํŠธ๋‹ค. https://aws.amazon.com/ko/blogs/tech/amazon-eks-reduce-cross-az-traffic-costs-with-topology-aware-hints/ ์ฐธ๊ณ ํ•  ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ์ด ๊ธ€์„ ์ฐธ๊ณ ํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค. ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด Kubernetes ์—์„œ Cross Zone Traffic ์˜ ๋ฌธ์ œ๋กœ ๋น„์šฉ์ด ๋ง‰๋Œ€ํ•˜๊ฒŒ ๋ฐœ์ƒํ• ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ Cross-AZ๋กœ ์ธํ•˜์—ฌ ์•ฝ๊ฐ„์˜ ๋ ˆ์ดํ„ด์‹œ๊ฐ€ ๋ฐœ์ƒํ• ์ˆ˜๋„ ์žˆ๊ธฐ๋•Œ๋ฌธ์— Topology Aware Hint๋Š” ์—ฌ๋Ÿฌ ๋ฌธ์ œ์ ๋“ค์„ ์ค„์—ฌ์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์กฐ๊ฑด์€ ๋ช‡๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ, Service ๋กœ ์—ฐ๊ฒฐ๋˜ AZ๊ฐ€ ์ˆ˜ํ‰์ ์œผ๋กœ ๋™์ผํ•˜๊ฒŒ ๋…ธ๋“œ๊ฐ€ ๋ฐฐํฌ๋˜์–ด์žˆ๊ณ  ์„œ๋น„์Šค์— apiVersion: v1 kind: Service metadata: name: service annotations: service.kubernetes.io/topology-aware-hints: auto ๋‹ค์Œ๊ณผ ๊ฐ™์€ annotations ๋ถ™์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค. ...

May 20, 2023 ยท 3 min ยท ๐Ÿ“ AWS, Kubernetes ยท ๐Ÿท๏ธ EKS, karpenter, topologySpreadConstraints

EKS-NodeLess-07-AWS-Karpenter-CRD

์ด์ œ ์นดํŽœํ„ฐ์˜ CRD๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๊ฑฐ์˜ ๋์— ๋‹ค์™”๋‹ค. https://www.linuxer.name/posts/eks-nodeless-05-aws-karpenter-component/ Karpenter Component ๋ฅผ ์„ค๋ช…ํ• ๋•Œ CRD๋ฅผ ์„ค๋ช…ํ–ˆ์—ˆ๋‹ค. ๋‹ค์‹œ ์ด์•ผ๊ธฐ ํ•˜์ž๋ฉด provisioners.karpenter.sh - provisioners - / awsnodetemplates.karpenter.k8s.aws -awsnodetemplates - ๋‘๊ฐ€์ง€๋ฅผ ์…‹ํŒ…ํ•ด์•ผ ํ•œ๋‹ค. ๋จผ์ € provisioners ๋ฅผ ์ด์•ผ๊ธฐ ํ•ด๋ณผ๊นŒ ํ•œ๋‹ค. apiVersion: karpenter.sh/v1alpha5 kind: Provisioner metadata: name: default spec: requirements: - key: karpenter.k8s.aws/instance-category operator: In values: [c, m, r] - key: karpenter.k8s.aws/instance-generation operator: Gt values: ["2"] providerRef: name: default https://karpenter.sh/v0.27.3/concepts/provisioners/ https://github.com/aws/karpenter/tree/main/examples ...

May 20, 2023 ยท 1 min ยท ๐Ÿ“ AWS, Kubernetes

EKS-NodeLess-06-AWS-Karpenter-Install

์ด๋ฒˆ ํฌ์ŠคํŒ…์€ Karpenter ์„ค์น˜๋‹ค. ์„ค์น˜ํ•˜๋‹ค ๋ง‰ํžˆ๋ฉด ๊ฐ€์ด๋“œ๋ฅผ ๋ณด์ž. https://karpenter.sh/v0.27.3/getting-started/migrating-from-cas/ karpenter ๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์ „์— ๋จผ์ € ์…‹ํŒ…ํ•ด์•ผ ํ• ๊ฒƒ๋“ค์ด ์žˆ๋‹ค. CLUSTER_NAME=myeks # your clouster name AWS_PARTITION="aws" # aws or aws-gov or aws-cn AWS_REGION="$(aws configure list | grep region | tr -s " " | cut -d" " -f3)" OIDC_ENDPOINT="$(aws eks describe-cluster --name ${CLUSTER_NAME} \\ --query "cluster.identity.oidc.issuer" --output text)" AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query 'Account' \\ --output text) export KARPENTER_VERSION=v0.27.3 # latast version ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •์ด๋‹ค. ...

May 17, 2023 ยท 3 min ยท ๐Ÿ“ AWS, Kubernetes ยท ๐Ÿท๏ธ EKS, nodeless, karpenter

EKS-NodeLess-05-AWS-Karpenter-component

์ด์ œ์•ผ ๋“œ๋””์–ด Karpenter๊นŒ์ง€ ์™”๋‹ค. Karpenter์˜ ๊ตฌ์„ฑ์š”์†Œ๋ถ€ํ„ฐ ์‚ดํŽด๋ณด์ž! PodDisruptionBudget: PodDisruptionBudget์€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ํŠน์ • ์„œ๋น„์Šค๋ฅผ ์ค‘๋‹จํ•˜์ง€ ์•Š๊ณ  ๋™์‹œ์— ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ๋Š” Pod์˜ ์ตœ๋Œ€ ์ˆ˜๋ฅผ ์ง€์ •ํ•œ๋‹ค. ServiceAccount: Karpenter๊ฐ€ ๋™์ž‘ํ•˜๋ ค๋ฉด ํ•ด๋‹น ๊ถŒํ•œ์„ ๊ฐ€์ง„ Kubernetes์˜ ServiceAccount๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ServiceAccount๋Š” Kubernetes ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ API ์ ‘๊ทผ ๊ถŒํ•œ์„ ์ œ๊ณตํ•œ๋‹ค. Secret-webhook-cert: Karpenter์˜ ์›นํ›…์— ์‚ฌ์šฉ๋˜๋Š” TLS ์ธ์ฆ์„œ๋ฅผ ์ €์žฅํ•˜๋Š” Secret์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์›นํ›…์ด ์•ˆ์ „ํ•˜๊ฒŒ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค. ConfigMap-logging: Karpenter์˜ ๋กœ๊น… ์„ค์ •์„ ์ €์žฅํ•˜๋Š” ConfigMap์ด๋‹ค. ๋กœ๊น… ์ˆ˜์ค€, ์ถœ๋ ฅ ํ˜•์‹ ๋“ฑ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ...

May 15, 2023 ยท 3 min ยท ๐Ÿ“ AWS, Kubernetes ยท ๐Ÿท๏ธ EKS, nodeless, karpenter

EKS-NodeLess-04-AWS-LoadBalancer-Controller

AWS LoadBalancer Controller ๋„ Fargate์— ์˜ฌ๋ ค์•ผ ํ•œ๋‹ค. ๋น„๊ต์  ๊ฐ„๋‹จํ•œ๋ฐ, Controller Pod์— annotations ํ•œ์ค„๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด๋œ๋‹ค. ๋จผ์ € ์ถ”๊ฐ€ํ• ๋•Œ Policy ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. VPC_NAME=myeks-VPC // VPC NAME ์œผ๋กœ ๋ณ€๊ฒฝ CLUSTER_NAME=myeks REGION=ap-northeast-2 curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.4.7/docs/install/iam_policy.json aws iam create-policy \\ --policy-name AWSLoadBalancerControllerIAMPolicy \\ --policy-document file://iam_policy.json POLICY_ARN=`aws iam list-policies | grep Arn | grep AWSLoadBalancerControllerIAMPolicy | awk -F\\" '{print $4}'` VPC_ID=$(aws ec2 describe-vpcs --query 'Vpcs[?contains(Tags[?Key==`Name`].Value[], `'$VPC_NAME'`) == `true`].[VpcId]' --output text) ์ด Policy๋ฅผ ์ด์šฉํ•˜์—ฌ eksctl์—์„œ ์‚ฌ์šฉํ• ๊ฑฐ๋‹ค. POLICY_ARN์€ ์ „์ฒด Policy ์—์„œ AWSLoadBalancerControllerIAMPolicy ์˜ arn์„ ์ถ”์ถœํ•œ๋‹ค. ...

May 14, 2023 ยท 1 min ยท ๐Ÿ“ AWS, Kubernetes

FinOps Certified Practitioner (FOCP) -Review

๋ฐ”์œ ์™€์ค‘์— ์š”์ฆ˜ ์ž๊ฒฉ์ฆ ์ถ”๊ฐ€๊ฐ€ ์ข€ ๋œธํ•œ๊ฑฐ ๊ฐ™์•„์„œ 2022๋…„ ๋ง์— ๋„์ „ํ–ˆ๋‹ค๊ฐ€ ๋–จ์–ด์ง„ FOCP๋ฅผ ๋‹ค์‹œ ๋„์ „ํ•˜์˜€๋‹ค. FOCP์˜ ๊ฒฝ์šฐ์—๋Š” Practitioner ์ž๊ฒฉ์ด๋ผ ๋‚œ์ด๋„๊ฐ€ ๋†’์ง€๋Š” ์•Š๋‹ค. ํ•˜์ง€๋งŒ ์ž๊ฒฉ์ฆ์—์„œ ์š”๊ตฌํ•˜๋Š” ๋ฐ”๊ฐ€ ์ผ๋ฐ˜์ ์ธ IT์˜ ์‹œ๊ฐ์ด ์•„๋‹ˆ๋‹ค. FinOps๋Š” ์žฌ๋ฌด์™€์˜ ์—ฐ๊ฒฐ๋„ ํฌํ•จํ•˜๊ณ ์žˆ์–ด์„œ ๋‹จ์ˆœํžˆ DevOps๋กœ์„œ์˜ ์‚ฌ์ผ๋กœ ๋ฟ๋งŒ์•„๋‹ˆ๋ผ ์กฐ์ง์— ๋Œ€ํ•œ ์‚ฌ์ผ๋กœ ๊นŒ์ง€ ์—†์• ๋ ค๋Š” ๋…ธ๋ ฅ์„ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์‹œํ—˜์˜ ๋ชจ๋“ ๋‚ด์šฉ์€ FinOps Foundation ์— ๊ณต๊ฐœ๋˜์–ด์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์–ด๋А์ •๋„ FinOps๋ฌธํ™”๋ฅผ ์ดํ•ดํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด ์‹œํ—˜์„ ๋ณผ๋งŒํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๋˜์—ˆ๋˜ ์žฅ๋ฒฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์‹œํ—˜๊ฐ€๊ฒฉ $300 ์‹œํ—˜๊ฐ€๊ฒฉ $300 ...

May 13, 2023 ยท 1 min ยท ๐Ÿ“ FinOps ยท ๐Ÿท๏ธ FinOps, fin, Finance