11 ways not to get hacked
https://kubernetes.io/blog/2018/07/18/11-ways-not-to-get-hacked/ μμ½
pspκ΄λ ¨ λ΄μ©μ μμ
Kubernetes 보μμ νλ‘μ νΈκ° μμλ μ΄νλ‘ λ¨Ό κΈΈμ κ±Έμ΄μμ§λ§ μ¬μ ν λͺ κ°μ§ λ¬Έμ κ° μμ΅λλ€. 컨νΈλ‘€ νλ μΈμμ μμνμ¬ μν¬λ‘λ λ° λ€νΈμν¬ λ³΄μμ ν΅ν΄ ꡬμΆνκ³ λ³΄μμ λ―Έλμ λν μμΈ‘μΌλ‘ λ§λ¬΄λ¦¬νλ λ€μμ ν΄λ¬μ€ν°λ₯Ό κ°ννκ³ μμλ κ²½μ° λ³΅μλ ₯μ λμ΄λ λ° λμμ΄ λλ μ μ©ν ν λͺ©λ‘μ λλ€.
Part One: The Control Plane
control planeμ Kubernetesμ λλμ λλ€. ν΄λ¬μ€ν°μμ μ€ν μ€μΈ λͺ¨λ 컨ν μ΄λμ ν¬λμ λν μ 체 λ³΄κΈ°κ° μκ³ μ ν¬λ(λΆλͺ¨ λ Έλμ λν λ£¨νΈ μ‘μΈμ€ κΆνμ΄ μλ 컨ν μ΄λλ₯Ό ν¬ν¨ν μ μμ)λ₯Ό μμ½ν μ μμΌλ©° ν΄λ¬μ€ν°μ μ μ₯λ λͺ¨λ λΉλ°μ μ½μ μ μμ΅λλ€. μ΄ κ·μ€ν κ²μ μ κ·Όν λλ, μ μ₯λμ΄ μμ λλ, λ€νΈμν¬λ₯Ό ν΅ν΄ μ΄μ‘λ λλ μ°λ°μ μΈ λμΆ λ° μ μμ μΈ μλλ‘λΆν° 보νΈν΄μΌ ν©λλ€.
1. TLS Everywhere
νΈλν½ μ€λνμ λ°©μ§νκ³ , μλ²μ IDλ₯Ό νμΈνκ³ , (μνΈ TLSμ κ²½μ°) ν΄λΌμ΄μΈνΈμ IDλ₯Ό νμΈνλ €λ©΄ TLSλ₯Ό μ§μνλ λͺ¨λ κ΅¬μ± μμμ λν΄ TLSλ₯Ό νμ±νν΄μΌ ν©λλ€.
Source
Lucas KΓ€ldstrΓΆmμ΄ μμ±ν μ΄ λ€νΈμν¬ λ€μ΄μ΄κ·Έλ¨μ TLSκ° μ΄μμ μΌλ‘ μ μ©λμ΄μΌ νλ μΌλΆ μμΉ, μ¦ λ§μ€ν°μ λͺ¨λ ꡬμ±μμ μ¬μ΄, Kubeletκ³Ό API μλ² μ¬μ΄λ₯Ό 보μ¬μ€λλ€.

2. RBACνμ±ν(Least Privilege μ΅μ κΆν λ²μΉμΌλ‘) , ABACλ μ¬μ©νμ§ μκΈ° , κ·Έλ¦¬κ³ λ‘κ·Έ λͺ¨λν°λ§ νκΈ°

Role-based access controlμ λ€μμ€νμ΄μ€ μ‘μΈμ€μ κ°μ 리μμ€μ λν μ¬μ©μ μ‘μΈμ€μ λν μΈλΆνλ μ μ± κ΄λ¦¬λ₯Ό μ 곡ν©λλ€.
Kubernetesμ ABAC(μμ± κΈ°λ° μ‘μΈμ€ μ μ΄)λ λ¦΄λ¦¬μ€ 1.6λΆν° RBACλ‘ λ체λμμΌλ©° API μλ²μμ νμ±ννλ©΄ μ λ©λλ€. λμ RBACλ₯Ό μ¬μ©νμμμ€.
μμ§ λ§μΈμ: μ΄λ¬ν λ‘κ·Έλ₯Ό ν΄λ¬μ€ν° λ΄λΆμ 보κ΄νλ κ²μ μΉ¨ν΄ μ 보μ μνμ΄ λ©λλ€. μ΄λ λ€λ₯Έ λͺ¨λ 보μμ λ―Όκ°ν λ‘κ·Έμ λ§μ°¬κ°μ§λ‘ μλ° μ λ³μ‘°λ₯Ό λ°©μ§νκΈ° μν΄ ν΄λ¬μ€ν° μΈλΆλ‘ μ μ‘λμ΄μΌ ν©λλ€.
3. API μλ²μ νμ¬ μΈμ¦ μ¬μ©
μ‘°μ§ μ 체μμ μΈμ¦ λ° κΆν λΆμ¬(Single Sign Onμ΄λΌκ³ λ ν¨)λ₯Ό μ€μ μ§μ€ννλ©΄ μ¬μ©μμ λν μ¨λ³΄λ©, μ€νλ³΄λ© λ° μΌκ΄λ κΆνμ΄ λμμ΄ λ©λλ€.
Kubernetesλ₯Ό νμ¬ μΈμ¦ μ 곡μ(μ: Google λλ GitHub)μ ν΅ν©νλ©΄ μ격 νλ«νΌμ ID 보μ¦(2FAμ κ°μ κ²μΌλ‘ λ°±μ λ¨)μ μ¬μ©νκ³ κ΄λ¦¬μκ° μ¬μ©μλ₯Ό μΆκ°νκ±°λ μ κ±°νκΈ° μν΄ Kubernetes API μλ²λ₯Ό μ¬κ΅¬μ±ν΄μΌ νλ κ²μ λ°©μ§ν©λλ€.
4. etcd ν΄λ¬μ€ν° λΆλ¦¬ λ° λ°©νλ²½
etcdλ μν λ° λΉλ°μ λν μ 보λ₯Ό μ μ₯νλ©° μ€μν Kubernetes κ΅¬μ± μμμ λλ€. ν΄λ¬μ€ν°μ λλ¨Έμ§ λΆλΆκ³Ό λ€λ₯΄κ² 보νΈν΄μΌ ν©λλ€.
API μλ²μ etcdμ λν μ°κΈ° μ‘μΈμ€λ μ 체 ν΄λ¬μ€ν°μμ 루νΈλ₯Ό μ»λ κ²κ³Ό λμΌνλ©° μ½κΈ° μ‘μΈμ€λ₯Ό μ¬μ©νμ¬ κΆνμ μλΉν μ½κ² μμ€μ»¬λ μ΄μ ν μ μμ΅λλ€.
Kubernetes μ€μΌμ€λ¬λ λ Έλκ° μλ ν¬λ μ μμ λν΄ etcdλ₯Ό κ²μν©λλ€. κ·Έλ° λ€μ μ°Ύμ ν¬λλ₯Ό μμ½μ μν΄ μ¬μ© κ°λ₯ν kubeletμΌλ‘ 보λ λλ€. μ μΆλ ν¬λμ λν μ ν¨μ± κ²μ¬λ API μλ²κ° etcdμ μ°κΈ° μ μ μννλ―λ‘ etcdμ μ§μ μ°λ μ μμ μΈ μ¬μ©μλ λ§μ 보μ λ©μ»€λμ¦μ μ°νν μ μμ΅λλ€. μ)PodSecurityμ μ± .
etcdλ νΌμ΄ λ° ν΄λΌμ΄μΈνΈ TLS μΈμ¦μλ‘ κ΅¬μ±νκ³ μ μ© λ Έλμ λ°°ν¬ν΄μΌ ν©λλ€. κ°μΈ ν€κ° λλλΉνκ³ μμ μ λ Έλμμ μ¬μ©λλ κ²μ λ°©μ§νκΈ° μν΄ ν΄λ¬μ€ν°λ₯Ό API μλ²λ‘ λ°©νλ²½μΌλ‘ μ€μ ν μλ μμ΅λλ€.
5. μνΈν ν€ κ΅μ²΄
보μ λͺ¨λ² μ¬λ‘λ ν€ μμμ "νλ° λ°κ²½"μ μ ννκΈ° μν΄ μνΈν ν€μ μΈμ¦μλ₯Ό μ κΈ°μ μΌλ‘ κ΅μ²΄νλ κ²μ λλ€.
Kubernetesλ κΈ°μ‘΄ μ격 μ¦λͺ μ΄ λ§λ£λλ©΄ μ CSRμ μμ±νμ¬ μΌλΆ μΈμ¦μ(νΉν kubelet ν΄λΌμ΄μΈνΈ λ° μλ² μΈμ¦μ)λ₯Ό μλμΌλ‘ κ΅μ²΄ν©λλ€.
κ·Έλ¬λ API μλ²κ° etcd κ°μ μνΈννλ λ° μ¬μ©νλ λμΉ μνΈν ν€λ μλμΌλ‘ μνλμ§ μμΌλ©° μλμΌλ‘ μνν΄μΌ ν©λλ€. μ΄λ₯Ό μν΄μλ λ§μ€ν° μ‘μΈμ€κ° νμνλ―λ‘ κ΄λ¦¬ μλΉμ€(μ: GKE λλ AKS)λ μ΄μμλ‘λΆν° μ΄ λ¬Έμ λ₯Ό μΆμνν©λλ€.
Part Two: Workloads
컨νΈλ‘€ νλ μΈμμ μ΅μνμ μ€ν κ°λ₯ν 보μμΌλ‘ ν΄λ¬μ€ν°λ μμ νκ² μλν μ μμ΅λλ€. λ°°ν¬ μ μ λ’°ν μ μμ§λ§ μΈν°λ·μ μ°κ²°λμ΄ μμΌλ©΄ λμ€μ μ μ©λ μνμ΄ νμ μμ΅λλ€. μ΅μνμ κΆνμΌλ‘ μν¬λ‘λλ₯Ό μ€ννκ³ λ°νμ ꡬμ±μ κ°ννλ©΄ μ΄λ¬ν μνμ μννλ λ° λμμ΄ λ μ μμ΅λλ€.
6. Use Linux Security Features and PodSecurityPolicies
Linux 컀λμλ μμ© νλ‘κ·Έλ¨μ μ΅μ κΆνμ μ 곡νλλ‘ κ΅¬μ±ν μ μλ μ¬λ¬ μ€μ²© 보μ νμ₯(κΈ°λ₯, SELinux, AppArmor, seccomp-bpf)μ΄ μμ΅λλ€.
baneκ³Ό κ°μ λꡬλ AppArmor νλ‘νμ μμ±νκ³ seccomp νλ‘νμ μν docker-slimμ μμ±νλ λ° λμμ΄ λ μ μμ§λ§ μ΄λ¬ν μ μ± μ μ©μ λΆμμ©μ΄ μμ΅λλ€. μ ν리μΌμ΄μ μ ν¬κ΄μ μΈ ν μ€νΈλ₯Ό μ£Όμνμ¬ νμμμ€.
7. Statically Analyse YAML
Sensitive information should not be stored in pod-type YAML resource (deployments, pods, sets, etc.), and sensitive configmaps and secrets should be encrypted with tools such as vault (with CoreOS's operator), git-crypt, sealed secrets, or cloud provider KMS.
Static analysis of YAML configuration can be used to establish a baseline for runtime security. kubesec generates risk scores for resources:
{
"score": -30,
"scoring": {
"critical": [
{
"selector": "containers[] .securityContext .privileged == true",
"reason": "Privileged containers can allow almost completely unrestricted host access"
}
],
"advise": [
{
"selector": "containers[] .securityContext .runAsNonRoot == true",
"reason": "Force the running image to run as a non-root user to ensure least privilege"
},
{
"selector": "containers[] .securityContext .capabilities .drop",
"reason": "Reducing kernel capabilities available to a container limits its attack surface",
"href": "/docs/tasks/configure-pod-container/security-context/"
}
]
}
}And kubetest is a unit test framework for Kubernetes configurations:
#// vim: set ft=python:
def test_for_team_label():
if spec["kind"] == "Deployment":
labels = spec["spec"]["template"]["metadata"]["labels"]
assert_contains(labels, "team", "should indicate which team owns the deployment")
test_for_team_label()8. 루νΈκ° μλ μ¬μ©μλ‘ μ»¨ν
μ΄λ μ€ν
루νΈλ‘ μ€νλλ 컨ν μ΄λλ μμ λΆνκ° μꡬνλ κ²λ³΄λ€ ν¨μ¬ λ λ§μ κΆνμ κ°κ³ μμΌλ©°, μ΄λ μμλ κ²½μ° κ³΅κ²©μκ° κ³΅κ²©μ κ³μνλ λ° λμμ΄ λ μ μμ΅λλ€.
Kubernetesμμ μ¬μ©μ λ€μμ€νμ΄μ€κ° νμ±νλμ΄ μμ§ μμ΅λλ€. μ¦, 컨ν μ΄λμ μ¬μ©μ ID ν μ΄λΈμ΄ νΈμ€νΈμ μ¬μ©μ ν μ΄λΈμ λ§€νλκ³ μ»¨ν μ΄λ λ΄μμ λ£¨νΈ μ¬μ©μλ‘ νλ‘μΈμ€λ₯Ό μ€ννλ©΄ νΈμ€νΈμμ 루νΈλ‘ μ€νλ©λλ€. 컨ν μ΄λ λΈλ μ΄ν¬μμμ λ°©μ§νκΈ° μν΄ κ³μΈ΅νλ 보μ λ©μ»€λμ¦μ΄ μμ§λ§ 컨ν μ΄λ λ΄λΆμμ 루νΈλ‘ μ€ννλ κ²μ μ¬μ ν κΆμ₯λμ§ μμ΅λλ€.
λ§μ 컨ν μ΄λ μ΄λ―Έμ§λ λ£¨νΈ μ¬μ©μλ₯Ό μ¬μ©νμ¬ PID 1μ μ€νν©λλ€. ν΄λΉ νλ‘μΈμ€κ° μμλλ©΄ 곡격μκ° μ»¨ν μ΄λμ 루νΈλ₯Ό κ°κ² λλ©° μλͺ»λ ꡬμ±μ μ μ©νκΈ°κ° ν¨μ¬ μ¬μμ§λλ€.
# Required to prevent escalations to root.
allowPrivilegeEscalation: false
runAsUser:
# Require the container to run without root privileges.
rule: 'MustRunAsNonRoot'루νΈκ° μλ 컨ν μ΄λλ 1024 λ―Έλ§μ κΆν μλ ν¬νΈμ λ°μΈλ©ν μ μμ§λ§(μ΄κ²μ CAP_NET_BIND_SERVICE 컀λ κΈ°λ₯μ μν΄ μ μ΄λ¨) μλΉμ€λ₯Ό μ¬μ©νμ¬ μ΄ μ¬μ€μ μμ₯ν μ μμ΅λλ€. μ΄ μμμ κ°μμ MyApp μ ν리μΌμ΄μ μ 컨ν μ΄λμ ν¬νΈ 8443μ λ°μΈλ©λμ§λ§ μλΉμ€λ targetPortμ λν μμ²μ νλ‘μνμ¬ 443μμ μ΄λ₯Ό λ ΈμΆν©λλ€.
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 443
targetPort: 8443루νΈκ° μλ μ¬μ©μλ‘ μν¬λ‘λλ₯Ό μ€νν΄μΌ νλ κ²μ μ¬μ©μ λ€μμ€νμ΄μ€λ₯Ό μ¬μ©ν μ μκ±°λ 루νΈκ° μλ 컨ν μ΄λλ₯Ό μ€ννκΈ° μν μ§μμ μΈ μμ μ΄ μ»¨ν μ΄λ λ°νμμ μμ λκΉμ§ λ³κ²½λμ§ μμ΅λλ€.
9. Use Network Policies
κΈ°λ³Έμ μΌλ‘ Kubernetes λ€νΈμνΉμ λͺ¨λ ν¬λ κ° νΈλν½μ νμ©ν©λλ€. μ΄κ²μ `Network Policy`μ μ¬μ©νμ¬ μ νν μ μμ΅λλ€.
Kubernetesλ λͺ¨λ μμ€ν μνλ₯Ό etcdμ μ μ₯νλ―λ‘ CNI λ€νΈμνΉ νλ¬κ·ΈμΈμμ μ§μνλ κ²½μ° λμ λ°©νλ²½μ ꡬμ±ν μ μμ΅λλ€.
Calico, Cilium, kube-router, Romana λ° Weave Netμ λͺ¨λ Network Policyμ μ§μν©λλ€.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny
spec:
podSelector:
Here's an example NetworkPolicy that denies all egress except UDP 53 (DNS), which also prevents inbound connections to your application. NetworkPolicies are stateful, so the replies to outbound requests still reach the application.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: myapp-deny-external-egress
spec:
podSelector:
matchLabels:
app: myapp
policyTypes:
- Egress
egress:
- ports:
- port: 53
protocol: UDP
- to:
- namespaceSelector: {}Kubernetes λ€νΈμν¬ μ μ± μ DNS μ΄λ¦μ μ μ©ν μ μμ΅λλ€. κ³ μ IP λλ podSelector(λμ Kubernetes IPμ κ²½μ°)μλ§ λ€νΈμν¬ μ μ± μ μ μ©ν μ μκΈ° λλ¬Έμ λλ€.
λͺ¨λ² μ¬λ‘λ λ€μμ€νμ΄μ€μ λν λͺ¨λ νΈλν½μ κ±°λΆνλ κ²μΌλ‘ μμνκ³ μ ν리μΌμ΄μ μ΄ μλ½ ν μ€νΈ μ νκ΅°μ ν΅κ³Όν μ μλλ‘ κ²½λ‘λ₯Ό μ μ§μ μΌλ‘ μΆκ°νλ κ²μ λλ€.
k8s: # used for Kubernetes pods
deployment: # only deployments currently supported
test-frontend: # pod name, defaults to `default` namespace
test-microservice: 80 # `test-microservice` is the DNS name of the target service
test-database: -80 # `test-frontend` should not be able to access test-databaseβs port 80
169.254.169.254: -80, -443 # AWS metadata API
metadata.google.internal: -80, -443 # GCP metadata API
new-namespace:test-microservice: # `new-namespace` is the namespace name
test-database.new-namespace: 80 # longer DNS names can be used for other namespaces
test-frontend.default: 80
169.254.169.254: -80, -443 # AWS metadata API
metadata.google.internal: -80, -443 # GCP metadata API10. Scan Images and Run IDS(μΉ¨μ
νμ§ μμ€ν
)

μΉ μλ²λ μΈλΆμμ http/httpsλ₯Ό ν΅ν΄μ podλ΄λΆμ½λλ₯Ό μ€νν μ μμ
μ΄λ―Έμ§ μ€μΊνλ©΄ 곡격μκ° μ»¨ν μ΄λμ μ격 μ‘μΈμ€νκΈ° μν΄ μ μ©ν μ μλ μλ €μ§ μ·¨μ½μ μ΄ μλμ§ νμΈν©λλ€.
IDS(μΉ¨μ νμ§ μμ€ν )μ μ¬μ©ν©λλ€.
μ΄λ¬ν μΉν μ 컨ν μ΄λ μ΄λ―Έμ§ μ€μΊ λꡬμμ μ΄λ―Έμ§λ₯Ό ν΄λ¬μ€ν°μ λ°°ν¬νκΈ° μ μ μ ν¨μ±μ κ²μ¬νλ λ° μ¬μ©ν μ μμ΅λλ€. κ²μ¬μ μ€ν¨ν μ΄λ―Έμ§λ μ μ₯μ΄ κ±°λΆλ μ μμ΅λλ€.
μλ €μ§ μ·¨μ½μ μ λν΄ μ»¨ν μ΄λ μ΄λ―Έμ§λ₯Ό μ€μΊνλ©΄ 곡격μκ° κ³΅κ°λ CVEλ₯Ό μ μ©ν μ μλ μκ°μ μ€μΌ μ μμ΅λλ€. CoreOSμ Clair λ° Aquaμ Micro Scannerμ κ°μ λ¬΄λ£ λꡬλ λ°°ν¬ νμ΄νλΌμΈμμ μ¬μ©λμ΄ μ€μνκ³ μ μ© κ°λ₯ν μ·¨μ½μ μ΄ μλ μ΄λ―Έμ§μ λ°°ν¬λ₯Ό λ°©μ§ν΄μΌ ν©λλ€.
Grafeasμ κ°μ λꡬλ 컨ν
μ΄λμ κ³ μ μλͺ
(μ½ν
μΈ μ£Όμ μ§μ κ°λ₯ ν΄μ)μ λν μ§μμ μΈ κ·μ μ€μ λ° μ·¨μ½μ± κ²μ¬λ₯Ό μν΄ μ΄λ―Έμ§ λ©νλ°μ΄ν°λ₯Ό μ μ₯ν μ μμ΅λλ€. μ¦, ν΄λΉ ν΄μλ₯Ό μ¬μ©νμ¬ μ»¨ν
μ΄λ μ΄λ―Έμ§λ₯Ό μ€μΊνλ κ²μ νλ‘λμ
μ λ°°ν¬λ μ΄λ―Έμ§λ₯Ό μ€μΊνλ κ²κ³Ό λμΌνλ©° νλ‘λμ
νκ²½μ μ‘μΈμ€ν νμ μμ΄ κ³μ μνν μ μμ΅λλ€.
μλ €μ§μ§ μμ Zero Day μ·¨μ½μ μ νμ μ‘΄μ¬νλ―λ‘ Twistlock, Aqua λ° Sysdig Secureμ κ°μ μΉ¨μ νμ§ λꡬλ₯Ό Kubernetesμ λ°°ν¬ν΄μΌ ν©λλ€.
IDSλ 컨ν μ΄λμμ λΉμ μμ μΈ λμμ κ°μ§νκ³ μ΄λ₯Ό μΌμ μ€μ§νκ±°λ μ’ λ£ν©λλ€. Sysdigμ Falcoλ μ€ν μμ€ κ·μΉ μμ§μ΄λ©° μ΄ μνκ³μ μΆλ°μ μ λλ€.
Part Three: The Future

보μμ "ν΄λΌμ°λ λ€μ΄ν°λΈ μ§ν"μ λ€μ λ¨κ³λ μλΉμ€ λ©μλ‘ λ³΄μ΄μ§λ§ μ±νμλ μκ°μ΄ 걸릴 μ μμ΅λλ€. λ§μ΄κ·Έλ μ΄μ μλ μ ν리μΌμ΄μ μμ λ©μ μΈνλΌλ‘μ 볡μ‘μ± μ΄λμ΄ ν¬ν¨λλ©° μ‘°μ§μ λͺ¨λ² μ¬λ‘λ₯Ό μ΄ν΄νκΈ°λ₯Ό μ΄λ§ν κ²μ λλ€.
11. Run a Service Mesh
μλΉμ€ λ©μλ Envoy λ° Linkerdμ κ°μ κ³ μ±λ₯ "μ¬μ΄λμΉ΄" νλ‘μ μλ² κ°μ λ§λ€μ΄μ§ μνΈνλ μꡬ μ°κ²°μ μΉμ λλ€. λ§μ΄ν¬λ‘μλΉμ€ λ³κ²½ μμ΄ νΈλν½ κ΄λ¦¬, λͺ¨λν°λ§ λ° μ μ± μ μΆκ°ν©λλ€.
λ§μ΄ν¬λ‘μλΉμ€ 보μ λ° λ€νΈμνΉ μ½λλ₯Ό 곡μ νκ³ μ ν¬ ν μ€νΈλ₯Ό κ±°μΉ λΌμ΄λΈλ¬λ¦¬ μΈνΈλ‘ μ€νλ‘λνλ κ²μ Linkerdλ₯Ό ν΅ν΄ μ΄λ―Έ κ°λ₯νμΌλ©° Google, IBM λ° Lyftμ Istio λμ μΌλ‘ μ΄ λΆμΌμ λμμ΄ μΆκ°λμμ΅λλ€. ν¬λλΉ μνΈν IDλ₯Ό μν SPIFFE λ° κΈ°ν λ€μν κΈ°λ₯μ μΆκ°ν¨μΌλ‘μ¨ Istioλ μ°¨μΈλ λ€νΈμν¬ λ³΄μμ λ°°ν¬λ₯Ό λ¨μνν μ μμ΅λλ€.
"μ λ‘ νΈλ¬μ€νΈ" λ€νΈμν¬μμλ λͺ¨λ μνΈ μμ©μ΄ mTLS(μνΈ TLS)λ₯Ό ν΅ν΄ λ°μνλ―λ‘ κΈ°μ‘΄ λ°©νλ²½μ΄λ Kubernetes λ€νΈμν¬ μ μ± μ΄ νμνμ§ μμ μ μμ΅λλ€.
μ ν΅μ μΈ λ€νΈμνΉμμ ν΄λΌμ°λ λ€μ΄ν°λΈ 보μ μμΉμΌλ‘μ μ΄λ¬ν μ νμ μ ν΅μ μΈ λ³΄μ μ¬κ³ λ°©μμ κ°μ§ μ¬λλ€μκ² μ½μ§ μμ κ²μΌλ‘ μμλλ©° SPIFFEμ Evan Gilmanμ΄ μ΄ Zero Trust Networking μ± μ μ΄ λ©μ§ μ μΈκ³λ₯Ό μκ°νλ λ° μ κ·Ή κΆμ₯λ©λλ€.
Istio LTSκ° μΆμλμμΌλ©° νλ‘μ νΈλ 1.0 릴리μ€μ λΉ λ₯΄κ² μ κ·Όνκ³ μμ΅λλ€. μμ μ± λ²μ κ΄λ¦¬λ Kubernetes λͺ¨λΈκ³Ό λμΌν©λλ€. κ°λ³ APIκ° μ체 μν/λ² ν μμ μ± λ€μμ€νμ΄μ€μμ μμ μ μλ³νλ μμ μ μΈ μ½μ΄μ λλ€. μμΌλ‘ λͺ λ¬ λμ Istio μ±νμ΄ μ¦κ°ν κ²μΌλ‘ μμλ©λλ€.
Last updated
Was this helpful?