Commit Graph

600 Commits

Author SHA1 Message Date
Brian Cunnie
61f0ae2ae8 Remove *.nono.io nameservers
They have been replaced by the sslip.io nameservers. I had been meaning
to do this a long time, and nothing like a Thanksgiving weekend to get
long-lingering tasks done.
2021-11-27 18:52:03 -08:00
Brian Cunnie
7ed2107f36 Web page: use sslip.io servers, not nono.io 2021-11-27 18:23:02 -08:00
Brian Cunnie
690e0ad618 New Release Documentation: no more manual Docker images
The Docker images are now created automatically with our pipeline.
That's right: with 80 hours of work we saved 30 seconds of work! We are
nothing if not efficient.
2021-11-27 15:53:44 -08:00
Brian Cunnie
56191a2ef7 HTML: remove the "new software" warning
It's not new after a year. I also updated the version numbers returned
because, well, it makes the website more "fresh".
2021-11-27 12:29:58 -08:00
Brian Cunnie
4e22123114 BOSH release: 2.2.3: Include sslip.io nameservers 2.2.3 2021-11-27 11:35:01 -08:00
Brian Cunnie
fda3baeaaa Add NS servers in sslip.io domain
We currently use three nameservers in the `nono.io` domain, but that's
confusing--why not have the nameservers in the `sslip.io` domain?

This commit starts the ball rolling to convert to the sslip.io. We'll
have a brief period where we have _both_ `nono.io` and `sslip.io`
nameservers.

At which point we'll add the `sslip.io` nameservers to our registrar,
Namecheap.com.

Once they've been added to our registrar, we'll wait a day or two to
propagate, and then we'll delete references to the `nono.io`
nameservers.
2021-11-27 10:50:04 -08:00
Brian Cunnie
992458f67c simple pipeline: use default branch, not master
...especially since I recently switched from `master` to `main` on
sslip.io's repo.

Also I got rid of the Concourse groups, which I don't like at all. And I
added some pretty icons to the resources.
2021-11-26 20:46:37 -08:00
Brian Cunnie
2c4a60e315 sslip.io pipeline: use default branch, not master
...especially since I recently switched from `master` to `main` on
sslip.io's repo.

Also I got rid of the Concourse groups, which I don't like at all. And I
added some pretty icons to the resources.
2021-11-26 20:41:39 -08:00
Brian Cunnie
ab33ada856 🐞 Simple Pipeline: don't try to run YAML booleans
fixes:
```
error: error unmarshaling JSON: while decoding JSON: malformed task step: json: cannot unmarshal bool into Go struct field TaskRunConfig.config.run.path of type string
```
2021-11-24 09:13:20 -08:00
Brian Cunnie
854d8e8c1b Spec: test ip.sslip.io
Also, change the order of `dig` arguments so that the server being
queried is first (e.g. `@#{whois_nameserver}`) and the arguments (e.g.
`+short`), is last.
2021-11-05 08:10:39 -07:00
Brian Cunnie
1d4e1af656 Production test: all servers run same version 2021-11-02 05:02:46 -07:00
Brian Cunnie
9dd1a78447 Dockerfile cunnie/sslip.io-dns-server: bump 2.2.1 → 2.2.2
Also, remove redundant "attach binaries", and change the order in which
the Dockerfile is updated.
2021-11-01 07:53:50 -07:00
Brian Cunnie
eed67fdf4d BOSH release: 2.2.2: ip.sslip.io TXT returns IP
Our documentation was wrong; our homepage said to get the origin IP
address by querying the TXT record of the root, i.e. `dig
@ns-aws.nono.io txt . +short`; however, our code worked differently: it
returned the origin IP when the `.ip` TLD was queried.

The new behavior is that it returns the origin IP when `ip.sslip.io.` is
queried, and the documentation now reflects that behavior.

Also, that behavior is marked "experimental" to give us leeway to
change.

[fixes #11]
2.2.2
2021-11-01 07:24:54 -07:00
Brian Cunnie
e133149beb New release instructions include updating k8s 2021-10-06 10:52:42 -07:00
Brian Cunnie
0be7d1c628 Dockerfile cunnie/sslip.io-dns-server: bump 2.2.0 → 2.2.1 2021-10-06 10:40:59 -07:00
Brian Cunnie
d778192ec8 Bump BOSH Release vendored Golang 2021-10-06 10:28:32 -07:00
Brian Cunnie
259da8bfb8 Docs: tweak new release instructions 2021-10-06 10:27:54 -07:00
Brian Cunnie
8ce23653bb BOSH release: 2.2.1: version.sslip.io TXT
- Returns version information for DNS server
- Contains 3 strings:
  - Semantic version, e.g. "2.2.1"
  - Date of compilation
  - Latest git hash

Note: the BOSH Release will have a different compilation date &
different git hash than the released executables; the semantic version
will be the same.
2.2.1
2021-10-06 05:16:46 -07:00
Brian Cunnie
f1f66a0f3b dig txt version.sslip.io returns version
I needed a way of determining the version that a server was running. I
orginally considered a command-line argument, but then I thought, "Why
not create a DNS record for it? That way I can query running servers
without needing to ssh onto the machine."

The TXT record consists of three distinct strings: version, compile
date, and git hash.

```bash
dig txt version.sslip.io +short
    "2.2.1"
    "2021/10/03-15:08:54+0100"
    "6a928eb"
```
2021-10-03 15:34:52 +01:00
Brian Cunnie
c74792b588 🐞 Integration tests work properly on slow machines
The integration tests were failing on my laptop.

As a side note, it's interesting that a 2013 desktop is almost three times
faster than a 2020 laptop. Sic transit gloria mundi.

Drive-by: I removed a `JustBeforeEach()` clause that wasn't being used,
and removed a comment that no longer applied (we no longer need to stop
`systemd-resolved`)
2021-10-03 13:46:20 +01:00
Brian Cunnie
502a6901cc Website: grammar fix, clarification 2021-09-15 11:04:07 -07:00
Brian Cunnie
90926d3bdf VMware employees can't get the wildcard
The wildcard is expiring, and I'm loath to spend something renewing
something I don't use, so I'll let it lapse.

(I use Let's Encrypt).
2021-09-15 10:57:13 -07:00
Brian Cunnie
11c6d7d95f 🐞 return source IP for TXT when "ip." or "xx.ip."
...instead of say, ".pip."

drive-by: cleaned up the English
2021-08-03 16:49:24 -07:00
Brian Cunnie
d5d8bb4f12 DNS: "ip." TXT queries return source IP
...and also prints an SOA log message if there is no TXT customization.

drive-bys:

- bump the SOA's serial
2021-08-03 16:06:25 -07:00
Brian Cunnie
ebbcb744c6 🐞 Skip IPv6 test when IPv4-only, REALLY
This time it's fixed for sure.

I should have tested the previous commit before I pushed it. Or I could
have re-written the git history to make a complete commit, but as an
exercise in humility I decided to allow my mistakes to be seen.

fixes: <https://ci.nono.io/teams/main/pipelines/sslip.io/jobs/unit/builds/6>
```
dig: couldn't get address for '::1': address family not supported
```
2021-07-27 11:44:04 -04:00
Brian Cunnie
cdeb5a8768 🐞 Skip IPv6 test when IPv4-only
Our unit tests have been failing on our IPv4-only containers because one
of the tests forces a lookup from the (non-existent) IPv6 loopback
interface.

Now we first test to make sure such an interface exists by using
`ping6`. Corner-case: In the event that `ping6` is not on the machine
where the tests are run, but that machine has an IPv6 loopback
interface, that test will be mistakenly skipped. Big deal.

fixes: <https://ci.nono.io/teams/main/pipelines/sslip.io/jobs/unit/builds/4>
```
dig: couldn't get address for '::1': address family not supported
```
2021-07-27 06:25:29 -04:00
Brian Cunnie
43efab0530 Convenience record ns.sslip.io
Previously, when querying special records such as the IP address, we had
to call out one of the three nameservers, e.g. `dig @ns-aws.nono.io ip.
+short -6`.

This lays the groundwork for queries such as `dig @ns.sslip.io ip.
+short -6`. Now users don't have to remember the 3 nono.io nameservers,
they only need to know the easy-to-remember `ns.sslip.io`. And they
don't need to worry about which one of the three nameservers is
IPv6-capable.
2021-07-26 08:19:42 -04:00
Brian Cunnie
08974c8b81 DNS server: test IPv4 & IPv6 loopback
It makes the expectation clearer to write (we can expect either
"127.0.0.1" or "::1")
2021-07-25 16:13:32 -04:00
Brian Cunnie
d621f982ad 🐞 fix flaky ginkgo test
fixes:
```
Test Panicked
runtime error: index out of range [0] with length 0
/usr/local/Cellar/go/1.16.6/libexec/src/runtime/panic.go:88
```
2021-07-25 16:08:03 -04:00
Brian Cunnie
c1ae1462c3 🐞 Test both IPv4 & IPv6 TXT records
The test originally assumed the query would come from the IPv4 loopback,
not the IPv6 loopback. Now I specify the protocol in the dig query to
force either IPv4 or IPv6.

fixes:
```
  Expected
      <string>: "::1"

  to match regular expression
      <string>: 127.0.0.1
```
2021-07-22 22:44:32 -04:00
Brian Cunnie
2e730b8ad6 🐞 Badges pipeline: quote "true" and "false"
fixes:
```
error: error unmarshaling JSON: while decoding JSON: malformed task step: json: cannot unmarshal bool into Go struct field TaskRunConfig.config.run.path of type string
```
2021-07-10 17:48:01 -07:00
Brian Cunnie
bef3fc1685 GKE: bump #replicas to match #nodes (1→2)
They use hardly any CPU (the precious resource), so it's essentially
free. Plus it adds a green checkmark on the Google load balancer page.
2021-07-10 16:45:43 -07:00
Brian Cunnie
940ea6f810 GKE: certificate/secret has more meaningful name
...so I can identify it as soon as I see it. "quickstart" has no
significance to me.
2021-07-08 06:39:49 -07:00
Brian Cunnie
2af4c0bd05 🐞 <https://104.155.144.4.sslip.io/> now has favicon
Previously it was getting a 404 because I had the wrong `pathType` set.
2021-07-07 18:53:56 -07:00
Brian Cunnie
baf499536c Dockerfile-nginx: include less so I can look at logs 2021-07-07 18:49:49 -07:00
Brian Cunnie
6e5a9b1d1e sslip.io website: GKE is now a mirror—yay! 2021-07-07 18:33:43 -07:00
Brian Cunnie
aa0705e3a5 GKE: TLS Ingress for 104-155-144-4.sslip.io 2021-07-07 16:50:34 -07:00
Brian Cunnie
3eb38ecd19 GKE: sslip.io nginx has ClusterIP service 2021-07-07 16:30:57 -07:00
Brian Cunnie
9c15584b88 GKE: incorporate webserver into sslip.io
So far we've incorporated DNS & NTP, and now we incorporate the
webserver (on port 80, no TLS)
2021-07-07 16:05:43 -07:00
Brian Cunnie
27835a030f GKE: Cluster is now an NTP server!
- Much of the information was from this blog post:
  <https://goglides.io/manage-ntp-using-kubernetes/90/>
- Curiously, it creates another load balancer, so this brings me up to
  three load balancers (HTTP(S)/DNS/NTP)
- It uses the OpenNTPD server. And ns-aws uses NTPsec, and ns-azure uses
  the granddaddy, NTP.
2021-07-07 12:30:50 -07:00
Brian Cunnie
11b4966b90 GKE sslip.io DNS: 1 replica, no readiness
We only have 1 node (because I'm frugal), so we really need only one
replica (it's more likely that the node has crashed rather than my
fairly-simple server).

Also, I pushed out the liveness probe to 5 minutes so the logs aren't
cluttered with probes every ten seconds.

I got rid of the readiness probe, which is only for "[applications
[that] are temporarily unable to serve
traffic](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/)".
It cluttered the logs with its probes. Also my app is never
temporarily unable to serve.

fixes too many occurrences of:
```
::1.55268 TypeA 127.0.0.1.sslip.io. ? 127.0.0.1
```
2021-07-06 05:23:04 -07:00
Brian Cunnie
59c9423989 Dockerfile: nginx: breadcrumb where to find it 2021-07-05 17:53:46 -07:00
Brian Cunnie
028a01b028 🐞 LoadBalancer has correct IP (104.155.144.4)
And, while we're at it, let's get rid of DNS-over-TCP. It's only useful
for zone transfers (IIRC), and we don't implement that anyway.
2021-07-05 17:48:05 -07:00
Brian Cunnie
4136294e91 GKE: LoadBalancer service for 53/UDP 2021-07-05 16:12:35 -07:00
Brian Cunnie
98e3bf542f k8s: livenessProbe every hour
...so it doesn't clutter up the log file every five seconds.
2021-07-05 13:19:27 -07:00
Brian Cunnie
a8d7fe357f Leave breadcrumb comment on Dockerfile
...so I know which Docker image to pull
2021-07-03 15:06:10 -07:00
Brian Cunnie
998aab97f1 k8s deployment: specify -dns everywhere
...to distinguish it from the soon-to-be-added `-nginx` webserver
2021-07-03 13:43:14 -07:00
Brian Cunnie
7c9ab0d64e 🐞 k8s sslip.io: remove only-run-on-AWS restriction
fixes:
```
Warning  FailedScheduling  50s (x2 over 50s)  default-scheduler  0/1 nodes are available: 1 node(s) didn't match node selector.
```
2021-06-22 11:07:35 -07:00
Brian Cunnie
867f87485b Remove PowerDNS (pdns) Dockerfile, manifests
We don't use PowerDNS anymore, and I don't want old PowerDNS-related
paraphernalia cluttering the repo.
2021-06-22 11:01:43 -07:00
Brian Cunnie
88e5fdedff Dockerfile cunnie/sslip.io-dns-server: bump 2.1.2 → 2.2.0 2021-06-21 09:21:46 -07:00