Cert-manager#
Ниже приведены примеры:
развертывания
cert-manager
и самоподписанного центра сертификации;развертывания ANIC;
развертывания простого веб-приложения;
настройки балансировки нагрузки для этого приложения с помощью ресурса
VirtualServer
.
Развертывание cert-manager и самоподписанного центра сертификации#
Разверните
cert-manager
и все необходимые зависимости:$ kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.8.0/cert-manager.yaml
Разверните
Issuer
(самоподписанный центр сертификации):apiVersion: v1 kind: Namespace metadata: name: sandbox --- apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: selfsigned-issuer spec: selfSigned: {} --- apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: my-selfsigned-ca namespace: sandbox spec: isCA: true commonName: my-selfsigned-ca secretName: root-secret privateKey: algorithm: ECDSA size: 256 issuerRef: name: selfsigned-issuer kind: ClusterIssuer group: cert-manager.io --- apiVersion: cert-manager.io/v1 kind: Issuer metadata: name: my-ca-issuer namespace: sandbox spec: ca: secretName: root-secret
Примените настройки:
$ kubectl apply -f self-signed.yaml
Запуск примера#
Установите ANIC. Включите поддержку
cert-manager
для ресурсовVirtualServer
:--enable-custom-resources --enable-cert-manager
Сохраните публичный IP-адрес ANIC в переменной оболочки:
$ IC_IP=XXX.YYY.ZZZ.III
Сохраните HTTPS-порт ANIC в переменной оболочки:
$ IC_HTTPS_PORT=<номер порта>
Создайте Deployment и Service для
coffee
иtea
:apiVersion: apps/v1 kind: Deployment metadata: name: coffee spec: replicas: 2 selector: matchLabels: app: coffee template: metadata: labels: app: coffee spec: containers: - name: coffee image: angiesoftware/angie-hello:plain-text ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: coffee-svc spec: ports: - port: 80 targetPort: 8080 protocol: TCP name: http selector: app: coffee --- apiVersion: apps/v1 kind: Deployment metadata: name: tea spec: replicas: 3 selector: matchLabels: app: tea template: metadata: labels: app: tea spec: containers: - name: tea image: angiesoftware/angie-hello:plain-text ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: tea-svc labels: spec: ports: - port: 80 targetPort: 8080 protocol: TCP name: http selector: app: tea
Примените настройки:
$ kubectl create -f cafe.yaml
Создайте ресурс
VirtualServer
:apiVersion: k8s.angie.software/v1 kind: VirtualServer metadata: name: cafe spec: host: cafe.example.com tls: secret: cafe-secret cert-manager: cluster-issuer: selfsigned-issuer upstreams: - name: tea service: tea-svc port: 80 - name: coffee service: coffee-svc port: 80 routes: - path: /tea action: pass: tea - path: /coffee action: pass: coffee
Примените настройки:
$ kubectl create -f cafe-virtual-server.yaml
Протестируйте приложение.
Используйте
curl
для проверки сервисовcoffee
иtea
:--insecure
, чтобы отключить проверку сертификата, и--resolve
, чтобы указать заголовокHost
в запросе сcafe.example.com
.Запрос к сервису
coffee
:$ curl --resolve cafe.example.com:$IC_HTTPS_PORT:$IC_IP https://cafe.example.com:$IC_HTTPS_PORT/coffee --insecure
Пример ответа:
Server address: 10.12.0.18:80 Server name: coffee-7586895968-r26zn ...
Запрос к сервису
tea
:$ curl --resolve cafe.example.com:$IC_HTTPS_PORT:$IC_IP https://cafe.example.com:$IC_HTTPS_PORT/tea --insecure
Пример ответа:
Server address: 10.12.0.19:80 Server name: tea-7cd44fcb4d-xfw2x ...