deployment.yml (5362B)
1 apiVersion: v1 2 kind: Namespace 3 metadata: 4 name: iuna 5 --- 6 apiVersion: v1 7 kind: PersistentVolumeClaim 8 metadata: 9 name: ${IUNA_NODE_PVC} 10 namespace: iuna 11 spec: 12 accessModes: 13 - ReadWriteOnce 14 storageClassName: local-path 15 resources: 16 requests: 17 storage: 1Gi 18 --- 19 apiVersion: apps/v1 20 kind: Deployment 21 metadata: 22 name: www 23 namespace: iuna 24 spec: 25 replicas: 1 26 selector: 27 matchLabels: 28 app: iuna-www 29 template: 30 metadata: 31 labels: 32 app: iuna-www 33 spec: 34 containers: 35 - name: iuna-www 36 image: ${IUNA_WWW_IMAGE} 37 imagePullPolicy: IfNotPresent 38 ports: 39 - name: http 40 containerPort: 80 41 --- 42 apiVersion: v1 43 kind: Service 44 metadata: 45 name: iuna-www 46 namespace: iuna 47 spec: 48 selector: 49 app: iuna-www 50 ports: 51 - name: http 52 port: 80 53 targetPort: 80 54 --- 55 apiVersion: networking.k8s.io/v1 56 kind: Ingress 57 metadata: 58 name: iuna-tls-ingress 59 namespace: iuna 60 annotations: 61 cert-manager.io/cluster-issuer: letsencrypt-prod 62 traefik.ingress.kubernetes.io/router.middlewares: default-redirect-https@kubernetescrd 63 spec: 64 ingressClassName: traefik 65 rules: 66 - host: getiuna.org 67 http: 68 paths: 69 - path: / 70 pathType: Prefix 71 backend: 72 service: 73 name: iuna-www 74 port: 75 number: 80 76 - host: wallet.getiuna.org 77 http: 78 paths: 79 - path: / 80 pathType: Prefix 81 backend: 82 service: 83 name: iuna-www 84 port: 85 number: 80 86 tls: 87 - secretName: iuna-tls 88 hosts: 89 - getiuna.org 90 - wallet.getiuna.org 91 --- 92 apiVersion: traefik.containo.us/v1alpha1 93 kind: Middleware 94 metadata: 95 name: iuna-redirect-to-getiuna 96 namespace: iuna 97 spec: 98 redirectRegex: 99 regex: "^https?://iuna\\.jhx\\.app(?:/(.*))?$" 100 replacement: "https://getiuna.org/$1" 101 permanent: true 102 103 --- 104 apiVersion: traefik.containo.us/v1alpha1 105 kind: IngressRoute 106 metadata: 107 name: iuna-redirect 108 namespace: iuna 109 spec: 110 entryPoints: 111 - web 112 - websecure 113 routes: 114 - match: Host(`iuna.jhx.app`) && PathPrefix(`/v1`) 115 kind: Rule 116 priority: 100 117 services: 118 - name: iuna-wallet 119 port: 18662 120 - match: Host(`iuna.jhx.app`) 121 kind: Rule 122 priority: 1 123 middlewares: 124 - name: iuna-redirect-to-getiuna 125 services: 126 - name: iuna-www 127 port: 80 128 tls: 129 secretName: iuna-redirect-tls 130 --- 131 apiVersion: networking.k8s.io/v1 132 kind: Ingress 133 metadata: 134 name: iuna-admin-tls-ingress 135 namespace: iuna 136 annotations: 137 cert-manager.io/cluster-issuer: letsencrypt-prod 138 traefik.ingress.kubernetes.io/router.middlewares: default-redirect-https@kubernetescrd,iuna-iuna-admin-ip-allowlist@kubernetescrd 139 spec: 140 ingressClassName: traefik 141 rules: 142 - host: admin.iuna.jhx.app 143 http: 144 paths: 145 - path: / 146 pathType: Prefix 147 backend: 148 service: 149 name: iuna-management 150 port: 151 number: 18661 152 tls: 153 - secretName: iuna-admin-tls 154 hosts: 155 - admin.iuna.jhx.app 156 --- 157 apiVersion: traefik.containo.us/v1alpha1 158 kind: Middleware 159 metadata: 160 name: iuna-admin-ip-allowlist 161 namespace: iuna 162 spec: 163 ipAllowList: 164 sourceRange: 165 ${IUNA_ADMIN_IP_ALLOWLIST_LOCAL} 166 --- 167 apiVersion: apps/v1 168 kind: Deployment 169 metadata: 170 name: node 171 namespace: iuna 172 spec: 173 replicas: 1 174 minReadySeconds: 3 175 strategy: 176 type: Recreate 177 rollingUpdate: null 178 selector: 179 matchLabels: 180 app: iuna-node 181 template: 182 metadata: 183 labels: 184 app: iuna-node 185 spec: 186 containers: 187 - name: iuna-node 188 image: ${IUNA_NODE_IMAGE} 189 imagePullPolicy: IfNotPresent 190 args: 191 ${IUNA_NODE_GENESIS_ARG} 192 - --data-dir 193 - /data 194 - --http 195 - 0.0.0.0:18661 196 - --p2p 197 - 0.0.0.0:9444 198 - --p2p-announce 199 - 142.132.164.59:9444 200 - --wallet-endpoint 201 - 0.0.0.0:18662 202 ports: 203 - name: management 204 containerPort: 18661 205 - name: p2p 206 containerPort: 9444 207 - name: wallet-api 208 containerPort: 18662 209 readinessProbe: 210 tcpSocket: 211 port: management 212 initialDelaySeconds: 1 213 periodSeconds: 2 214 timeoutSeconds: 1 215 failureThreshold: 30 216 volumeMounts: 217 - name: data 218 mountPath: /data 219 volumes: 220 - name: data 221 persistentVolumeClaim: 222 claimName: ${IUNA_NODE_PVC} 223 --- 224 apiVersion: v1 225 kind: Service 226 metadata: 227 name: iuna-management 228 namespace: iuna 229 spec: 230 selector: 231 app: iuna-node 232 ports: 233 - name: management 234 port: 18661 235 targetPort: 18661 236 --- 237 apiVersion: v1 238 kind: Service 239 metadata: 240 name: iuna-wallet 241 namespace: iuna 242 spec: 243 selector: 244 app: iuna-node 245 ports: 246 - name: wallet-api 247 port: 18662 248 targetPort: 18662 249 --- 250 apiVersion: v1 251 kind: Service 252 metadata: 253 name: iuna 254 namespace: iuna 255 spec: 256 type: LoadBalancer 257 externalTrafficPolicy: Local 258 selector: 259 app: iuna-node 260 ports: 261 - name: p2p 262 port: 9444 263 targetPort: 9444