仿¥ã¯ãACMã®GitOpsã®åŽé¢ã«çŠç¹ãåœãŠã次ã®ã¢ãã«æ§æã䜿çšããŠããããåé¡ããŸãã

ãããã£ãŠãããã«ã¯3ã€ã®OpenShiftã¯ã©ã¹ã¿ãŒããããŸããACMã¯ããã管çã¢ãã«ã䜿çšããŠã¯ã©ã¹ã¿ãŒã管çããŸããããã¯ACMãå®è¡ããŠããã¯ã©ã¹ã¿ãŒã§ããã管ç察象ã¯ACMã管çããŠããã¯ã©ã¹ã¿ãŒã§ããããã¯æ¬¡ã®RedHatãœãããŠã§ã¢ã䜿çšããŸãã
沿ã£ãŠ | ããŒãžã§ã³ |
---|---|
Red HatOpenShiftã³ã³ãããã©ãããã©ãŒã | 4.5.7 |
Red Hat Advanced Cluster Management | 2.0ãã£ãã¯ã¹ããã¯2.0.2 |
管ç察象ã¯ã©ã¹ã¿ãŒã«ã¯ç°ãªãã©ãã«ãããããšã«æ³šæããŠãã ãããã¢ããªã±ãŒã·ã§ã³ãç°ãªãç°å¢ã«é 眮ãããšãã«ãããããç©æ¥µçã«äœ¿çšããŸãã
å³ã«ç€ºãããã«ãEUãªãŒãžã§ã³ã®AWSã¯ã©ãŠãã«ãããŒãžãã¯ã©ã¹ã¿ãŒ1-devãšãããããŒãžãéçºã¯ã©ã¹ã¿ãŒããããã€ãããŠããŸãããŸããç±³åœå°åã«ã¯ãmanaged-cluster2-prodãšåŒã°ãããããŒãžããããã¯ã·ã§ã³ã¯ã©ã¹ã¿ãŒããããŸãããããAWSã«ãããã€ãããŠããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®ã©ã€ããµã€ã¯ã«
ACMã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã©ã€ããµã€ã¯ã«ç®¡çã®ããã®åºç¯ãªæ©èœãæäŸããŸããããã§ã¯ãGitOpsã«ããŽãªã«å±ããæ¬¡ã®ã·ããªãªã§åœ¹ç«ã€ãã®ãèŠãŠãããŸãã
- ã¢ããªã±ãŒã·ã§ã³ãè€æ°ã®ç°å¢ã«ãããã€ããŸãã
- é/ç·ãå±éããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã®ç§»è¡ã
- çœå®³ããã®å埩
ãŸãããã®èšäºã§äœ¿çšããçšèªãšæŠå¿µãå®çŸ©ããŸãããã
ãã£ãã«
ãã£ãã«ã¯ãå±éããããªãœãŒã¹ãæ ŒçŽãããŠããç©ççãªå ŽæãæããŸããããã§ã¯ãGitã¿ã€ãã®ãã€ãã䜿çšããŸãããä»ã®ã¿ã€ãã®ãã€ãïŒãã«ã ãããŒã ã¹ããŒã¹ãªã©ïŒããããŸãã
詳现
PlacementRules
é 眮ã«ãŒã«ãäœæããã³ç®¡çããããšã«ãããKubernetesãªãœãŒã¹ãµãã¹ã¯ãªãã·ã§ã³ãšHelmãªãªãŒã¹ãå±éããå Žæãå®çŸ©ããŸãããããã®ã«ãŒã«ãé©çšããããšã«ãããè€æ°ã®ç°å¢ã«ãããKubernetesãªãœãŒã¹ã®å±éãå€§å¹ ã«ç°¡çŽ åã§ããŸãã
詳现
ãµãã¹ã¯ãªãã·ã§ã³
ãµãã¹ã¯ãªãã·ã§ã³ã¯ã泚éãã©ãã«ãããã³ããŒãžã§ã³ã䜿çšããŠãã£ãã«å ã®KubernetesãªãœãŒã¹ãéžæããããã®äžé£ã®å®çŸ©ã§ãããµãã¹ã¯ãªãã·ã§ã³ãªãœãŒã¹ã¯ããã§ã»ããã¢ããããã管ç察象ã¯ã©ã¹ã¿ãŒã«ããã·ã¥ãããŸãããµãã¹ã¯ãªãã·ã§ã³ã³ã³ãããŒã©ãŒã¯ããœãŒã¹ã®å ŽæïŒãã£ãã«ïŒãç£èŠããŠãæ°ãããªãœãŒã¹ãŸãã¯æŽæ°ããããªãœãŒã¹ãæ¢ããŸãããããçºçãããšãæåã«ããã¯ã©ã¹ã¿ãŒããã§ãã¯ããã«ã察å¿ãããªãœãŒã¹ããœãŒã¹ã®å ŽæïŒãã£ãã«ïŒãã管ç察象ã¯ã©ã¹ã¿ãŒã«çŽæ¥ããŠã³ããŒãã§ããŸãïŒãµãã¹ã¯ãªãã·ã§ã³ã¯æ¢ã«éä¿¡ãããŠããããïŒã
ãµãã¹ã¯ãªãã·ã§ã³ã§ã¯ãHelmãªãªãŒã¹ããã£ã«ã¿ãªã³ã°ããŠããã£ãŒãã®æ£ããããŒãžã§ã³ãéžæã§ããŸãããã®å Žåããµãã¹ã¯ãªãã·ã§ã³ã³ã³ãããŒã©ã¯ãããŒãžã§ã³ãã©ã¡ãŒã¿ã調ã¹ãŠãå±éã«äœ¿çšããå¿ èŠãããHelmãªãªãŒã¹ïŒãã£ãŒãïŒã®ããŒãžã§ã³ãçè§£ããŸãã
ãã®ä»ã®
ã¢ããªã±ãŒã·ã§ã³
Applicationãªããžã§ã¯ãã¯ããµãã¹ã¯ãªãã·ã§ã³ãã°ã«ãŒãã«éçŽããæ¹æ³ãšèããããšãã§ããŸãããã®ããã«ãã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠã®ã³ã³ããŒãã³ããéçŽããŠè¡šç€ºããããã®é©åãªããŒã«ãšã³ã³ãœãŒã«ããããŸãã
詳现
Gitãªããžããª
ç§ãã¡ã®ã¢ããªã±ãŒã·ã§ã³ã¯GitOpsãã³ãã¬ãŒãã«åŸã£ãŠå±éãããããŸããŸãªç°å¢ã§ã¯ãGitãªããžããªã«ä¿åãããããŸããŸãªãããã§ã¹ããå¿ èŠã«ãªããŸãããã®æ§é ãæ¬¡ã®è¡šã«ç€ºããŸãã
ãã©ã³ã | 説æ |
---|---|
æ§æ | ãã¹ãŠã®ç°å¢ã§äœ¿çšãããã¢ããªã±ãŒã·ã§ã³ã®ããŒã¹ãã¡ã€ã«ãæ ŒçŽããŸã |
補å | å®çšŒåç°å¢ã§äœ¿çšãããã¢ããªã±ãŒã·ã§ã³ã®ãªãŒããŒã¬ã€ãã¡ã€ã«ãæ ŒçŽããŸã |
ã¹ããŒãž | ãã¹ãç°å¢ã§äœ¿çšãããã¢ããªã±ãŒã·ã§ã³ã®ãªãŒããŒã¬ã€ãã¡ã€ã«ãæ ŒçŽããŸã |
泚æãRed Hat ACMã¯ãGitãªããžããªã®æ§é ãå¶éããŸãããã®è¡šã«ç€ºãããã«æŽçããã ãã§ãªããä»ã®äŸ¿å©ãªæ¹æ³ã§æŽçããããšãã§ããŸãã
ã¢ããªã±ãŒã·ã§ã³ãè€æ°ã®ç°å¢ã«ãããã€ãã
次ã«ãACMããåèªãå転ããåçŽãªWebãµãŒãã¹ã䜿çšããŠãè€æ°ã®ç°å¢ã«ã¢ããªã±ãŒã·ã§ã³ãå±éããã®ã«ã©ã®ããã«åœ¹ç«ã€ããèŠãŠã¿ãŸãããããã®ãµãŒãã¹ã«ã¯ãã¹ããŒãžïŒããã¯éçºè ãçŸåšãã¹ãããŠããããŒãžã§ã³ïŒãšãããã¯ã·ã§ã³ïŒããã¯é¡§å®¢ã䜿çšããŠããããŒãžã§ã³ïŒã®2ã€ã®ãªãªãŒã¹ããããŸãã
ACMã¯KustomizeããµããŒãããŠãããããã¿ãŒã²ããã®å±éç°å¢ã«åãããŠã¢ããªã±ãŒã·ã§ã³ãéåžžã«ç°¡åã«ã«ã¹ã¿ãã€ãºã§ããŸãã
ãã§ã«è¿°ã¹ãããã«ãäž¡æ¹ã®ç°å¢ã§åãã¢ããªã±ãŒã·ã§ã³ã䜿çšããŸããããªãªãŒã¹ã¯ç°ãªããŸãã
ã¢ããªã±ãŒã·ã§ã³ããããã€ããã«ã¯ãocããŒã«ãšããã£ãã«ããµãã¹ã¯ãªãã·ã§ã³ãããã³PlacementRuleãèšå®ããACMã«å¿ èŠãªæ§æãåããyamlãããã§ã¹ãã®ã»ããã䜿çšããŸããã³ãã³ãã©ã€ã³ããè¡ãããšã¯ãã¹ãŠãWebã³ã³ãœãŒã«ããå®è¡ã§ããŸãã
ocããŒã«ã§ã¯ãç°å¢ããšã«1ã€ãã€ãåèš3ã€ã®ã³ã³ããã¹ããæ§æãããŸãã
ç°å¢ | 説æ |
---|---|
ãã | HUBã¯ã©ã¹ã¿ãŒã®CLIãããã¡ã€ã«ïŒACMããããã€ãããŠããå ŽæïŒ |
éçºè | ãããŒãžãéçºã¯ã©ã¹ã¿ãŒã®CLIãããã¡ã€ã«ïŒmanaged-cluster1-devïŒ |
ãã | ãããŒãžããããã¯ã·ã§ã³ã¯ã©ã¹ã¿ãŒã®CLIãããã¡ã€ã«ïŒmanaged-cluster2-prodïŒ |
CLIãããã¡ã€ã«ã®è©³çްã«ã€ããŠã¯ããã¡ããã芧ãã ããã
次ã«ããã®äŸã§äœ¿çšããããªãœãŒã¹ãèŠãŠã¿ãŸãããã
ãã£ãã«
apiVersion: apps.open-cluster-management.io/v1
kind: Channel
metadata:
name: acm-app-lifecycle-blog
namespace: open-cluster-management
spec:
type: Git
pathname: https://github.com/RHsyseng/acm-app-lifecycle-blog.git
Channelã¯ããµãã¹ã¯ãªãã·ã§ã³ãã¢ããªã±ãŒã·ã§ã³ããããã€ããKubernetesãªãœãŒã¹ãååŸããããã«äœ¿çšããGitãã£ãã«ã«èšå®ããŸããã
ãã®å Žåããã£ãã«ã¯gitãªããžããªgithub.com/RHsyseng/acm-app-lifecycle-blog.gitããKubernetesãªãœãŒã¹ãåä¿¡ããããã«æ§æãããŠããŸãã
ããŒã ã¹ããŒã¹
apiVersion: v1
kind: Namespace
metadata:
name: reverse-words-stage
ãµãã¹ã¯ãªãã·ã§ã³ã䜿çšãããšããã®ãµãã¹ã¯ãªãã·ã§ã³ãå«ãåååãã¿ãŒã²ãããããã€ã¡ã³ãã¯ã©ã¹ã¿ãŒã«æž¡ãããŸãããããã£ãŠãããã§ã¯ããã®ãµãã¹ã¯ãªãã·ã§ã³ãéããŠéçºã¯ã©ã¹ã¿ãŒã«ããã·ã¥ãããreverse-words-stageãšããåååãäœæããŠããŸãã
PlacementRule
apiVersion: apps.open-cluster-management.io/v1
kind: PlacementRule
metadata:
name: development-clusters
namespace: reverse-words-stage
spec:
clusterConditions:
- type: "ManagedClusterConditionAvailable"
status: "True"
clusterSelector:
matchExpressions: []
matchLabels:
environment: "dev"
ãµãã¹ã¯ãªãã·ã§ã³ãæž¡ãããã¯ã©ã¹ã¿ãŒã®ãªã¹ãã¯ãPlacementRuleãè¿ããã®ããååŸãããŸããã€ãŸããç°å¢ããç¹å®ã®ã¯ã©ã¹ã¿ãŒãéžæããŠå¥ã®ãµãã¹ã¯ãªãã·ã§ã³ã«è»¢éããå¿ èŠããããŸããããã¯ãPlacementRulesã解決ããã¿ã¹ã¯ã§ãããã®
äŸã§ã¯ãdevelopment-clustersãšããååã®PlacementRuleã¯ãAvailableãšããŒã¯ãããç°å¢æ¡ä»¶ãæºããã©ãã«ãä»ãããã¹ãŠã®ã¯ã©ã¹ã¿ãŒãè¿ããŸãã ïŒéçºè ã€ãŸãããã®å Žåãåºåã¯managed-cluster1-devãšããååã®ãããŒãžãdev-clusterã«ãªããŸãã
ãµãã¹ã¯ãªãã·ã§ã³
apiVersion: apps.open-cluster-management.io/v1
kind: Subscription
metadata:
name: reversewords-dev-app-subscription
namespace: reverse-words-stage
labels:
app: reversewords-dev-app
annotations:
apps.open-cluster-management.io/git-path: apps/reversewords/
apps.open-cluster-management.io/git-branch: stage
spec:
channel: open-cluster-management/acm-app-lifecycle-blog
placement:
placementRef:
kind: PlacementRule
name: development-clusters
äžèšã®äŸã§ã¯ãSubscriptionã¯ãKubernetesãªãœãŒã¹ã®ãªã¹ãïŒãã£ãã«ããååŸïŒããªã¹ãã®ã¯ã©ã¹ã¿ãŒïŒPlacementRuleããååŸïŒã«ãããã€ãã圹å²ãæãããŸãããã ããããã«å ããŠããããã®KubernetesãªãœãŒã¹ãGitãªããžããªïŒãã£ãã«ïŒã®ã©ãã«ããããæ£ç¢ºã«æå®ããããšãã§ããŸãã
ãµãã¹ã¯ãªãã·ã§ã³ã¯ãäžèšã§å®çŸ©ãããã£ãã«ã䜿çšããã¹ããŒãžãã©ã³ãããKubernetesãªãœãŒã¹ãååŸããapps / reversewords /ãã©ã«ããŒã§ããããæ€çŽ¢ããŸãã
å¿çš
apiVersion: app.k8s.io/v1beta1
kind: Application
metadata:
name: reversewords-dev-app
namespace: reverse-words-stage
spec:
componentKinds:
- group: apps.open-cluster-management.io
kind: Subscription
descriptor: {}
selector:
matchExpressions:
- key: app
operator: In
values:
- reversewords-dev-app
ã¢ããªã±ãŒã·ã§ã³ã¯ãACMã«ãã£ãŠç®¡çãããã¯ã©ã¹ã¿ãŒäžã«ã¢ããªã±ãŒã·ã§ã³ã®ããããžãŒãäœæããã®ã«åœ¹ç«ã¡ãŸãããããè¡ãããã«ãã¢ããªã±ãŒã·ã§ã³ã¯1ã€ä»¥äžã®ãµãã¹ã¯ãªãã·ã§ã³ãéžæããŸããããã«ãããæçµçã«ããŸããŸãªã¯ã©ã¹ã¿ãŒã«ãªãœãŒã¹ãäœæãããããã誰ãäœãã©ãã§äœæãããã远跡ã§ããŸãã
泚æãããã§ã¯ãéçºç°å¢ã«ã¢ããªã±ãŒã·ã§ã³ããããã€ãããšãã«äœ¿çšããããªãœãŒã¹ã®ã¿ãåãäžããŸãããä»ã®ç°å¢ã®ãªãœãŒã¹ã¯GitHubãªããžããªã«ãããããªãèªæã§ããããããŸã§ã«èª¬æãããã®ãšäŒŒãŠããŸãã
ã¢ããªã±ãŒã·ã§ã³ãéçºç°å¢ã«ãããã€ããŸã
1.æåã®ã¹ãããã¯ããã£ãã«å®çŸ©ãäœæããããšã§ãã
oc --context hub create -f https://raw.githubusercontent.com/RHsyseng/acm-app-lifecycle-blog/master/acm-manifests/base/00_channel.yaml
2.次ã«ãã¢ããªã±ãŒã·ã§ã³ã®ãããã§ã¹ããæ ŒçŽããããã®åå空éãäœæããŸãã
oc --context hub create -f https://raw.githubusercontent.com/RHsyseng/acm-app-lifecycle-blog/master/acm-manifests/reversewords-stage/00_namespace.yaml
3.次ã«ã管ç察象ã®éçºã¯ã©ã¹ã¿ãŒãéžæããPlacementRuleãäœæããŸãã
oc --context hub create -f https://raw.githubusercontent.com/RHsyseng/acm-app-lifecycle-blog/master/acm-manifests/reversewords-stage/01_placement_rule.yaml
PlacementRuleã®ã¹ããŒã¿ã¹ã確èªããŠãã ããããã®ã«ãŒã«ã¯ãmanaged-cluster1-devdev-clusterãéžæããããšã«æ³šæããŠãã ããã
oc --context hub -n reverse-words-stage get placementrule development-clusters -o yaml
<OMITTED_OUTPUT>
status:
decisions:
- clusterName: managed-cluster1-dev
clusterNamespace: managed-cluster1-dev
4.ããã§ãPlacementRuleã䜿çšããŠéçºã¯ã©ã¹ã¿ãŒãã¿ãŒã²ããã«ãããµãã¹ã¯ãªãã·ã§ã³ãšã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãã
oc --context hub create -f https://raw.githubusercontent.com/RHsyseng/acm-app-lifecycle-blog/master/acm-manifests/reversewords-stage/02_subscription-dev.yaml
oc --context hub create -f https://raw.githubusercontent.com/RHsyseng/acm-app-lifecycle-blog/master/acm-manifests/reversewords-stage/03_application-dev.yaml
ãµãã¹ã¯ãªãã·ã§ã³ã¹ããŒã¿ã¹ãåç §ããŠãã ãããäŒæãããåèªã«æ³šæããŠãã ãããããã¯ããµãã¹ã¯ãªãã·ã§ã³ãã¿ãŒã²ããã¯ã©ã¹ã¿ãŒã«éä¿¡ãããããšãæå³ããŸãã
oc --context hub -n reverse-words-stage get subscription reversewords-dev-app-subscription -o yaml
<OMITTED_OUTPUT>
status:
message: Active
phase: Propagated
5.æåŸã«ãéçºã¯ã©ã¹ã¿ãŒã調ã¹ãŠãã¢ããªã±ãŒã·ã§ã³ããããã€ãããæ©èœããŠããããšã確èªããŸãã
oc --context dev -n reverse-words-stage get deployments,services,pods
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.extensions/reverse-words 1/1 1 1 73s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/reverse-words LoadBalancer 172.30.217.208 a84668cb23acf4d109a78b119dfddbef-750551.eu-central-1.elb.amazonaws.com 8080:30053/TCP 73s
NAME READY STATUS RESTARTS AGE
pod/reverse-words-68b9b894dd-jfgpf 1/1 Running 0 73s
æ¬çªã¯ã©ã¹ã¿ãŒãžã®ãªã¯ãšã¹ããå®è¡ããããšãããšãã¢ããªã±ãŒã·ã§ã³ãããã§å®è¡ãããŠããªãããšãããããŸãã
oc --context pro -n reverse-words-stage get deployments,services,pods
No resources found in reverse-words-stage namespace.
6.次ã«ãã¢ããªã±ãŒã·ã§ã³ãžã®ãªã¯ãšã¹ããå®è¡ããå¿ èŠãªãªãªãŒã¹ãã€ãŸãã¹ããŒãžã³ã°ããããã€ãããŠããããšã確èªããŸãããã
curl http://$(oc --context dev -n reverse-words-stage get service reverse-words -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'):8080
Reverse Words Release: Stage Release v0.0.3. App version: v0.0.3
ã¢ããªã±ãŒã·ã§ã³ãå®çšŒåç°å¢ã«ãããã€ãã
1.ãœãŒã¹ãšåãGitãªããžããªã䜿çšããŸããããã©ã³ãã®ã¿ã䜿çšãããããæ°ãããã£ãã«ãäœæããå¿ èŠã¯ãããŸããã
2.ã¢ããªã±ãŒã·ã§ã³ã®ãããã§ã¹ããæ ŒçŽããããã®åå空éãäœæããŸãã
oc --context hub create -f https://raw.githubusercontent.com/RHsyseng/acm-app-lifecycle-blog/master/acm-manifests/reversewords-prod/00_namespace.yaml
3.次ã«ãæ¬çªã¯ã©ã¹ã¿ãŒãéžæããPlacementRuleãäœæããŸãã
oc --context hub create -f https://raw.githubusercontent.com/RHsyseng/acm-app-lifecycle-blog/master/acm-manifests/reversewords-prod/01_placement_rule.yaml
PlacementRuleã®ã¹ããŒã¿ã¹ã確èªããŠãã ããããã®ã«ãŒã«ã¯ãmanaged-cluster2-prodæ¬çªã¯ã©ã¹ã¿ãŒãéžæããããšã«æ³šæããŠãã ããã
oc --context hub -n reverse-words-prod get placementrule production-clusters -o yaml
<OMITTED_OUTPUT>
status:
decisions:
- clusterName: managed-cluster2-prod
clusterNamespace: managed-cluster2-prod
4.ããã§ããµãã¹ã¯ãªãã·ã§ã³ãšã¢ããªã±ãŒã·ã§ã³ãäœæããŠãPlacementRuleã䜿çšããŠæ¬çªã¯ã©ã¹ã¿ãŒãã¿ãŒã²ãããšããŠèšå®ã§ããŸãã
oc --context hub create -f https://raw.githubusercontent.com/RHsyseng/acm-app-lifecycle-blog/master/acm-manifests/reversewords-prod/02_subscription-pro.yaml
oc --context hub create -f https://raw.githubusercontent.com/RHsyseng/acm-app-lifecycle-blog/master/acm-manifests/reversewords-prod/03_application-pro.yaml
ãµãã¹ã¯ãªãã·ã§ã³ã¹ããŒã¿ã¹ãåç §ããŠãã ãããäŒæãããåèªã«æ³šæããŠãã ãããããã¯ããµãã¹ã¯ãªãã·ã§ã³ãã¿ãŒã²ããã¯ã©ã¹ã¿ãŒã«éä¿¡ãããããšãæå³ããŸãã
oc --context hub -n reverse-words-prod get subscription reversewords-pro-app-subscription -o yaml
<OMITTED_OUTPUT>
status:
message: Active
phase: Propagated
5.æåŸã«ãæ¬çªã¯ã©ã¹ã¿ãŒã調ã¹ãŠãã¢ããªã±ãŒã·ã§ã³ããããã€ãããæ©èœããŠããããšã確èªããŸãã
oc --context pro -n reverse-words-prod get deployments,services,pods
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.extensions/reverse-words 1/1 1 1 93s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/reverse-words LoadBalancer 172.30.100.0 a6067d9a2cd904003a1b53b65f9e1cb3-450574743.us-west-2.elb.amazonaws.com 8080:30293/TCP 96s
NAME READY STATUS RESTARTS AGE
pod/reverse-words-7dd94446c-vkzr8 1/1 Running 0 94s
6.次ã«ãã¢ããªã±ãŒã·ã§ã³ãžã®ãªã¯ãšã¹ããå®è¡ããå¿ èŠãªãªãªãŒã¹ãã€ãŸãæ¬çªç°å¢ããããã€ãããŠããããšã確èªããŸãããã
curl http://$(oc --context pro -n reverse-words-prod get service reverse-words -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'):8080
Reverse Words Release: Production release v0.0.2. App version: v0.0.2
7.ããã§ãããŸããŸãªå±éç°å¢ã«å¯Ÿå¿ããããŸããŸãªããŒãžã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ãçšæãããŸããã
# Query development environment
curl http://$(oc --context dev -n reverse-words-stage get service reverse-words -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'):8080
# Query production environment
curl http://$(oc --context pro -n reverse-words-prod get service reverse-words -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'):8080
# Dev Query
Reverse Words Release: Stage Release v0.0.3. App version: v0.0.3
# Pro Query
Reverse Words Release: Production release v0.0.2. App version: v0.0.2
æåŸã«ãWebã³ã³ãœãŒã«ã§ã©ã®ããã«è¡šç€ºãããããèŠãŠã¿ãŸãããïŒ
ACMã¢ããªã±ãŒã·ã§ã³ã®äžè¬çãªãã¥ãŒ

ACMéçºã¢ããªã±ãŒã·ã§ã³ãã¥ãŒ

ã€ã¥ã
æ¬¡ã®æçš¿ã§ã¯ãBlue / Greenã®å±éãã¢ããªã±ãŒã·ã§ã³ã®ç§»è¡ãããã³çœå®³åŸ©æ§ã«ACMã䜿çšããæ¹æ³ã玹ä»ããŸãã