Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/chaos-mesh/k8s_dns_chaos
k8s_dns_chaos - enables injecting DNSChaos in a Kubernetes cluster.
https://github.com/chaos-mesh/k8s_dns_chaos
Last synced: about 1 month ago
JSON representation
k8s_dns_chaos - enables injecting DNSChaos in a Kubernetes cluster.
- Host: GitHub
- URL: https://github.com/chaos-mesh/k8s_dns_chaos
- Owner: chaos-mesh
- Created: 2020-08-27T02:20:53.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-04-18T05:19:56.000Z (over 1 year ago)
- Last Synced: 2024-02-11T16:52:21.043Z (10 months ago)
- Language: Go
- Homepage:
- Size: 146 KB
- Stars: 9
- Watchers: 11
- Forks: 11
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-coredns - k8s_dns_chaos - enables inject DNS chaos in a Kubernetes cluster for Chaos Engineering. (External Plguins)
README
# k8s_dns_chaos
Used to inject DNS chaos into a Kubernetes cluster. This is the DNS server for the Chaos Mesh `DNSChaos`.
## Description
This plugin implements the [Kubernetes DNS-Based Service Discovery
Specification](https://github.com/kubernetes/dns/blob/master/docs/specification.md).CoreDNS running with the k8s_dns_chaos plugin can be used to do chaos tests on DNS.
This plugin can only be used once per Server Block.
> **Note:**
>
> It works with CoreDNS 7d5f5b87a4fb310d442f7ef0d52e3fead0e10d39.## Syntax
```
k8s_dns_chaos [ZONES...]
```The _k8s_dns_chaos_ supports all options in plugin _[kubernetes](https://coredns.io/plugins/kubernetes/)_, besides, it also supports other configuration items for chaos.
```
kubernetes [ZONES...] {
endpoint URL
tls CERT KEY CACERT
kubeconfig KUBECONFIG CONTEXT
namespaces NAMESPACE...
labels EXPRESSION
pods POD-MODE
endpoint_pod_names
ttl TTL
noendpoints
transfer to ADDRESS...
fallthrough [ZONES...]
ignore empty_servicechaos ACTION SCOPE [PODS...]
grpcport PORT
}
```Only `[ZONES...]`, `chaos` and `grpcport` is different with plugin with _[kubernetes](https://coredns.io/plugins/kubernetes/)_:
- `[ZONES...]` defines which zones of the host will be treated as internal hosts in the Kubernetes cluster.
- `chaos` **ACTION** **SCOPE** **[PODS...]** set the behavior and scope of chaos.
Valid value for **Action**:
- `random`: return random IP for DNS request.
- `error`: return error for DNS request.Valid value for **SCOPE**:
- `inner`: chaos only works on the inner host of the Kubernetes cluster.
- `outer`: chaos only works on the outer host of the Kubernetes cluster.
- `all`: chaos works on all the hosts.**[PODS...]** defines which Pods will take effect, the format is `Namespace`.`PodName`.
- `grpcport` **PORT** sets the port of GRPC service, which is used for the hot update of the chaos rules. The default value is `9288`. The interface of the GRPC service is defined in [dns.proto](pb/dns.proto).
## Examples
All DNS requests in Pod `busybox.busybox-0` will get error:
```yaml
k8s_dns_chaos cluster.local in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
chaos error all busybox.busybox-0
}
```The shell command below will execute failed:
```shell
kubectl exec busybox-0 -it -n busybox -- ping -c 1 google.com
ping: bad address 'google.com'
```